summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>2014-01-20 08:38:27 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-01-21 11:12:07 +0100
commit909dbb92eb8ae607142e4316c01058090faaf1c7 (patch)
tree777e9b11fc057bc8d11096265895023158a8a7fb /src/plugins
parentc2629632cf82be842a29493f87e6bdbd0b84a974 (diff)
Work around FBO readback bug on Samsung Galaxy Tab 3
Symptom of the error is garbled text in Qt Quick 2, and the fix has been confirmed to be enabling the texture resize workaround. Task-number: QTBUG-34984 Change-Id: If6f621b43120c7913cbd33ab326c52ad6e2599bc Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/platforms/android/src/opengl/qandroidopenglcontext.cpp8
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformintegration.cpp4
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformintegration.h4
3 files changed, 9 insertions, 7 deletions
diff --git a/src/plugins/platforms/android/src/opengl/qandroidopenglcontext.cpp b/src/plugins/platforms/android/src/opengl/qandroidopenglcontext.cpp
index 6431914812..d94bb241f7 100644
--- a/src/plugins/platforms/android/src/opengl/qandroidopenglcontext.cpp
+++ b/src/plugins/platforms/android/src/opengl/qandroidopenglcontext.cpp
@@ -82,12 +82,14 @@ void QAndroidOpenGLContext::swapBuffers(QPlatformSurface *surface)
bool QAndroidOpenGLContext::makeCurrent(QPlatformSurface *surface)
{
bool ret = QEglFSContext::makeCurrent(surface);
+ QOpenGLContextPrivate *ctx_d = QOpenGLContextPrivate::get(context());
const char *rendererString = reinterpret_cast<const char *>(glGetString(GL_RENDERER));
- if (rendererString != 0 && qstrncmp(rendererString, "Android Emulator", 16) == 0) {
- QOpenGLContextPrivate *ctx_d = QOpenGLContextPrivate::get(context());
+ if (rendererString != 0 && qstrncmp(rendererString, "Android Emulator", 16) == 0)
ctx_d->workaround_missingPrecisionQualifiers = true;
- }
+
+ if (!ctx_d->workaround_brokenFBOReadBack && QAndroidPlatformIntegration::needsWorkaround())
+ ctx_d->workaround_brokenFBOReadBack = true;
return ret;
}
diff --git a/src/plugins/platforms/android/src/qandroidplatformintegration.cpp b/src/plugins/platforms/android/src/qandroidplatformintegration.cpp
index e09cc40e01..e4a2ad582d 100644
--- a/src/plugins/platforms/android/src/qandroidplatformintegration.cpp
+++ b/src/plugins/platforms/android/src/qandroidplatformintegration.cpp
@@ -123,7 +123,7 @@ QAndroidPlatformIntegration::QAndroidPlatformIntegration(const QStringList &para
m_androidSystemLocale = new QAndroidSystemLocale;
}
-bool QAndroidPlatformIntegration::needsBasicRenderloopWorkaround()
+bool QAndroidPlatformIntegration::needsWorkaround()
{
static bool needsWorkaround =
QtAndroid::deviceName().compare(QStringLiteral("samsung SM-T211"), Qt::CaseInsensitive) == 0
@@ -140,7 +140,7 @@ bool QAndroidPlatformIntegration::hasCapability(Capability cap) const
case NativeWidgets: return false;
case ThreadedOpenGL:
- if (needsBasicRenderloopWorkaround())
+ if (needsWorkaround())
return false;
// fall through
default:
diff --git a/src/plugins/platforms/android/src/qandroidplatformintegration.h b/src/plugins/platforms/android/src/qandroidplatformintegration.h
index 15a8ad33dd..474c1e837e 100644
--- a/src/plugins/platforms/android/src/qandroidplatformintegration.h
+++ b/src/plugins/platforms/android/src/qandroidplatformintegration.h
@@ -145,9 +145,9 @@ public:
QEglFSScreen *createScreen() const;
#endif
-private:
- static bool needsBasicRenderloopWorkaround();
+ static bool needsWorkaround();
+private:
friend class QEglFSAndroidHooks;
QTouchDevice *m_touchDevice;