Em 06-11-2013 21:47, Axel Davy escreveu:
Solve a bug for some fullscreen clients which wouldn't show up.

Signed-off-by: Axel Davy <[email protected]>
---
  src/compositor-drm.c | 6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index 4f015d1..6a2500b 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -711,7 +711,8 @@ vblank_handler(int fd, unsigned int frame, unsigned int 
sec, unsigned int usec,

        output->vblank_pending = 0;

-       drm_output_release_fb(output, s->current);
+       if (s->current != s->next)
+                drm_output_release_fb(output, s->current);
        s->current = s->next;
        s->next = NULL;

@@ -735,7 +736,8 @@ page_flip_handler(int fd, unsigned int frame,
         * we just want to page flip to the current buffer to get an accurate
         * timestamp */
        if (output->page_flip_pending) {
-               drm_output_release_fb(output, output->current);
+               if (output->current != output->next)
+                        drm_output_release_fb(output, output->current);

We shouldn't have current equals to next in the first place. This can happen when the repaint loop starts, but that's what the 'if (output->page_flip_pending)' is for. In any other case, that implies we are rendering to the front buffer.

Ander

                output->current = output->next;
                output->next = NULL;
        }


_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to