From 7b4c7bda730abc8a3929c13d05b5c02b084139e3 Mon Sep 17 00:00:00 2001 From: Thomas McGuire <thomas.mcguire.qnx@kdab.com> Date: Fri, 19 Apr 2013 16:44:02 +0200 Subject: [PATCH] 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> --- .../blackberry/common/windowgrabber.cpp | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) 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); -- GitLab