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:
committed by
The Qt Project
parent
b315d3e5cd
commit
7b4c7bda73
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user