Added workable QScreen API on top of QPlatformScreen.
authorSamuel Rødal <samuel.rodal@nokia.com>
Thu, 21 Jul 2011 11:50:28 +0000 (13:50 +0200)
committerJørgen Lind <jorgen.lind@nokia.com>
Mon, 25 Jul 2011 11:52:09 +0000 (13:52 +0200)
QPlatformIntegration::screens() no longer has to be implemented,
implementations should call QPlatformIntegration::screenAdded() for each
screen instead. This is for being able to support adding screens at
run-time later on, by connecting it to a signal in QGuiApplication.

The QGuiGLContext API has changed a bit, by not sending in all the
parameters in the constructor but instead having a create() function.
The createPlatformGLContext() factory in QPlatformIntegration takes a
QGuiGLContext * instead of a QSurfaceFormat and a share context, similar
to how the window and backing store factory functions work.

The XCB plugin has experimental support for connecting to multiple X
displays simultaneously, creating one or more QScreen for each.

Change-Id: I248a22a4fd3481280710110272c04a30a8021e8f
Reviewed-on: http://codereview.qt.nokia.com/2103
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
src/plugins/platforms/wayland/qwaylandintegration.cpp
src/plugins/platforms/wayland/qwaylandintegration.h
src/plugins/platforms/wayland/qwaylandnativeinterface.cpp
src/plugins/platforms/wayland/qwaylandscreen.cpp

index 800f1fc..5405a85 100644 (file)
@@ -54,8 +54,6 @@
 #include <QtGui/QPlatformCursor>
 #include <QtGui/QSurfaceFormat>
 
-#include <QtGui/private/qpixmap_raster_p.h>
-
 #ifdef QT_WAYLAND_GL_SUPPORT
 #include "gl_integration/qwaylandglintegration.h"
 #endif
@@ -92,11 +90,6 @@ bool QWaylandIntegration::hasCapability(QPlatformIntegration::Capability cap) co
     }
 }
 
-QPlatformPixmap *QWaylandIntegration::createPlatformPixmap(QPlatformPixmap::PixelType type) const
-{
-    return new QRasterPlatformPixmap(type);
-}
-
 QPlatformWindow *QWaylandIntegration::createPlatformWindow(QWindow *window) const
 {
 #ifdef QT_WAYLAND_GL_SUPPORT
index b9a01da..0dc3b61 100644 (file)
@@ -56,7 +56,6 @@ public:
     QWaylandIntegration();
 
     bool hasCapability(QPlatformIntegration::Capability cap) const;
-    QPlatformPixmap *createPlatformPixmap(QPlatformPixmap::PixelType type) const;
     QPlatformWindow *createPlatformWindow(QWindow *window) const;
     QPlatformGLContext *createPlatformGLContext(const QSurfaceFormat &glFormat, QPlatformGLContext *share) const;
     QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const;
index f6028f6..3158c73 100644 (file)
@@ -44,6 +44,7 @@
 #include "qwaylanddisplay.h"
 #include "qwaylandwindow.h"
 #include <QtGui/private/qguiapplication_p.h>
+#include <QtGui/QScreen>
 
 void *QWaylandNativeInterface::nativeResourceForWindow(const QByteArray &resourceString, QWindow *window)
 {
@@ -64,9 +65,9 @@ QWaylandScreen * QWaylandNativeInterface::qPlatformScreenForWindow(QWindow *wind
     QWaylandScreen *screen;
 
     if (window) {
-        screen = static_cast<QWaylandScreen *>(QPlatformScreen::platformScreenForWindow(window));
+        screen = static_cast<QWaylandScreen *>(window->screen()->handle());
     } else {
-        screen = static_cast<QWaylandScreen *>(QGuiApplicationPrivate::platformIntegration()->screens()[0]);
+        screen = static_cast<QWaylandScreen *>(QGuiApplication::primaryScreen()->handle());
     }
     return screen;
 }
index 3a63e78..7b064ba 100644 (file)
@@ -53,7 +53,6 @@ QWaylandScreen::QWaylandScreen(QWaylandDisplay *waylandDisplay, struct wl_output
     , mFormat(QImage::Format_ARGB32_Premultiplied)
     , mWaylandCursor(new QWaylandCursor(this))
 {
-    moveToThread(waylandDisplay->thread());
 }
 
 QWaylandScreen::~QWaylandScreen()