Make full use of QT_ANDROID_RASTER_IMAGE_DEPTH env variable.
If raster only apps set QT_ANDROID_RASTER_IMAGE_DEPTH to 16 (RGB16), we should create also RGB16 native surface. Change-Id: I82692ff34b0e604e627d1d86a437272e3700daf8 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
This commit is contained in:
parent
0febd75d52
commit
26a5727f75
@ -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));
|
||||
|
@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user