e_policy_desk_area: functionize function to create client of policy desk area 77/325177/1
authorJunseok Kim <juns.kim@samsung.com>
Mon, 12 May 2025 09:04:08 +0000 (18:04 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 4 Jun 2025 06:55:55 +0000 (15:55 +0900)
Change-Id: Ifc22a9878f7e6615d3c0d20b2315ca97c986959d

src/bin/windowmgr/e_policy_desk_area.c

index fd8c79b1771c5e7d40e286dd22da81b572057dff..ad3e4594a548640e5de0aed64867ee528749b1d6 100644 (file)
@@ -2833,6 +2833,90 @@ _e_policy_desk_area_private_client_get(E_Client *ec)
    return wl_container_of(listener, eda_client, client_destroy);
 }
 
+static E_Policy_Desk_Area_Private_Client *
+_e_policy_desk_area_private_client_new(E_Client *ec)
+{
+   E_Policy_Desk_Area_Private_Client *eda_client;
+
+   eda_client = E_NEW(E_Policy_Desk_Area_Private_Client, 1);
+   if (!eda_client)
+     {
+        ERR("POLICY_DESK_AREA:: Failed to alloc private client, ec(%p):%s", ec, e_client_icccm_title_get(ec));
+        return NULL;
+     }
+
+   eda_client->ec = ec;
+
+   // e_client listeners
+   eda_client->client_destroy.notify = _desk_area_cb_client_destroy;
+   e_client_destroy_listener_add(ec, &eda_client->client_destroy);
+   eda_client->client_subsurface_stack_update.notify = _desk_area_cb_client_subsurface_stack_update;
+   e_client_subsurface_stack_update_listener_add(ec, &eda_client->client_subsurface_stack_update);
+   eda_client->client_fullscreen.notify = _desk_area_cb_client_fullscreen;
+   e_client_fullscreen_listener_add(ec, &eda_client->client_fullscreen);
+   eda_client->client_unfullscreen.notify = _desk_area_cb_client_unfullscreen;
+   e_client_unfullscreen_listener_add(ec, &eda_client->client_unfullscreen);
+   eda_client->client_focus_set.notify = _desk_area_cb_client_focus_set;
+   e_client_focus_set_listener_add(ec, &eda_client->client_focus_set);
+   eda_client->client_iconify.notify = _desk_area_cb_client_iconify;
+   e_client_iconify_listener_add(ec, &eda_client->client_iconify);
+   eda_client->client_uniconify.notify = _desk_area_cb_client_uniconify;
+   e_client_uniconify_listener_add(ec, &eda_client->client_uniconify);
+   eda_client->client_stick.notify = _desk_area_cb_client_stick;
+   e_client_stick_listener_add(ec, &eda_client->client_stick);
+   eda_client->client_unstick.notify = _desk_area_cb_client_unstick;
+   e_client_unstick_listener_add(ec, &eda_client->client_unstick);
+   eda_client->client_maximize.notify = _desk_area_cb_client_maximize;
+   e_client_maximize_listener_add(ec, &eda_client->client_maximize);
+   eda_client->client_maximize_done.notify = _desk_area_cb_client_maximize_done;
+   e_client_maximize_done_listener_add(ec, &eda_client->client_maximize_done);
+   eda_client->client_unmaximize.notify = _desk_area_cb_client_unmaximize;
+   e_client_unmaximize_listener_add(ec, &eda_client->client_unmaximize);
+   eda_client->client_unmaximize_done.notify = _desk_area_cb_client_unmaximize_done;
+   e_client_unmaximize_done_listener_add(ec, &eda_client->client_unmaximize_done);
+   eda_client->client_activate_done.notify = _desk_area_cb_client_activate_done;
+   e_client_activate_done_listener_add(ec, &eda_client->client_activate_done);
+   eda_client->client_stay_within_margin.notify = _desk_area_cb_client_stay_within_margin;
+   e_client_stay_within_margin_listener_add(ec, &eda_client->client_stay_within_margin);
+   eda_client->client_mouse_move.notify = _desk_area_cb_client_mouse_move;
+   e_client_mouse_move_listener_add(ec, &eda_client->client_mouse_move);
+   eda_client->client_move_end.notify = _desk_area_cb_client_move_end;
+   e_client_move_end_listener_add(ec, &eda_client->client_move_end);
+   eda_client->client_resize_end.notify = _desk_area_cb_client_resize_end;
+   e_client_resize_end_listener_add(ec, &eda_client->client_resize_end);
+   eda_client->client_layer_set.notify = _desk_area_cb_client_layer_set;
+   e_client_set_layer_listener_add(ec, &eda_client->client_layer_set);
+   eda_client->client_layer_get.notify = _desk_area_cb_client_layer_get;
+   e_client_get_layer_listener_add(ec, &eda_client->client_layer_get);
+
+   // e_comp_object listeners
+   eda_client->comp_object_lower.notify = _desk_area_cb_comp_object_lower;
+   e_comp_object_lower_listener_add(ec->frame, &eda_client->comp_object_lower);
+   eda_client->comp_object_raise.notify = _desk_area_cb_comp_object_raise;
+   e_comp_object_raise_listener_add(ec->frame, &eda_client->comp_object_raise);
+   eda_client->comp_object_set_layer.notify = _desk_area_cb_comp_object_set_layer;
+   e_comp_object_set_layer_listener_add(ec->frame, &eda_client->comp_object_set_layer);
+   eda_client->comp_object_stack_above.notify = _desk_area_cb_comp_object_stack_above;
+   e_comp_object_stack_above_listener_add(ec->frame, &eda_client->comp_object_stack_above);
+   eda_client->comp_object_stack_below.notify = _desk_area_cb_comp_object_stack_below;
+   e_comp_object_stack_below_listener_add(ec->frame, &eda_client->comp_object_stack_below);
+
+   // needs ec->comp_data listeners
+   if (ec->comp_data)
+     {
+        eda_client->redirect.notify = _desk_area_cb_client_redirect;
+        e_client_redirect_listener_add(ec, &eda_client->redirect);
+        eda_client->kill_request.notify = _desk_area_cb_client_kill_request;
+        e_client_kill_request_listener_add(ec, &eda_client->kill_request);
+        eda_client->comp_object_resize.notify = _desk_area_cb_comp_object_resize;
+        e_comp_object_resize_listener_add(ec->frame, &eda_client->comp_object_resize);
+        eda_client->comp_object_color_set.notify = _desk_area_cb_comp_object_color_set;
+        e_comp_object_color_set_listener_add(ec->frame, &eda_client->comp_object_color_set);
+     }
+
+   return eda_client;
+}
+
 static void
 _e_policy_desk_area_private_client_del(E_Policy_Desk_Area_Private_Client *eda_client)
 {
@@ -2911,82 +2995,11 @@ _e_policy_desk_area_cb_client_add(struct wl_listener *listener, void *data)
 
    pda = wl_container_of(listener, pda, client_add);
    eda = pda->desk_area;
-
-
-   eda_client = E_NEW(E_Policy_Desk_Area_Private_Client, 1);
-   EINA_SAFETY_ON_NULL_RETURN(eda_client);
-
    ec = (E_Client *) data;
 
-   eda_client->eda = eda;
-   eda_client->ec = ec;
+   eda_client = _e_policy_desk_area_private_client_new(ec);
 
-   // e_client listeners
-   eda_client->client_destroy.notify = _desk_area_cb_client_destroy;
-   e_client_destroy_listener_add(ec, &eda_client->client_destroy);
-   eda_client->client_subsurface_stack_update.notify = _desk_area_cb_client_subsurface_stack_update;
-   e_client_subsurface_stack_update_listener_add(ec, &eda_client->client_subsurface_stack_update);
-   eda_client->client_fullscreen.notify = _desk_area_cb_client_fullscreen;
-   e_client_fullscreen_listener_add(ec, &eda_client->client_fullscreen);
-   eda_client->client_unfullscreen.notify = _desk_area_cb_client_unfullscreen;
-   e_client_unfullscreen_listener_add(ec, &eda_client->client_unfullscreen);
-   eda_client->client_focus_set.notify = _desk_area_cb_client_focus_set;
-   e_client_focus_set_listener_add(ec, &eda_client->client_focus_set);
-   eda_client->client_iconify.notify = _desk_area_cb_client_iconify;
-   e_client_iconify_listener_add(ec, &eda_client->client_iconify);
-   eda_client->client_uniconify.notify = _desk_area_cb_client_uniconify;
-   e_client_uniconify_listener_add(ec, &eda_client->client_uniconify);
-   eda_client->client_stick.notify = _desk_area_cb_client_stick;
-   e_client_stick_listener_add(ec, &eda_client->client_stick);
-   eda_client->client_unstick.notify = _desk_area_cb_client_unstick;
-   e_client_unstick_listener_add(ec, &eda_client->client_unstick);
-   eda_client->client_maximize.notify = _desk_area_cb_client_maximize;
-   e_client_maximize_listener_add(ec, &eda_client->client_maximize);
-   eda_client->client_maximize_done.notify = _desk_area_cb_client_maximize_done;
-   e_client_maximize_done_listener_add(ec, &eda_client->client_maximize_done);
-   eda_client->client_unmaximize.notify = _desk_area_cb_client_unmaximize;
-   e_client_unmaximize_listener_add(ec, &eda_client->client_unmaximize);
-   eda_client->client_unmaximize_done.notify = _desk_area_cb_client_unmaximize_done;
-   e_client_unmaximize_done_listener_add(ec, &eda_client->client_unmaximize_done);
-   eda_client->client_activate_done.notify = _desk_area_cb_client_activate_done;
-   e_client_activate_done_listener_add(ec, &eda_client->client_activate_done);
-   eda_client->client_stay_within_margin.notify = _desk_area_cb_client_stay_within_margin;
-   e_client_stay_within_margin_listener_add(ec, &eda_client->client_stay_within_margin);
-   eda_client->client_mouse_move.notify = _desk_area_cb_client_mouse_move;
-   e_client_mouse_move_listener_add(ec, &eda_client->client_mouse_move);
-   eda_client->client_move_end.notify = _desk_area_cb_client_move_end;
-   e_client_move_end_listener_add(ec, &eda_client->client_move_end);
-   eda_client->client_resize_end.notify = _desk_area_cb_client_resize_end;
-   e_client_resize_end_listener_add(ec, &eda_client->client_resize_end);
-   eda_client->client_layer_set.notify = _desk_area_cb_client_layer_set;
-   e_client_set_layer_listener_add(ec, &eda_client->client_layer_set);
-   eda_client->client_layer_get.notify = _desk_area_cb_client_layer_get;
-   e_client_get_layer_listener_add(ec, &eda_client->client_layer_get);
-
-   // e_comp_object listeners
-   eda_client->comp_object_lower.notify = _desk_area_cb_comp_object_lower;
-   e_comp_object_lower_listener_add(ec->frame, &eda_client->comp_object_lower);
-   eda_client->comp_object_raise.notify = _desk_area_cb_comp_object_raise;
-   e_comp_object_raise_listener_add(ec->frame, &eda_client->comp_object_raise);
-   eda_client->comp_object_set_layer.notify = _desk_area_cb_comp_object_set_layer;
-   e_comp_object_set_layer_listener_add(ec->frame, &eda_client->comp_object_set_layer);
-   eda_client->comp_object_stack_above.notify = _desk_area_cb_comp_object_stack_above;
-   e_comp_object_stack_above_listener_add(ec->frame, &eda_client->comp_object_stack_above);
-   eda_client->comp_object_stack_below.notify = _desk_area_cb_comp_object_stack_below;
-   e_comp_object_stack_below_listener_add(ec->frame, &eda_client->comp_object_stack_below);
-
-   // needs ec->comp_data listeners
-   if (ec->comp_data)
-     {
-        eda_client->redirect.notify = _desk_area_cb_client_redirect;
-        e_client_redirect_listener_add(ec, &eda_client->redirect);
-        eda_client->kill_request.notify = _desk_area_cb_client_kill_request;
-        e_client_kill_request_listener_add(ec, &eda_client->kill_request);
-        eda_client->comp_object_resize.notify = _desk_area_cb_comp_object_resize;
-        e_comp_object_resize_listener_add(ec->frame, &eda_client->comp_object_resize);
-        eda_client->comp_object_color_set.notify = _desk_area_cb_comp_object_color_set;
-        e_comp_object_color_set_listener_add(ec->frame, &eda_client->comp_object_color_set);
-     }
+   eda_client->eda = eda;
 }
 
 static void