Send the orientation when client binds to the extended output
authorJørgen Lind <jorgen.lind@nokia.com>
Tue, 20 Dec 2011 12:34:18 +0000 (13:34 +0100)
committerLaszlo Agocs <laszlo.p.agocs@nokia.com>
Tue, 20 Dec 2011 13:21:03 +0000 (14:21 +0100)
Change-Id: I27875115d64a1d06de7097b09f928cfd11fe2d2e
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
src/compositor/wayland_wrapper/wlcompositor.cpp
src/compositor/wayland_wrapper/wlcompositor.h
src/compositor/wayland_wrapper/wlextendedoutput.cpp
src/compositor/wayland_wrapper/wlextendedoutput.h

index ae702d5..03bb12f 100644 (file)
@@ -192,11 +192,6 @@ void Compositor::createSurface(struct wl_client *client, int id)
 
     //this is not how we want to solve this.
     if (!prevClientList.contains(client)) {
-        Output *output = m_output_global.outputForClient(client);
-        Q_ASSERT(output);
-        if (output->extendedOutput()) {
-            output->extendedOutput()->sendOutputOrientation(m_orientation);
-        }
         emit clientAdded(client);
     }
 
@@ -382,6 +377,11 @@ void Compositor::setScreenOrientation(Qt::ScreenOrientation orientation)
     }
 }
 
+Qt::ScreenOrientation Compositor::screenOrientation() const
+{
+    return m_orientation;
+}
+
 void Compositor::setOutputGeometry(const QRect &geometry)
 {
     m_output_global.setGeometry(geometry);
index 9cf75ec..4404ff8 100644 (file)
@@ -116,6 +116,7 @@ public:
     WindowManagerServerIntegration *windowManagerIntegration() const { return m_windowManagerIntegration; }
 
     void setScreenOrientation(Qt::ScreenOrientation orientation);
+    Qt::ScreenOrientation screenOrientation() const;
     void setOutputGeometry(const QRect &geometry);
 
     bool isDragging() const;
index 0ce55ed..542cc8a 100644 (file)
@@ -62,21 +62,23 @@ void OutputExtensionGlobal::bind_func(wl_client *client, void *data, uint32_t ve
 
 void OutputExtensionGlobal::get_extended_output(wl_client *client, wl_resource *output_extension_resource, uint32_t id, wl_resource *output_resource)
 {
-    Q_UNUSED(output_extension_resource);
+    OutputExtensionGlobal *output_extension = static_cast<OutputExtensionGlobal *>(output_extension_resource->data);
     Output *output = static_cast<Output *>(output_resource->data);
-    new ExtendedOutput(client,id,output);
+    new ExtendedOutput(client,id,output,output_extension->m_compositor);
 }
 
 const struct wl_output_extension_interface OutputExtensionGlobal::output_extension_interface = {
     OutputExtensionGlobal::get_extended_output
 };
 
-ExtendedOutput::ExtendedOutput(struct wl_client *client, uint32_t id, Output *output)
+ExtendedOutput::ExtendedOutput(struct wl_client *client, uint32_t id, Output *output, Compositor *compositor)
     : m_output(output)
+    , m_compositor(compositor)
 {
     Q_ASSERT(m_output->extendedOutput() == 0);
     m_output->setExtendedOutput(this);
     m_extended_output_resource = wl_client_add_object(client,&wl_extended_output_interface,0,id,this);
+    sendOutputOrientation(m_compositor->screenOrientation());
 }
 
 void ExtendedOutput::sendOutputOrientation(Qt::ScreenOrientation orientation)
index 5b3d5c0..005011a 100644 (file)
@@ -72,13 +72,14 @@ private:
 class ExtendedOutput
 {
 public:
-    ExtendedOutput(struct wl_client *client, uint32_t id, Output *output);
+    ExtendedOutput(struct wl_client *client, uint32_t id, Output *output, Compositor *compositor);
 
     void sendOutputOrientation(Qt::ScreenOrientation orientation);
 
 private:
     struct wl_resource *m_extended_output_resource;
     Output *m_output;
+    Compositor *m_compositor;
 
 };