From 1239e62bc9a88854e2a844716ef166e2acfef622 Mon Sep 17 00:00:00 2001
From: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
Date: Fri, 6 Mar 2015 23:17:26 +0100
Subject: [PATCH] Send done and scale events only when clients support
 wl_output >= 2

Those events were added with wl_output version 2 and we can't send
them to clients supporting wl_output version 1.

Change-Id: I4a673b8cc0476675532d31b4391a537d8473987b
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
---
 src/compositor/wayland_wrapper/qwloutput.cpp | 22 +++++++++++++-------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/compositor/wayland_wrapper/qwloutput.cpp b/src/compositor/wayland_wrapper/qwloutput.cpp
index 9cecff2a9..b01ffa59b 100644
--- a/src/compositor/wayland_wrapper/qwloutput.cpp
+++ b/src/compositor/wayland_wrapper/qwloutput.cpp
@@ -127,9 +127,10 @@ void Output::output_bind_resource(Resource *resource)
               m_mode.size.width(), m_mode.size.height(),
               m_mode.refreshRate);
 
-    send_scale(resource->handle, m_scaleFactor);
-
-    send_done(resource->handle);
+    if (resource->version() >= 2) {
+        send_scale(resource->handle, m_scaleFactor);
+        send_done(resource->handle);
+    }
 }
 
 void Output::setManufacturer(const QString &manufacturer)
@@ -163,7 +164,8 @@ void Output::setMode(const QWaylandOutput::Mode &mode)
         send_mode(resource->handle, mode_current,
                   m_mode.size.width(), m_mode.size.height(),
                   m_mode.refreshRate * 1000);
-        send_done(resource->handle);
+        if (resource->version() >= 2)
+            send_done(resource->handle);
     }
 }
 
@@ -189,7 +191,8 @@ void Output::setGeometry(const QRect &geometry)
         send_mode(resource->handle, mode_current,
                   m_mode.size.width(), m_mode.size.height(),
                   m_mode.refreshRate * 1000);
-        send_done(resource->handle);
+        if (resource->version() >= 2)
+            send_done(resource->handle);
     }
 }
 
@@ -236,8 +239,10 @@ void Output::setScaleFactor(int scale)
     m_scaleFactor = scale;
 
     Q_FOREACH (Resource *resource, resourceMap().values()) {
-        send_scale(resource->handle, m_scaleFactor);
-        send_done(resource->handle);
+        if (resource->version() >= 2) {
+            send_scale(resource->handle, m_scaleFactor);
+            send_done(resource->handle);
+        }
     }
 }
 
@@ -254,7 +259,8 @@ void Output::sendGeometryInfo()
                       m_physicalSize.width(), m_physicalSize.height(),
                       toWlSubpixel(m_subpixel), m_manufacturer, m_model,
                       toWlTransform(m_transform));
-        send_done(resource->handle);
+        if (resource->version() >= 2)
+            send_done(resource->handle);
     }
 }
 
-- 
GitLab