compositor: Extract functions for base initialization 42/324642/2
authorSeunghun Lee <shiin.lee@samsung.com>
Wed, 21 May 2025 03:40:25 +0000 (12:40 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Thu, 22 May 2025 06:22:04 +0000 (06:22 +0000)
This is to improve readability.

Change-Id: I2457c69fae21d15556cd6d8ab06270040014a758

src/bin/server/e_compositor.c

index ba6aa8f1df133bbbc130189a4d660b944920bff9..d5e125e4112eaabddc0f428466dbd0eb5f6a396f 100644 (file)
@@ -975,6 +975,61 @@ _e_surface_state_finish(E_Surface_State *state)
    e_presentation_time_container_finish(&state->presentation_container);
 }
 
+static void
+_e_surface_base_init(E_Comp_Wl_Client_Data *base)
+{
+   wl_signal_init(&base->destroy_signal);
+   wl_signal_init(&base->apply_viewport_signal);
+   wl_signal_init(&base->state_commit_signal);
+
+   e_comp_wl_surface_state_init(&base->pending);
+
+   /* set initial client data properties */
+   base->mapped = EINA_FALSE;
+
+   /* set initial value of scaler */
+   _e_surface_buffer_viewport_state_init(&base->scaler.buffer_viewport);
+
+   e_presentation_time_container_init(&base->presentation_container);
+
+   wl_list_init(&base->pointer_constraints);
+
+   g_mutex_init(&base->surface_mutex);
+}
+
+static void
+_e_surface_base_finish(E_Comp_Wl_Client_Data *base)
+{
+   g_mutex_lock(&base->surface_mutex);
+
+   wl_signal_emit(&base->destroy_signal, &base->surface);
+
+   e_comp_wl_surface_state_finish(&base->pending);
+
+   e_comp_wl_buffer_reference(&base->buffer_ref, NULL);
+
+   if (base->aux_hint.hints)
+     {
+        E_Comp_Wl_Aux_Hint *hint;
+        EINA_LIST_FREE(base->aux_hint.hints, hint)
+          {
+             eina_stringshare_del(hint->hint);
+             eina_stringshare_del(hint->val);
+             E_FREE(hint);
+          }
+     }
+
+   if (e_comp_wl_get()->selection.cbhm == base->surface)
+     e_comp_wl_get()->selection.cbhm = NULL;
+
+   e_presentation_time_container_finish(&base->presentation_container);
+
+   E_FREE_FUNC(base->on_focus_timer, ecore_timer_del);
+
+   g_mutex_unlock(&base->surface_mutex);
+   g_mutex_clear(&base->surface_mutex);
+}
+
 static E_Surface *
 _e_surface_create(struct ds_surface *ds_surface)
 {
@@ -995,28 +1050,13 @@ _e_surface_create(struct ds_surface *ds_surface)
    wl_signal_init(&surface->events.commit);
    wl_signal_init(&surface->events.new_subsurface);
    wl_signal_init(&surface->events.viewport_commit);
-   wl_signal_init(&surface->base.destroy_signal);
-   wl_signal_init(&surface->base.apply_viewport_signal);
-   wl_signal_init(&surface->base.state_commit_signal);
 
    wl_list_init(&surface->frames);
 
    _e_surface_state_init(&surface->pending);
    _e_surface_state_init(&surface->current);
 
-   e_comp_wl_surface_state_init(&surface->base.pending);
-
-   /* set initial client data properties */
-   surface->base.mapped = EINA_FALSE;
-
-   /* set initial value of scaler */
-   _e_surface_buffer_viewport_state_init(&surface->base.scaler.buffer_viewport);
-
-   e_presentation_time_container_init(&surface->base.presentation_container);
-
-   wl_list_init(&surface->base.pointer_constraints);
-
-   g_mutex_init(&surface->base.surface_mutex);
+   _e_surface_base_init(&surface->base);
 
    ELOGF("COMPOSITOR", "Create E_Surface %p", NULL, surface);
 
@@ -1035,30 +1075,11 @@ e_surface_destroy(E_Surface *surface)
 
    wl_signal_emit(&surface->events.destroy, surface);
 
-   g_mutex_lock(&surface->base.surface_mutex);
-
-   wl_signal_emit(&surface->base.destroy_signal, &surface->base.surface);
-
    _e_surface_exported_surface_unset(surface);
 
-   e_comp_wl_surface_state_finish(&surface->base.pending);
-
-   e_comp_wl_buffer_reference(&surface->base.buffer_ref, NULL);
-
    wl_resource_for_each_safe(resource, tmp, &surface->frames)
      wl_resource_destroy(resource);
 
-   if (surface->base.aux_hint.hints)
-     {
-        E_Comp_Wl_Aux_Hint *hint;
-        EINA_LIST_FREE(surface->base.aux_hint.hints, hint)
-          {
-             eina_stringshare_del(hint->hint);
-             eina_stringshare_del(hint->val);
-             E_FREE(hint);
-          }
-     }
-
    comp_wl = e_comp_wl_get();
    if (comp_wl->ptr.ec == surface->ec)
      {
@@ -1069,9 +1090,6 @@ e_surface_destroy(E_Surface *surface)
    if (comp_wl->touch.faked_ec == surface->ec)
      comp_wl->touch.faked_ec = NULL;
 
-   if (comp_wl->selection.cbhm == surface->base.surface)
-     comp_wl->selection.cbhm = NULL;
-
    e_comp_wl_data_secondary_remove(surface->ec);
 
    if (surface->base.viewport_transform)
@@ -1081,16 +1099,9 @@ e_surface_destroy(E_Surface *surface)
         surface->base.viewport_transform = NULL;
      }
 
-   e_presentation_time_container_finish(&surface->base.presentation_container);
-
-   E_FREE_FUNC(surface->base.on_focus_timer, ecore_timer_del);
-
-   g_mutex_unlock(&surface->base.surface_mutex);
-
-   g_mutex_clear(&surface->base.surface_mutex);
-
    surface->ec->comp_data = NULL;
 
+   _e_surface_base_finish(&surface->base);
    _e_surface_state_finish(&surface->pending);
    _e_surface_state_finish(&surface->current);
    wl_list_remove(&surface->link);