summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGiulio Camuffo <giulio.camuffo@jollamobile.com>2014-09-17 17:45:43 +0300
committerGiulio Camuffo <giulio.camuffo@jollamobile.com>2014-09-18 10:10:09 +0200
commit325915245c0ceaa3e03677032371bc0fb936b040 (patch)
tree7a901f96324bcbefce694405b7b0c51ceb11ceff /src
parent3e1a9ef760e6bde533d41a00be28e1cdc7d8d713 (diff)
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>
Diffstat (limited to 'src')
-rw-r--r--src/compositor/wayland_wrapper/qwloutput.cpp17
-rw-r--r--src/compositor/wayland_wrapper/qwloutput_p.h2
2 files changed, 17 insertions, 2 deletions
diff --git a/src/compositor/wayland_wrapper/qwloutput.cpp b/src/compositor/wayland_wrapper/qwloutput.cpp
index d2d5b13b2..09e2abc87 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 9184f87ce..9d90550e3 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;