summaryrefslogtreecommitdiffstats
path: root/src/plugins/blackberry/common/windowgrabber.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/blackberry/common/windowgrabber.cpp')
-rw-r--r--src/plugins/blackberry/common/windowgrabber.cpp24
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);