e_pointer: remove hwc of the E_Pointer 34/294034/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Wed, 7 Jun 2023 11:34:03 +0000 (20:34 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Mon, 12 Jun 2023 02:36:22 +0000 (11:36 +0900)
if hwc of the E_Pointer is set, the E_Pointer does not move the
evas object for preventing that evas compositing is triggered
even if it is on hwc.

but after below patch, it does not trigger evas compoisiting
because hwc makes transparent the evas object.
hwc of the E_Pointer is not needed.

"e_comp_object: make the frame object transparent when it is unredirected"
12b00f04a6124c4f9c013ec407871b1788453584

Change-Id: Ife3432f34ab51eaf70c673c89ef476046a9fac15

src/bin/e_hwc_window.c
src/bin/e_plane_renderer.c
src/bin/e_pointer.c
src/bin/e_pointer.h

index 54d02a1..319a1d5 100644 (file)
@@ -2490,7 +2490,6 @@ EINTERN Eina_Bool
 e_hwc_window_rendered_window_update(E_Hwc_Window *hwc_window)
 {
    E_Client *ec;
-   E_Pointer *pointer = NULL;
    E_Hwc_Window_State state;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(hwc_window, EINA_FALSE);
@@ -2500,9 +2499,6 @@ e_hwc_window_rendered_window_update(E_Hwc_Window *hwc_window)
    ec = hwc_window->ec;
    if (!ec) return EINA_TRUE;
 
-   if (hwc_window->is_cursor)
-     pointer = e_pointer_get(hwc_window->ec);
-
    state = e_hwc_window_state_get(hwc_window);
 
    switch(state)
@@ -2510,14 +2506,10 @@ e_hwc_window_rendered_window_update(E_Hwc_Window *hwc_window)
        case E_HWC_WINDOW_STATE_DEVICE:
        case E_HWC_WINDOW_STATE_CURSOR:
          _e_hwc_window_rendered_window_set(hwc_window, EINA_FALSE);
-         if (pointer)
-           e_pointer_hwc_set(pointer, EINA_TRUE);
          break;
        case E_HWC_WINDOW_STATE_CLIENT:
        case E_HWC_WINDOW_STATE_NONE:
          _e_hwc_window_rendered_window_set(hwc_window, EINA_TRUE);
-         if (pointer)
-           e_pointer_hwc_set(pointer, EINA_FALSE);
          break;
        case E_HWC_WINDOW_STATE_VIDEO:
        default:
index 690593f..8a0f030 100644 (file)
@@ -1385,24 +1385,21 @@ e_plane_renderer_cursor_ec_set(E_Plane_Renderer *renderer, E_Client *ec)
    EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE);
 
    E_Plane_Renderer_Client *renderer_client = NULL;
-   E_Pointer *pointer = NULL;
 
    if (renderer->ec && renderer->ec != ec)
      {
-        pointer = e_pointer_get(renderer->ec);
-        if (pointer)
-          e_pointer_hwc_set(pointer, EINA_FALSE);
-
         renderer_client = e_plane_renderer_client_get(renderer->ec);
         if (renderer_client)
           renderer_client->renderer = NULL;
 
-        pointer = NULL;
         renderer_client = NULL;
      }
 
-   pointer = e_pointer_get(ec);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(pointer, EINA_FALSE);
+   if (!e_pointer_get(ec))
+     {
+        ERR("fail to get e_pointer ec:%p", ec);
+        return EINA_FALSE;
+     }
 
    renderer_client = e_plane_renderer_client_get(ec);
    EINA_SAFETY_ON_NULL_RETURN_VAL(renderer_client, EINA_FALSE);
@@ -1410,8 +1407,6 @@ e_plane_renderer_cursor_ec_set(E_Plane_Renderer *renderer, E_Client *ec)
    renderer->ec = ec;
    renderer_client->renderer = renderer;
 
-   e_pointer_hwc_set(pointer, EINA_TRUE);
-
    return EINA_TRUE;
 }
 
@@ -1565,7 +1560,6 @@ e_plane_renderer_del(E_Plane_Renderer *renderer)
    E_Plane *plane = NULL;
    E_Plane_Role role;
    E_Client *ec = NULL;
-   E_Pointer *pointer = NULL;
    E_Plane_Renderer_Client *renderer_client = NULL;
 
    EINA_SAFETY_ON_NULL_RETURN(renderer);
@@ -1607,14 +1601,6 @@ e_plane_renderer_del(E_Plane_Renderer *renderer)
    role = e_plane_role_get(plane);
    if (role == E_PLANE_ROLE_CURSOR)
      {
-        if (ec)
-          {
-             pointer = e_pointer_get(ec);
-
-             if (pointer)
-               e_pointer_hwc_set(pointer, EINA_FALSE);
-          }
-
         _e_plane_renderer_recover_ec(renderer);
         tbm_surface_destroy(renderer->cursor_tsurface);
      }
