[mutter/wayland] wayland-surface: Properly allow setting the cursor to a NULL buffer



commit 4780f74a4043346c098940a1fdb2eb855b8fe63b
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Mon Nov 25 16:03:25 2013 -0500

    wayland-surface: Properly allow setting the cursor to a NULL buffer

 src/wayland/meta-wayland-seat.c    |    6 +++++-
 src/wayland/meta-wayland-surface.c |   16 ++++++++--------
 2 files changed, 13 insertions(+), 9 deletions(-)
---
diff --git a/src/wayland/meta-wayland-seat.c b/src/wayland/meta-wayland-seat.c
index 012cd00..9b853e1 100644
--- a/src/wayland/meta-wayland-seat.c
+++ b/src/wayland/meta-wayland-seat.c
@@ -68,7 +68,11 @@ meta_wayland_seat_update_sprite (MetaWaylandSeat *seat)
   if (seat->cursor_tracker == NULL)
     return;
 
-  buffer = seat->sprite->buffer_ref.buffer->resource;
+  if (seat->sprite->buffer_ref.buffer)
+    buffer = seat->sprite->buffer_ref.buffer->resource;
+  else
+    buffer = NULL;
+
   meta_cursor_tracker_set_window_cursor (seat->cursor_tracker,
                                          buffer,
                                          seat->hotspot_x,
diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c
index f5007cf..ebc2154 100644
--- a/src/wayland/meta-wayland-surface.c
+++ b/src/wayland/meta-wayland-surface.c
@@ -243,6 +243,9 @@ ensure_buffer_texture (MetaWaylandBuffer *buffer)
   CoglError *catch_error = NULL;
   CoglTexture *texture;
 
+  if (!buffer)
+    return;
+
   texture = COGL_TEXTURE (cogl_wayland_texture_2d_new_from_buffer (ctx,
                                                                    buffer->resource,
                                                                    &catch_error));
@@ -277,14 +280,11 @@ meta_wayland_surface_commit (struct wl_client *client,
     {
       MetaWaylandBuffer *buffer = surface->pending.buffer;
 
-      if (buffer)
-        {
-          /* Note: we set this before informing any window-actor since the
-           * window actor will expect to find the new buffer within the
-           * surface. */
-          ensure_buffer_texture (buffer);
-          meta_wayland_buffer_reference (&surface->buffer_ref, buffer);
-        }
+      /* Note: we set this before informing any window-actor since the
+       * window actor will expect to find the new buffer within the
+       * surface. */
+      ensure_buffer_texture (buffer);
+      meta_wayland_buffer_reference (&surface->buffer_ref, buffer);
     }
 
   if (surface == compositor->seat->sprite)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]