diff options
| -rw-r--r-- | core/jni/android_view_Surface.cpp | 6 | ||||
| -rw-r--r-- | opengl/libagl/copybit.cpp | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp index bd3c805..02677f4 100644 --- a/core/jni/android_view_Surface.cpp +++ b/core/jni/android_view_Surface.cpp @@ -242,11 +242,12 @@ static jboolean Surface_isValid(JNIEnv* env, jobject clazz) static inline SkBitmap::Config convertPixelFormat(PixelFormat format) { - /* note: if PIXEL_FORMAT_XRGB_8888 means that all alpha bytes are 0xFF, then + /* note: if PIXEL_FORMAT_RGBX_8888 means that all alpha bytes are 0xFF, then we can map to SkBitmap::kARGB_8888_Config, and optionally call bitmap.setIsOpaque(true) on the resulting SkBitmap (as an accelerator) */ switch (format) { + case PIXEL_FORMAT_RGBX_8888: return SkBitmap::kARGB_8888_Config; case PIXEL_FORMAT_RGBA_8888: return SkBitmap::kARGB_8888_Config; case PIXEL_FORMAT_RGBA_4444: return SkBitmap::kARGB_4444_Config; case PIXEL_FORMAT_RGB_565: return SkBitmap::kRGB_565_Config; @@ -294,6 +295,9 @@ static jobject Surface_lockCanvas(JNIEnv* env, jobject clazz, jobject dirtyRect) SkBitmap bitmap; ssize_t bpr = info.s * bytesPerPixel(info.format); bitmap.setConfig(convertPixelFormat(info.format), info.w, info.h, bpr); + if (info.format == PIXEL_FORMAT_RGBX_8888) { + bitmap.setIsOpaque(true); + } if (info.w > 0 && info.h > 0) { bitmap.setPixels(info.bits); } else { diff --git a/opengl/libagl/copybit.cpp b/opengl/libagl/copybit.cpp index 3c5bcdf..867459d 100644 --- a/opengl/libagl/copybit.cpp +++ b/opengl/libagl/copybit.cpp @@ -75,6 +75,8 @@ private: static bool supportedCopybitsFormat(int format) { switch (format) { case COPYBIT_FORMAT_RGBA_8888: + case COPYBIT_FORMAT_RGBX_8888: + case COPYBIT_FORMAT_RGB_888: case COPYBIT_FORMAT_RGB_565: case COPYBIT_FORMAT_BGRA_8888: case COPYBIT_FORMAT_RGBA_5551: |
