diff options
author | Thomas McGuire <thomas.mcguire.qnx@kdab.com> | 2013-04-19 16:44:02 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-19 17:24:23 +0200 |
commit | 7b4c7bda730abc8a3929c13d05b5c02b084139e3 (patch) | |
tree | 505e0dde3d5fab17be67e5ff8f660bc92749d69d /src | |
parent | b315d3e5cd7ca58e0f9e4447f165b5a9c8e96d17 (diff) |
Playbook: Work around failing screen_read_window()
Change-Id: Ie029585b3ac1420fe461523b67aa8b65193e23b0
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Mehdi Fekari <mfekari@rim.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/blackberry/common/windowgrabber.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/plugins/blackberry/common/windowgrabber.cpp b/src/plugins/blackberry/common/windowgrabber.cpp index d02e022aa..db070d8e5 100644 --- a/src/plugins/blackberry/common/windowgrabber.cpp +++ b/src/plugins/blackberry/common/windowgrabber.cpp @@ -87,6 +87,30 @@ void WindowGrabber::start() { int result = 0; +#ifdef Q_OS_BLACKBERRY_TABLET + + // HACK: On the Playbook, screen_read_window() will fail for invisible windows. + // To workaround this, make the window visible again, but set a global + // alpha of less than 255. The global alpha makes the window completely invisible + // (due to a bug?), but screen_read_window() will work again. + + errno = 0; + int val = 200; // anything less than 255 + result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_GLOBAL_ALPHA, &val); + if (result != 0) { + qWarning() << "WindowGrabber: unable to set global alpha:" << strerror(errno); + return; + } + + errno = 0; + val = 1; + result = screen_set_window_property_iv(m_window, SCREEN_PROPERTY_VISIBLE, &val); + if (result != 0) { + qWarning() << "WindowGrabber: unable to make window visible:" << strerror(errno); + return; + } +#endif + result = screen_create_context(&m_screenContext, SCREEN_APPLICATION_CONTEXT); if (result != 0) { qWarning() << "WindowGrabber: cannot create screen context:" << strerror(errno); |