Reduce unnecessary pointer frame callbacks
authorChris Michael <cp.michael@samsung.com>
Thu, 12 Sep 2013 13:56:58 +0000 (14:56 +0100)
committerChris Michael <cp.michael@samsung.com>
Thu, 12 Sep 2013 14:02:34 +0000 (15:02 +0100)
NB: We only need to do pointer frame callbacks if the pointer is using
an animated image.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
src/lib/ecore_wayland/ecore_wl_input.c

index 835255287711217e708b01ada3a404cefa37bdeb..20f73819058108f89b57c4bf8370e5c93b0e7178 100644 (file)
@@ -196,6 +196,8 @@ _ecore_wl_input_cursor_update(void *data)
    unsigned int delay;
 
    cursor_image = input->cursor->images[input->cursor_current_index];
+   if (!cursor_image) return ECORE_CALLBACK_RENEW;
+
    if ((buffer = wl_cursor_image_get_buffer(cursor_image)))
      {
         ecore_wl_input_pointer_set(input, input->cursor_surface,
@@ -206,7 +208,7 @@ _ecore_wl_input_cursor_update(void *data)
                           cursor_image->width, cursor_image->height);
         wl_surface_commit(input->cursor_surface);
 
-        if (!input->cursor_frame_cb)
+        if ((input->cursor->image_count > 1) && (!input->cursor_frame_cb))
           _ecore_wl_input_cb_pointer_frame(input, NULL, 0);
      }
 
@@ -515,7 +517,7 @@ _ecore_wl_input_cb_pointer_frame(void *data, struct wl_callback *callback, unsig
         return;
      }
 
-   if (!input->cursor_frame_cb)
+   if ((input->cursor->image_count > 1) && (!input->cursor_frame_cb))
      {
         input->cursor_frame_cb = wl_surface_frame(input->cursor_surface);
         wl_callback_add_listener(input->cursor_frame_cb,