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
parent
054dfae39d
commit
e89a9428d5
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue