Add destroyClientForSurface() method
authorPaul Olav Tvete <paul.tvete@nokia.com>
Wed, 23 Mar 2011 08:31:00 +0000 (09:31 +0100)
committerPaul Olav Tvete <paul.tvete@nokia.com>
Wed, 23 Mar 2011 08:32:10 +0000 (09:32 +0100)
src/qt-compositor/compositor_api/waylandcompositor.cpp
src/qt-compositor/compositor_api/waylandcompositor.h
src/qt-compositor/wayland_wrapper/wlcompositor.cpp
src/qt-compositor/wayland_wrapper/wlcompositor.h

index 0a3b5ae..29ec409 100644 (file)
@@ -66,6 +66,11 @@ void WaylandCompositor::setInputFocus(WaylandSurface *surface)
     m_compositor->setInputFocus(surfaceImpl);
 }
 
+void WaylandCompositor::destroyClientForSurface(WaylandSurface *surface)
+{
+    m_compositor->destroyClientForSurface(surface->handle());
+}
+
 void WaylandCompositor::setDirectRenderWinId(uint winId)
 {
     Q_UNUSED(winId);
index 955b3a6..8e2a2ea 100644 (file)
@@ -68,6 +68,7 @@ public:
     void frameFinished();
 
     void setInputFocus(WaylandSurface *surface);
+    void destroyClientForSurface(WaylandSurface *surface);
 
     void setDirectRenderWinId(uint winId);
     uint directRenderWinId() const;
index eca6f2d..ab152e8 100644 (file)
@@ -288,6 +288,14 @@ void Compositor::surfaceDestroyed(Surface *surface)
         setPointerFocus(0);
 }
 
+void Compositor::destroyClientForSurface(Surface *surface)
+{
+    wl_client *client = surface->base()->client;
+
+    if (client)
+        wl_client_destroy(client);
+}
+
 void Compositor::setInputFocus(Surface *surface)
 {
     wl_surface *base = surface ? surface->base() : 0;
index b2f0b33..481ac09 100644 (file)
@@ -78,6 +78,8 @@ public:
     void createSurface(struct wl_client *client, int id);
     void surfaceDestroyed(Surface *surface);
 
+    void destroyClientForSurface(Surface *surface);
+
     uint currentTimeMsecs() const;
 
     QWidget *topLevelWidget() const;