#include "e_tizen_screen_manager_intern.h"
+#include "e_wtz_shell_intern.h"
#include <libds-tizen/screen.h>
struct wl_listener ds_screen_destroy;
struct wl_listener ds_screen_get_splitscreen;
+ struct wl_listener ds_screen_assign_surface;
};
struct _E_Tizen_Splitscreen {
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)
{
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;
}
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);
#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;
}
/* 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
**********************************************************/