BlackBerry: Fixed root window size

On BlackBerry the first window shown is treated as root window and
should be displayed full screen. The geometry has to be adjusted
properly to achieve this.

Task-number: QTBUG-34930
Change-Id: I6c011620116cc463e16dd352521b2b901a9f9f69
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
bb10
Bernd Weimer 2013-11-19 09:42:33 +01:00 committed by The Qt Project
parent 054dfae39d
commit e89a9428d5
2 changed files with 13 additions and 10 deletions

View File

@ -58,12 +58,13 @@ QT_BEGIN_NAMESPACE
QQnxEglWindow::QQnxEglWindow(QWindow *window, screen_context_t context, bool needRootWindow) :
QQnxWindow(window, context, needRootWindow),
m_requestedBufferSize(window->geometry().size()),
m_platformOpenGLContext(0),
m_newSurfaceRequested(true),
m_eglSurface(EGL_NO_SURFACE)
{
initWindow();
m_requestedBufferSize = screen()->rootWindow() == this ?
screen()->geometry().size() : window->geometry().size();
}
QQnxEglWindow::~QQnxEglWindow()
@ -145,6 +146,9 @@ EGLSurface QQnxEglWindow::getSurface()
void QQnxEglWindow::setGeometry(const QRect &rect)
{
//If this is the root window, it has to be shown fullscreen
const QRect &newGeometry = screen()->rootWindow() == this ? screen()->geometry() : rect;
//We need to request that the GL context updates
// the EGLsurface on which it is rendering.
{
@ -152,11 +156,11 @@ void QQnxEglWindow::setGeometry(const QRect &rect)
// setting m_requestedBufferSize and therefore extended the scope to include
// that test.
const QMutexLocker locker(&m_mutex);
m_requestedBufferSize = rect.size();
if (m_platformOpenGLContext != 0 && bufferSize() != rect.size())
m_requestedBufferSize = newGeometry.size();
if (m_platformOpenGLContext != 0 && bufferSize() != newGeometry.size())
m_newSurfaceRequested.testAndSetRelease(false, true);
}
QQnxWindow::setGeometry(rect);
QQnxWindow::setGeometry(newGeometry);
}
QSize QQnxEglWindow::requestedBufferSize() const

View File

@ -136,7 +136,7 @@ void QQnxWindow::setGeometry(const QRect &rect)
// Calling flushWindowSystemEvents() here would flush input events which
// could result in re-entering QQnxWindow::setGeometry() again.
QWindowSystemInterface::setSynchronousWindowsSystemEvents(true); //This does not work
QWindowSystemInterface::setSynchronousWindowsSystemEvents(true);
QWindowSystemInterface::handleGeometryChange(window(), newGeometry);
QWindowSystemInterface::handleExposeEvent(window(), newGeometry);
QWindowSystemInterface::setSynchronousWindowsSystemEvents(false);
@ -608,12 +608,11 @@ void QQnxWindow::initWindow()
setWindowState(window()->windowState());
if (window()->parent() && window()->parent()->handle())
setParent(window()->parent()->handle());
setGeometryHelper(window()->geometry());
if (screen()->rootWindow() == this) {
setGeometry(screen()->geometry());
}
}
const QRect &initialGeometry = screen()->rootWindow() == this ?
screen()->geometry() : window()->geometry();
setGeometryHelper(initialGeometry);
}
void QQnxWindow::createWindowGroup()
{