e_wtz_shell: Add signal callback for ds_screen_assign_surface 24/320924/1
authorJunseok Kim <juns.kim@samsung.com>
Thu, 23 Jan 2025 09:22:36 +0000 (18:22 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Tue, 11 Mar 2025 06:41:23 +0000 (15:41 +0900)
Add the signal callback for ds_screen_assign_surface.
TODO: need implements

Change-Id: Ifdcd86d11a7d2579a5779017ca0b85dfd39d2431

src/bin/server/e_tizen_screen_manager.c
src/bin/server/e_wtz_shell.c
src/bin/server/e_wtz_shell_intern.h

index 2569737abc3af2c15fa7659232c908f1a456385a..e1a9bb3b4fbc19c18e34bf9ee50b69ab3c629657 100644 (file)
@@ -1,4 +1,5 @@
 #include "e_tizen_screen_manager_intern.h"
+#include "e_wtz_shell_intern.h"
 
 #include <libds-tizen/screen.h>
 
@@ -22,6 +23,7 @@ struct _E_Tizen_Screen {
 
    struct wl_listener ds_screen_destroy;
    struct wl_listener ds_screen_get_splitscreen;
+   struct wl_listener ds_screen_assign_surface;
 };
 
 struct _E_Tizen_Splitscreen {
@@ -161,6 +163,28 @@ _e_tizen_screen_cb_ds_screen_get_splitscreen(struct wl_listener *listener, void
   wl_signal_emit(&tizen_screen->events.new_splitscreen, tizen_splitscreen);
 }
 
+static void
+_e_tizen_screen_cb_ds_screen_assign_surface(struct wl_listener *listener, void *data)
+{
+  E_Tizen_Screen *tizen_screen;
+  E_Wtz_Surface *shell_surface;
+  E_Client *ec;
+
+  tizen_screen = wl_container_of(listener, tizen_screen, ds_screen_assign_surface);
+
+  EINA_SAFETY_ON_NULL_RETURN(tizen_screen);
+
+  shell_surface = (E_Wtz_Surface *) wl_resource_get_user_data(data);
+  if (!shell_surface)
+    {
+       ELOGF("TIZEN_SCREEN", "Could not get shell_surface from wl_resource(%p)", NULL, data);
+    }
+  ec = e_wtz_surface_client_get(shell_surface);
+
+  ELOGF("TIZEN_SCREEN", "client(%p):%s assign into screen(%p): zone(%p):%s", ec, ec, e_client_icccm_title_get(ec), tizen_screen, tizen_screen->zone, tizen_screen->zone->name);
+  // TODO: impl
+}
+
 EINTERN E_Tizen_Screen *
 e_tizen_screen_create(E_Zone *zone)
 {
@@ -184,6 +208,8 @@ e_tizen_screen_create(E_Zone *zone)
    ds_tizen_screen_add_destroy_listener(tizen_screen->tizen_screen, &tizen_screen->ds_screen_destroy);
    tizen_screen->ds_screen_get_splitscreen.notify = _e_tizen_screen_cb_ds_screen_get_splitscreen;
    ds_tizen_screen_add_get_splitscreen_listener(tizen_screen->tizen_screen, &tizen_screen->ds_screen_get_splitscreen);
+   tizen_screen->ds_screen_assign_surface.notify = _e_tizen_screen_cb_ds_screen_assign_surface;
+   ds_tizen_screen_add_assign_surface_listener(tizen_screen->tizen_screen, &tizen_screen->ds_screen_assign_surface);
 
    return tizen_screen;
 }
@@ -192,6 +218,7 @@ EINTERN void
 e_tizen_screen_destroy(E_Tizen_Screen *tizen_screen)
 {
   wl_list_remove(&tizen_screen->ds_screen_get_splitscreen.link);
+  wl_list_remove(&tizen_screen->ds_screen_assign_surface.link);
   wl_list_remove(&tizen_screen->ds_screen_destroy.link);
 
   E_FREE(tizen_screen);
index 11a1641e8e9271095e71d85d3b79fac6bafa3351..0be02b5d09fa05dc4cf5c9f5b18993c81316cfc5 100644 (file)
@@ -18,9 +18,6 @@
 
 #define E_WTZ_SURFACE_TYPE (int)0xE0b91100
 
-typedef struct _E_Wtz_Shell               E_Wtz_Shell;
-typedef struct _E_Wtz_Surface             E_Wtz_Surface;
-
 struct _E_Wtz_Shell
 {
    struct wl_client     *wclient;
@@ -141,6 +138,13 @@ _e_wtz_surface_create(E_Wtz_Shell *shell,
 }
 /* End of Wtz_surface */
 
+EINTERN E_Client *
+e_wtz_surface_client_get(E_Wtz_Surface *shell_surface)
+{
+   if (!shell_surface) return NULL;
+   return shell_surface->ec;
+}
+
 /**********************************************************
  * Implementation for Wtz_Shell
  **********************************************************/
index 9428afb6b30ddc5bb92ef7acf244ffabfb25a513..666ade5f9ae7989b28d6bf60286ba16f1ee93ee0 100644 (file)
@@ -3,6 +3,11 @@
 
 #include "e_intern.h"
 
+typedef struct _E_Wtz_Shell               E_Wtz_Shell;
+typedef struct _E_Wtz_Surface             E_Wtz_Surface;
+
+EINTERN E_Client *e_wtz_surface_client_get(E_Wtz_Surface *shell_surface);
+
 EINTERN Eina_Bool e_wtz_shell_init(struct wl_display *display);
 EINTERN void      e_wtz_shell_shutdown(void);