e_comp_wl: fix cursor flickering when mouse_out occurs 61/290661/1
authorduna.oh <duna.oh@samsung.com>
Thu, 30 Mar 2023 06:08:00 +0000 (15:08 +0900)
committerduna.oh <duna.oh@samsung.com>
Thu, 30 Mar 2023 08:25:51 +0000 (17:25 +0900)
Showing and hiding a cursor is request-triggered operation by clients.
Hiding a cursor when mouse_out occurs is unnecessary server-side operation
and causes cursor flickering when mouse moves between apps.

Scenarios:
1. When mouse moves between cursor-supported apps (App 1 & App 2), App 2
sets its cursor and E20 hides an old cursor and shows a new one.

2 When mouse moves from a cursor-supported app to a cursor-unsupported app,
the cursor-unsupported app sets its cursor as null and E20 hides a cursor.

Change-Id: I3e15fd821064aa819f93eaed664c7d700a46b05a

src/bin/e_comp_wl.c

index b671dfa1dbd97b82bcc9c16b1988f9c4481a9f4a..30b02851597f749e9ab5e4ab74c382678e4374ce 100644 (file)
@@ -1145,19 +1145,6 @@ _e_comp_wl_evas_cb_mouse_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *ob
                           ec->client.x, ec->client.y, ec->client.w, ec->client.h);
    if (ec->cur_mouse_action && inside_check) return;
    if (e_object_is_del(E_OBJECT(e_comp))) return;
-
-   /* FIXME? this is a hack to just reset the cursor whenever we mouse out. not sure if accurate */
-   {
-      Evas_Object *o;
-
-      ecore_evas_cursor_get(e_comp->ee, &o, NULL, NULL, NULL);
-      if ((e_comp->pointer->o_ptr != o) && (e_comp->wl_comp_data->ptr.enabled))
-        {
-           if ((!e_config->use_cursor_timer) || (!e_pointer_is_hidden(e_comp->pointer)))
-             e_pointer_object_set(e_comp->pointer, NULL, 0, 0);
-        }
-   }
-
    if (e_comp_wl->ptr.ec == ec)
      e_comp_wl->ptr.ec = NULL;
    if (e_object_is_del(E_OBJECT(ec))) return;