summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/kernel/qwindow_qpa.cpp6
-rw-r--r--src/gui/kernel/qwindow_qpa.h3
-rw-r--r--src/gui/kernel/qwindow_qpa_p.h3
-rw-r--r--src/gui/painting/qwindowsurface.cpp2
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.cpp10
5 files changed, 15 insertions, 9 deletions
diff --git a/src/gui/kernel/qwindow_qpa.cpp b/src/gui/kernel/qwindow_qpa.cpp
index aa23683654..19da97acef 100644
--- a/src/gui/kernel/qwindow_qpa.cpp
+++ b/src/gui/kernel/qwindow_qpa.cpp
@@ -327,6 +327,12 @@ QPlatformWindow *QWindow::handle() const
return d->platformWindow;
}
+QWindowSurface *QWindow::surface() const
+{
+ Q_D(const QWindow);
+ return d->surface;
+}
+
void QWindow::showMinimized()
{
qDebug() << "unimplemented:" << __FILE__ << __LINE__;
diff --git a/src/gui/kernel/qwindow_qpa.h b/src/gui/kernel/qwindow_qpa.h
index b13cf9165b..f2fde2d532 100644
--- a/src/gui/kernel/qwindow_qpa.h
+++ b/src/gui/kernel/qwindow_qpa.h
@@ -66,6 +66,7 @@ class QWheelEvent;
class QPlatformWindow;
class QWindowContext;
+class QWindowSurface;
class Q_GUI_EXPORT QWindow : public QObject
{
@@ -132,6 +133,7 @@ public:
void destroy();
QPlatformWindow *handle() const;
+ QWindowSurface *surface() const;
public Q_SLOTS:
inline void show() { setVisible(true); }
@@ -174,6 +176,7 @@ private:
friend class QGuiApplication;
friend class QGuiApplicationPrivate;
+ friend class QWindowSurface;
};
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qwindow_qpa_p.h b/src/gui/kernel/qwindow_qpa_p.h
index 06458290f1..1acc023e92 100644
--- a/src/gui/kernel/qwindow_qpa_p.h
+++ b/src/gui/kernel/qwindow_qpa_p.h
@@ -62,13 +62,13 @@ public:
, platformWindow(0)
, visible(false)
, glContext(0)
+ , surface(0)
{
isWindow = true;
}
~QWindowPrivate()
{
-
}
Qt::WindowFlags windowFlags;
@@ -80,6 +80,7 @@ public:
QString windowTitle;
QRect geometry;
QWindowContext *glContext;
+ QWindowSurface *surface;
};
diff --git a/src/gui/painting/qwindowsurface.cpp b/src/gui/painting/qwindowsurface.cpp
index 97fb7a9972..eea3e60514 100644
--- a/src/gui/painting/qwindowsurface.cpp
+++ b/src/gui/painting/qwindowsurface.cpp
@@ -116,6 +116,8 @@ public:
QWindowSurface::QWindowSurface(QWindow *window, bool /*setDefaultSurface*/)
: d_ptr(new QWindowSurfacePrivate(window))
{
+ if (window)
+ window->d_func()->surface = this;
#if 0
if (!QApplicationPrivate::runtime_graphics_system) {
if (setDefaultSurface && window)
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
index 4d420e36a0..b0df622b33 100644
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
@@ -528,18 +528,12 @@ QPlatformGLContext *QXcbWindow::glContext() const
void QXcbWindow::handleExposeEvent(const xcb_expose_event_t *event)
{
-#if 0
- QWidget *widget = window()->widget();
- if (!widget)
- return;
-
- QWindowSurface *surface = widget->windowSurface();
+ QWindowSurface *surface = window()->surface();
if (surface) {
QRect rect(event->x, event->y, event->width, event->height);
- surface->flush(widget, rect, QPoint());
+ surface->flush(window(), rect, QPoint());
}
-#endif
}
void QXcbWindow::handleClientMessageEvent(const xcb_client_message_event_t *event)