summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/qnx/qqnxwindow.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-04-11 14:36:55 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-04-11 14:36:55 +0200
commit98d3e40fb7c88b670a93e73dace2d0f05a5f903c (patch)
treeb1292124a86c219fb434db4ec28e8f805ff52287 /src/plugins/platforms/qnx/qqnxwindow.cpp
parenta74e4b85be83e2da47f4a1d8fcf0e78079335b80 (diff)
parentbab494e4d046f5617d19f5fec35eeff94377c51f (diff)
Merge remote-tracking branch 'origin/stable' into dev
Conflicts: mkspecs/qnx-armv7le-qcc/qplatformdefs.h src/printsupport/kernel/qcups.cpp src/widgets/styles/qstyle.h tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp Change-Id: Ia41e13051169a6d4a8a1267548e7d47b859bb267
Diffstat (limited to 'src/plugins/platforms/qnx/qqnxwindow.cpp')
-rw-r--r--src/plugins/platforms/qnx/qqnxwindow.cpp46
1 files changed, 24 insertions, 22 deletions
diff --git a/src/plugins/platforms/qnx/qqnxwindow.cpp b/src/plugins/platforms/qnx/qqnxwindow.cpp
index 42318729b1..2e0febff20 100644
--- a/src/plugins/platforms/qnx/qqnxwindow.cpp
+++ b/src/plugins/platforms/qnx/qqnxwindow.cpp
@@ -353,37 +353,39 @@ void QQnxWindow::setBufferSize(const QSize &size)
{
qWindowDebug() << Q_FUNC_INFO << "window =" << window() << "size =" << size;
- // Set window buffer size
// libscreen fails when creating empty buffers
const QSize nonEmptySize = size.isEmpty() ? QSize(1, 1) : size;
+ int format = pixelFormat();
+
+ if (nonEmptySize == m_bufferSize || format == -1)
+ return;
+
+ Q_SCREEN_CRITICALERROR(
+ screen_set_window_property_iv(m_window, SCREEN_PROPERTY_FORMAT, &format),
+ "Failed to set window format");
+
+ if (m_bufferSize.isValid()) {
+ // destroy buffers first, if resized
+ Q_SCREEN_CRITICALERROR(screen_destroy_window_buffers(m_window),
+ "Failed to destroy window buffers");
+ }
int val[2] = { nonEmptySize.width(), nonEmptySize.height() };
Q_SCREEN_CHECKERROR(screen_set_window_property_iv(m_window, SCREEN_PROPERTY_BUFFER_SIZE, val),
"Failed to set window buffer size");
- // Create window buffers if they do not exist
- if (m_bufferSize.isEmpty()) {
- val[0] = pixelFormat();
- if (val[0] == -1) // The platform GL context was not set yet on the window, so we can't procede
- return;
-
- Q_SCREEN_CRITICALERROR(
- screen_set_window_property_iv(m_window, SCREEN_PROPERTY_FORMAT, val),
- "Failed to set window format");
+ Q_SCREEN_CRITICALERROR(screen_create_window_buffers(m_window, MAX_BUFFER_COUNT),
+ "Failed to create window buffers");
- Q_SCREEN_CRITICALERROR(screen_create_window_buffers(m_window, MAX_BUFFER_COUNT),
- "Failed to create window buffers");
+ // check if there are any buffers available
+ int bufferCount = 0;
+ Q_SCREEN_CRITICALERROR(
+ screen_get_window_property_iv(m_window, SCREEN_PROPERTY_RENDER_BUFFER_COUNT, &bufferCount),
+ "Failed to query render buffer count");
- // check if there are any buffers available
- int bufferCount = 0;
- Q_SCREEN_CRITICALERROR(
- screen_get_window_property_iv(m_window, SCREEN_PROPERTY_RENDER_BUFFER_COUNT, &bufferCount),
- "Failed to query render buffer count");
-
- if (bufferCount != MAX_BUFFER_COUNT) {
- qFatal("QQnxWindow: invalid buffer count. Expected = %d, got = %d. You might experience problems.",
- MAX_BUFFER_COUNT, bufferCount);
- }
+ if (bufferCount != MAX_BUFFER_COUNT) {
+ qFatal("QQnxWindow: invalid buffer count. Expected = %d, got = %d.",
+ MAX_BUFFER_COUNT, bufferCount);
}
// Set the transparency. According to QNX technical support, setting the window