summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJørgen Lind <jorgen.lind@nokia.com>2011-06-22 10:00:28 +0200
committerJørgen Lind <jorgen.lind@nokia.com>2011-06-23 13:59:44 +0200
commit365fa4e41a356fbeb27deb513773c08c0252ea5e (patch)
tree5bd945900faf8bc7f052d097f9d75b34e7dca40e /src
parent933485413b6322cf15f366098365f904c5ae9bfa (diff)
Update the wayland plugin
to sha1 bfea3d6befdb688d5354e6f15a9400ea637febf9
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/wayland/qwaylanddisplay.cpp27
-rw-r--r--src/plugins/platforms/wayland/qwaylanddisplay.h11
-rw-r--r--src/plugins/platforms/wayland/qwaylandwindow.cpp12
-rw-r--r--src/plugins/platforms/wayland/wayland_sha1.txt2
4 files changed, 40 insertions, 12 deletions
diff --git a/src/plugins/platforms/wayland/qwaylanddisplay.cpp b/src/plugins/platforms/wayland/qwaylanddisplay.cpp
index d501659..9e8cfe3 100644
--- a/src/plugins/platforms/wayland/qwaylanddisplay.cpp
+++ b/src/plugins/platforms/wayland/qwaylanddisplay.cpp
@@ -234,17 +234,36 @@ int QWaylandDisplay::sourceUpdate(uint32_t mask, void *data)
}
void QWaylandDisplay::outputHandleGeometry(void *data,
- struct wl_output *output,
+ wl_output *output,
int32_t x, int32_t y,
- int32_t width, int32_t height)
+ int32_t physicalWidth,
+ int32_t physicalHeight,
+ int subpixel,
+ const char *make, const char *model)
{
QWaylandDisplay *waylandDisplay = static_cast<QWaylandDisplay *>(data);
- QRect outputRect = QRect(x, y, width, height);
+ QRect outputRect = QRect(x, y, physicalWidth, physicalHeight);
waylandDisplay->createNewScreen(output,outputRect);
}
+void QWaylandDisplay::mode(void *data,
+ struct wl_output *wl_output,
+ uint32_t flags,
+ int width,
+ int height,
+ int refresh)
+{
+ Q_UNUSED(data);
+ Q_UNUSED(wl_output);
+ Q_UNUSED(flags);
+ Q_UNUSED(width);
+ Q_UNUSED(height);
+ Q_UNUSED(refresh);
+}
+
const struct wl_output_listener QWaylandDisplay::outputListener = {
- QWaylandDisplay::outputHandleGeometry
+ QWaylandDisplay::outputHandleGeometry,
+ QWaylandDisplay::mode
};
const struct wl_compositor_listener QWaylandDisplay::compositorListener = {
diff --git a/src/plugins/platforms/wayland/qwaylanddisplay.h b/src/plugins/platforms/wayland/qwaylanddisplay.h
index 840f768..1481288 100644
--- a/src/plugins/platforms/wayland/qwaylanddisplay.h
+++ b/src/plugins/platforms/wayland/qwaylanddisplay.h
@@ -131,7 +131,16 @@ private:
static void outputHandleGeometry(void *data,
struct wl_output *output,
int32_t x, int32_t y,
- int32_t width, int32_t height);
+ int32_t width, int32_t height,
+ int subpixel,
+ const char *make,
+ const char *model);
+ static void mode(void *data,
+ struct wl_output *wl_output,
+ uint32_t flags,
+ int width,
+ int height,
+ int refresh);
static void handleVisual(void *data,
struct wl_compositor *compositor,
diff --git a/src/plugins/platforms/wayland/qwaylandwindow.cpp b/src/plugins/platforms/wayland/qwaylandwindow.cpp
index 34fcdad..8fc8700 100644
--- a/src/plugins/platforms/wayland/qwaylandwindow.cpp
+++ b/src/plugins/platforms/wayland/qwaylandwindow.cpp
@@ -59,6 +59,7 @@
QWaylandWindow::QWaylandWindow(QWindow *window)
: QPlatformWindow(window)
+ , mSurface(0)
, mDisplay(QWaylandScreen::waylandScreenFromWindow(window)->display())
, mBuffer(0)
, mWaitingForFrameSync(false)
@@ -70,8 +71,6 @@ QWaylandWindow::QWaylandWindow(QWindow *window)
mDisplay->windowManagerIntegration()->mapClientToProcess(qApp->applicationPid());
mDisplay->windowManagerIntegration()->authenticateWithToken();
#endif
-
- mSurface = mDisplay->createSurface(this);
}
QWaylandWindow::~QWaylandWindow()
@@ -102,10 +101,7 @@ void QWaylandWindow::setVisible(bool visible)
newSurfaceCreated();
}
- if (visible) {
- wl_surface_map_toplevel(mSurface);
- QWindowSystemInterface::handleExposeEvent(window(), QRect(QPoint(), geometry().size()));
- } else {
+ if (!visible) {
wl_surface_destroy(mSurface);
mSurface = NULL;
}
@@ -129,6 +125,7 @@ void QWaylandWindow::attach(QWaylandBuffer *buffer)
mBuffer = buffer;
if (mSurface) {
wl_surface_attach(mSurface, buffer->buffer(),0,0);
+ QWindowSystemInterface::handleExposeEvent(window(), QRect(QPoint(), geometry().size()));
}
}
@@ -145,6 +142,8 @@ void QWaylandWindow::damage(const QRegion &region)
wl_buffer_damage(mBuffer->buffer(), rect.x(), rect.y(), rect.width(), rect.height());
wl_surface_damage(mSurface,
rect.x(), rect.y(), rect.width(), rect.height());
+ wl_buffer_damage(mBuffer->buffer(),
+ rect.x(), rect.y(), rect.width(), rect.height());
}
}
@@ -152,6 +151,7 @@ void QWaylandWindow::newSurfaceCreated()
{
if (mBuffer) {
wl_surface_attach(mSurface,mBuffer->buffer(),0,0);
+ QWindowSystemInterface::handleExposeEvent(window(), QRect(QPoint(), geometry().size()));
}
}
diff --git a/src/plugins/platforms/wayland/wayland_sha1.txt b/src/plugins/platforms/wayland/wayland_sha1.txt
index d262437..a696e76 100644
--- a/src/plugins/platforms/wayland/wayland_sha1.txt
+++ b/src/plugins/platforms/wayland/wayland_sha1.txt
@@ -1,3 +1,3 @@
This version of the Qt Wayland plugin is checked against the following sha1
from the Wayland repository:
-eff7fc0d99be2e51eaa351785030c8d374ac71de
+bfea3d6befdb688d5354e6f15a9400ea637febf9