diff options
7 files changed, 17 insertions, 12 deletions
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java index 620ea22dad..aa18dfc2d1 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java @@ -987,7 +987,7 @@ public class QtActivityDelegate m_nativeViews.put(id, view); } - public void createSurface(int id, boolean onTop, int x, int y, int w, int h) { + public void createSurface(int id, boolean onTop, int x, int y, int w, int h, int imageDepth) { if (m_surfaces.size() == 0) { TypedValue attr = new TypedValue(); m_activity.getTheme().resolveAttribute(android.R.attr.windowBackground, attr, true); @@ -1005,7 +1005,7 @@ public class QtActivityDelegate if (m_surfaces.containsKey(id)) m_layout.removeView(m_surfaces.remove(id)); - QtSurface surface = new QtSurface(m_activity, id, onTop); + QtSurface surface = new QtSurface(m_activity, id, onTop, imageDepth); if (w < 0 || h < 0) { surface.setLayoutParams( new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java index 9b716f74e5..02bb1ae485 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java @@ -511,12 +511,12 @@ public class QtNative return certificateArray; } - private static void createSurface(final int id, final boolean onTop, final int x, final int y, final int w, final int h) + private static void createSurface(final int id, final boolean onTop, final int x, final int y, final int w, final int h, final int imageDepth) { runAction(new Runnable() { @Override public void run() { - m_activityDelegate.createSurface(id, onTop, x, y, w, h); + m_activityDelegate.createSurface(id, onTop, x, y, w, h, imageDepth); } }); } diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java index 1454c30638..45a80a3dbb 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java @@ -59,14 +59,18 @@ public class QtSurface extends SurfaceView implements SurfaceHolder.Callback private GestureDetector m_gestureDetector; private Object m_accessibilityDelegate = null; - public QtSurface(Context context, int id, boolean onTop) + public QtSurface(Context context, int id, boolean onTop, int imageDepth) { super(context); setFocusable(false); setFocusableInTouchMode(false); setZOrderMediaOverlay(onTop); getHolder().addCallback(this); - getHolder().setFormat(PixelFormat.RGBA_8888); + if (imageDepth == 16) + getHolder().setFormat(PixelFormat.RGB_565); + else + getHolder().setFormat(PixelFormat.RGBA_8888); + if (android.os.Build.VERSION.SDK_INT < 11) getHolder().setType(SurfaceHolder.SURFACE_TYPE_GPU); diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp index 28a5da4b5d..784cc2e38b 100644 --- a/src/plugins/platforms/android/androidjnimain.cpp +++ b/src/plugins/platforms/android/androidjnimain.cpp @@ -334,7 +334,7 @@ namespace QtAndroid return manufacturer + QStringLiteral(" ") + model; } - int createSurface(AndroidSurfaceClient *client, const QRect &geometry, bool onTop) + int createSurface(AndroidSurfaceClient *client, const QRect &geometry, bool onTop, int imageDepth) { QJNIEnvironmentPrivate env; if (!env) @@ -356,7 +356,8 @@ namespace QtAndroid m_createSurfaceMethodID, surfaceId, jboolean(onTop), - x, y, w, h); + x, y, w, h, + imageDepth); return surfaceId; } @@ -689,7 +690,7 @@ static int registerNatives(JNIEnv *env) return JNI_FALSE; } - GET_AND_CHECK_STATIC_METHOD(m_createSurfaceMethodID, m_applicationClass, "createSurface", "(IZIIII)V"); + GET_AND_CHECK_STATIC_METHOD(m_createSurfaceMethodID, m_applicationClass, "createSurface", "(IZIIIII)V"); GET_AND_CHECK_STATIC_METHOD(m_insertNativeViewMethodID, m_applicationClass, "insertNativeView", "(ILandroid/view/View;IIII)V"); GET_AND_CHECK_STATIC_METHOD(m_setSurfaceGeometryMethodID, m_applicationClass, "setSurfaceGeometry", "(IIIII)V"); GET_AND_CHECK_STATIC_METHOD(m_destroySurfaceMethodID, m_applicationClass, "destroySurface", "(I)V"); diff --git a/src/plugins/platforms/android/androidjnimain.h b/src/plugins/platforms/android/androidjnimain.h index eb604c8da8..c00b23fff3 100644 --- a/src/plugins/platforms/android/androidjnimain.h +++ b/src/plugins/platforms/android/androidjnimain.h @@ -66,7 +66,7 @@ namespace QtAndroid void setQtThread(QThread *thread); - int createSurface(AndroidSurfaceClient * client, const QRect &geometry, bool onTop); + int createSurface(AndroidSurfaceClient * client, const QRect &geometry, bool onTop, int imageDepth); int insertNativeView(jobject view, const QRect &geometry); void setSurfaceGeometry(int surfaceId, const QRect &geometry); void destroySurface(int surfaceId); diff --git a/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp b/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp index 9df6610a99..34db729289 100644 --- a/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp +++ b/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp @@ -57,7 +57,7 @@ QAndroidPlatformOpenGLWindow::QAndroidPlatformOpenGLWindow(QWindow *window, EGLD :QAndroidPlatformWindow(window), m_eglDisplay(display) { lockSurface(); - m_nativeSurfaceId = QtAndroid::createSurface(this, geometry(), bool(window->flags() & Qt::WindowStaysOnTopHint)); + m_nativeSurfaceId = QtAndroid::createSurface(this, geometry(), bool(window->flags() & Qt::WindowStaysOnTopHint), 32); m_surfaceWaitCondition.wait(&m_surfaceMutex); unlockSurface(); } diff --git a/src/plugins/platforms/android/qandroidplatformscreen.cpp b/src/plugins/platforms/android/qandroidplatformscreen.cpp index 3704097414..dbf317696f 100644 --- a/src/plugins/platforms/android/qandroidplatformscreen.cpp +++ b/src/plugins/platforms/android/qandroidplatformscreen.cpp @@ -247,7 +247,7 @@ void QAndroidPlatformScreen::doRedraw() QMutexLocker lock(&m_surfaceMutex); if (m_id == -1) { - m_id = QtAndroid::createSurface(this, m_geometry, true); + m_id = QtAndroid::createSurface(this, m_geometry, true, m_depth); m_surfaceWaitCondition.wait(&m_surfaceMutex); } |