diff options
author | Giulio Camuffo <giulio.camuffo@jollamobile.com> | 2014-09-17 17:45:43 +0300 |
---|---|---|
committer | Giulio Camuffo <giulio.camuffo@jollamobile.com> | 2014-09-18 10:10:09 +0200 |
commit | 325915245c0ceaa3e03677032371bc0fb936b040 (patch) | |
tree | 7a901f96324bcbefce694405b7b0c51ceb11ceff | |
parent | 3e1a9ef760e6bde533d41a00be28e1cdc7d8d713 (diff) | |
download | qtwayland-325915245c0ceaa3e03677032371bc0fb936b040.tar.gz |
Don't send the wrong physical size to clients
A 0x0 size means the compositor doesn't know what the real size is.
Change-Id: I79cac0482839399d4a53e9556bb999592af555a5
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
-rw-r--r-- | src/compositor/wayland_wrapper/qwloutput.cpp | 17 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/qwloutput_p.h | 2 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/compositor/wayland_wrapper/qwloutput.cpp b/src/compositor/wayland_wrapper/qwloutput.cpp index d2d5b13b..09e2abc8 100644 --- a/src/compositor/wayland_wrapper/qwloutput.cpp +++ b/src/compositor/wayland_wrapper/qwloutput.cpp @@ -66,13 +66,26 @@ OutputGlobal::~OutputGlobal() void OutputGlobal::output_bind_resource(Resource *resource) { wl_output_send_geometry(resource->handle, 0, 0, - size().width(), size().height(), 0, "", "", m_transform); + m_physicalSize.width(), m_physicalSize.height(), 0, "", "", m_transform); wl_output_send_mode(resource->handle, WL_OUTPUT_MODE_CURRENT|WL_OUTPUT_MODE_PREFERRED, size().width(), size().height(), refreshRate()); wl_output_send_done(resource->handle); } +void OutputGlobal::setPhysicalSize(const QSize &size) +{ + if (m_physicalSize != size) { + m_physicalSize = size; + + foreach (Resource *res, resourceMap()) { + wl_output_send_geometry(res->handle, 0, 0, + m_physicalSize.width(), m_physicalSize.height(), 0, "", "", m_transform); + wl_output_send_done(res->handle); + } + } +} + void OutputGlobal::setGeometry(const QRect &geometry) { m_geometry = geometry; @@ -107,7 +120,7 @@ void OutputGlobal::sendOutputOrientation(Qt::ScreenOrientation orientation) foreach (Resource *res, resourceMap()) { wl_output_send_geometry(res->handle, 0, 0, - size().width(), size().height(), 0, "", "", m_transform); + m_physicalSize.width(), m_physicalSize.height(), 0, "", "", m_transform); wl_output_send_done(res->handle); } } diff --git a/src/compositor/wayland_wrapper/qwloutput_p.h b/src/compositor/wayland_wrapper/qwloutput_p.h index 9184f87c..9d90550e 100644 --- a/src/compositor/wayland_wrapper/qwloutput_p.h +++ b/src/compositor/wayland_wrapper/qwloutput_p.h @@ -71,6 +71,7 @@ public: int y() const { return m_geometry.y(); } QSize size() const { return m_geometry.size(); } + void setPhysicalSize(const QSize &size); void setRefreshRate(int rate); int refreshRate() const { return m_refreshRate; } void sendOutputOrientation(Qt::ScreenOrientation orientation); @@ -82,6 +83,7 @@ public: private: QRect m_geometry; + QSize m_physicalSize; int m_refreshRate; int m_displayId; int m_numQueued; |