QNX: Cleanup some issues in QPA

* Avoided crash, if root window is reparented
* Corrected video window name
* Made parent window member private again

Change-Id: Icef9fad5495413e0de87c4366f25dad6c4fd5775
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
This commit is contained in:
Bernd Weimer 2014-01-28 11:01:38 +01:00 committed by The Qt Project
parent 6ab6ab73fe
commit b709d07c34
4 changed files with 9 additions and 5 deletions

View File

@ -166,7 +166,7 @@ void QQnxRasterWindow::adjustBufferSize()
{
// When having a raster window we don't need any buffers, since
// Qt will draw to the parent TLW backing store.
const QSize windowSize = m_parentWindow ? QSize(1,1) : window()->size();
const QSize windowSize = window()->parent() ? QSize(1,1) : window()->size();
if (windowSize != bufferSize())
setBufferSize(windowSize);
}

View File

@ -670,7 +670,7 @@ void QQnxScreen::newWindowCreated(void *window)
// Otherwise, assume that if a foreign window already has a Z-Order both negative and
// less than the default Z-Order installed by mmrender on windows it creates,
// the windows should be treated as an underlay. Otherwise, we treat it as an overlay.
if (!windowName.isEmpty() && windowName.startsWith("BbVideoWindowControl")) {
if (!windowName.isEmpty() && windowName.startsWith("MmRendererVideoWindowControl")) {
addMultimediaWindow(windowName, windowHandle);
} else if (!findWindow(windowHandle)) {
if (zorder <= MAX_UNDERLAY_ZORDER)

View File

@ -75,9 +75,9 @@ QT_BEGIN_NAMESPACE
QQnxWindow::QQnxWindow(QWindow *window, screen_context_t context, bool needRootWindow)
: QPlatformWindow(window),
m_screenContext(context),
m_parentWindow(0),
m_window(0),
m_screen(0),
m_parentWindow(0),
m_visible(false),
m_exposed(true),
m_windowState(Qt::WindowNoState),
@ -380,6 +380,11 @@ void QQnxWindow::setParent(const QPlatformWindow *window)
if (newParent == m_parentWindow)
return;
if (screen()->rootWindow() == this) {
qWarning() << "Application window cannot be reparented";
return;
}
removeFromParent();
m_parentWindow = newParent;

View File

@ -122,8 +122,6 @@ protected:
screen_context_t m_screenContext;
QScopedPointer<QQnxAbstractCover> m_cover;
QQnxWindow *m_parentWindow;
private:
void createWindowGroup();
void setGeometryHelper(const QRect &rect);
@ -137,6 +135,7 @@ private:
QSize m_bufferSize;
QQnxScreen *m_screen;
QQnxWindow *m_parentWindow;
QList<QQnxWindow*> m_childWindows;
bool m_visible;
bool m_exposed;