index 156eaf0..04146e4 100644 (file)
@@ -98,14 +98,11 @@ _e_pointer_position_update(E_Pointer *ptr)
         break;
      }
 
-   if (ptr->hwc)
-      e_comp_object_hwc_update_set(ptr->o_ptr, EINA_TRUE);
-   else
-      evas_object_move(ptr->o_ptr, nx, ny);
+   evas_object_move(ptr->o_ptr, nx, ny);
 }
 
 static void
-_e_pointer_object_map_update(E_Pointer *ptr)
+_e_pointer_map_apply(E_Pointer *ptr)
 {
    E_Map *map;
    int x, y, w, h;
@@ -164,18 +161,6 @@ _e_pointer_object_map_update(E_Pointer *ptr)
    e_map_free(map);
 }
 
-// TODO: transform the cursor position with hot spot...!!!!!!
-static void
-_e_pointer_map_apply(E_Pointer *ptr)
-{
-   EINA_SAFETY_ON_NULL_RETURN(ptr);
-
-   if (ptr->hwc)
-     e_comp_object_hwc_update_set(ptr->o_ptr, EINA_TRUE);
-   else
-     _e_pointer_object_map_update(ptr);
-}
-
 static void
 _e_pointer_cb_object_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
 {
@@ -183,7 +168,6 @@ _e_pointer_cb_object_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void
 
    ptr->o_ptr = NULL;
    ptr->device = E_POINTER_NONE;
-   ptr->hwc = EINA_FALSE;
    ptr->hot.x = 0;
    ptr->hot.y = 0;
 }
@@ -317,8 +301,6 @@ _e_pointer_object_hide(E_Pointer *ptr, Evas_Object *obj)
         ec->override = 1; /* ignore the previous cursor_ec */
      }
 
-   ptr->hwc = EINA_FALSE;
-
    /* hide cursor object */
    if (evas_object_visible_get(obj))
      {
@@ -347,9 +329,6 @@ _e_pointer_object_show(E_Pointer *ptr, Evas_Object *obj)
         evas_object_geometry_set(ec->frame, ec->x, ec->y, ec->w, ec->h);
         ec->comp_data->mapped = EINA_TRUE;
         ec->override = 0; /* do not ignore the cursor_ec to set the image object */
-
-        if (e_comp_is_on_overlay(ec))
-          ptr->hwc = EINA_TRUE;
      }
 
    /* show cursor object */
@@ -499,29 +478,6 @@ e_pointer_position_get(E_Pointer *ptr, int *x, int *y)
    *y = ptr->y;
 }
 
-EINTERN Eina_Bool
-e_pointer_hwc_set(E_Pointer *ptr, Eina_Bool set)
-{
-   EINA_SAFETY_ON_FALSE_RETURN_VAL(ptr, EINA_FALSE);
-   EINA_SAFETY_ON_FALSE_RETURN_VAL(ptr->o_ptr, EINA_FALSE);
-
-   if (ptr->hwc == set) return EINA_TRUE;
-
-   ptr->hwc = set;
-
-   if (set)
-    {
-       e_comp_object_hwc_update_set(ptr->o_ptr, EINA_TRUE);
-    }
-   else
-    {
-       _e_pointer_map_apply(ptr);
-       _e_pointer_position_update(ptr);
-    }
-
-   return EINA_TRUE;
-}
-
 EINTERN E_Pointer *
 e_pointer_get(E_Client *ec)
 {
index 592f13c..7b311ee 100644 (file)
@@ -63,7 +63,6 @@ struct _E_Pointer
 
    Eina_Bool e_cursor : 1;
    Eina_Bool canvas : 1;
-   Eina_Bool hwc;
 };
 
 struct _E_Pointer_Hook
@@ -79,7 +78,6 @@ EINTERN int        e_pointer_init(void);
 EINTERN int        e_pointer_shutdown(void);
 EINTERN E_Pointer *e_pointer_canvas_new(Ecore_Evas *ee, Eina_Bool filled);
 EINTERN void       e_pointer_object_set(E_Pointer *ptr, Evas_Object *obj, int x, int y);
-EINTERN Eina_Bool  e_pointer_hwc_set(E_Pointer *ptr, Eina_Bool set);
 
 EINTERN void       e_pointer_touch_move(E_Pointer *ptr, int x, int y);
 E_API void       e_pointer_mouse_move(E_Pointer *ptr, int x, int y);