Make sure we always release buffers
authorPaul Olav Tvete <paul.tvete@nokia.com>
Fri, 9 Sep 2011 07:46:28 +0000 (09:46 +0200)
committerPaul Olav Tvete <paul.tvete@nokia.com>
Fri, 9 Sep 2011 07:46:28 +0000 (09:46 +0200)
If for some reason the compositor is not able to handle a buffer
before the next one arrives, the buffer would be locked forever.
This change detects that case, and adds an "emergency release", and
displays a warning.

src/qt-compositor/wayland_wrapper/wlsurface.cpp

index 258532d..6621882 100644 (file)
@@ -99,6 +99,10 @@ public:
 
     void attach(struct wl_buffer *buffer) {
         bool emitMap = !surfaceBuffer;
+        if (surfaceBuffer && ! textureCreatedForBuffer) {
+            qWarning() << "### WaylandSurface::attach() releasing undisplayed buffer ###";
+             wl_client_post_event(client,&surfaceBuffer->resource.object,WL_BUFFER_RELEASE);
+        }
         surfaceBuffer = buffer;
         surfaceType = WaylandSurface::Invalid;
         textureCreatedForBuffer = false;