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>
This commit is contained in:
Thomas McGuire
2013-04-19 16:44:02 +02:00
committed by The Qt Project
parent b315d3e5cd
commit 7b4c7bda73

View File

@@ -87,6 +87,30 @@ void WindowGrabber::start()
{ {
int result = 0; 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); result = screen_create_context(&m_screenContext, SCREEN_APPLICATION_CONTEXT);
if (result != 0) { if (result != 0) {
qWarning() << "WindowGrabber: cannot create screen context:" << strerror(errno); qWarning() << "WindowGrabber: cannot create screen context:" << strerror(errno);