From b07180dfaabdd4132e45670e97a76700af09bd15 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Mon, 13 Nov 2017 09:17:17 +0900 Subject: [PATCH] ecore_wl2_window: support tizen_resource @tizen_feature Change-Id: Iff80dfc883205cc65be47e3851634e489281bc2e --- src/lib/ecore_wl2/Ecore_Wl2.h | 3 +++ src/lib/ecore_wl2/ecore_wl2_private.h | 2 ++ src/lib/ecore_wl2/ecore_wl2_window.c | 42 +++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h index 1a80379..c2058ae 100644 --- a/src/lib/ecore_wl2/Ecore_Wl2.h +++ b/src/lib/ecore_wl2/Ecore_Wl2.h @@ -300,6 +300,9 @@ typedef struct _Ecore_Wl2_Event_Window_Show unsigned int win; unsigned int parent_win; unsigned int event_win; + // TIZEN_ONLY + unsigned int data[4]; + // } Ecore_Wl2_Event_Window_Show; typedef struct _Ecore_Wl2_Event_Window_Hide diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h b/src/lib/ecore_wl2/ecore_wl2_private.h index 5c849d1..ab4a3e5 100644 --- a/src/lib/ecore_wl2/ecore_wl2_private.h +++ b/src/lib/ecore_wl2/ecore_wl2_private.h @@ -208,6 +208,8 @@ struct _Ecore_Wl2_Window // TIZEN_ONLY(20150424) : tizen_visibility struct tizen_visibility *tz_visibility; struct tizen_position *tz_position; + struct tizen_resource *tz_resource; + unsigned int resource_id; // Eina_Stringshare *uuid; diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c b/src/lib/ecore_wl2/ecore_wl2_window.c index 919d4ce..8018dc5 100644 --- a/src/lib/ecore_wl2/ecore_wl2_window.c +++ b/src/lib/ecore_wl2/ecore_wl2_window.c @@ -394,6 +394,31 @@ static const struct tizen_position_listener _tizen_position_listener = { _tizen_position_cb_changed, }; + +static void +_tizen_resource_cb_resource_id(void *data, struct tizen_resource *tizen_resource EINA_UNUSED, uint32_t id) +{ + Ecore_Wl2_Window *win; + Ecore_Wl2_Event_Window_Show *ev; + + if (!(win = data)) return; + if (!(ev = calloc(1, sizeof(Ecore_Wl2_Event_Window_Show)))) return; + + ev->win = win->id; + if (win->parent) + ev->parent_win = win->parent->id; + else + ev->parent_win = 0; + ev->event_win = win->id; + ev->data[0] = (unsigned int)id; + win->resource_id = (unsigned int)id; + ecore_event_add(ECORE_WL2_EVENT_WINDOW_SHOW, ev, NULL, NULL); +} + +static const struct tizen_resource_listener _tizen_resource_listener = +{ + _tizen_resource_cb_resource_id, +}; // void @@ -512,6 +537,17 @@ _ecore_wl2_window_shell_surface_init(Ecore_Wl2_Window *window) window->surface); } } + + if (window->display->wl.tz_surf && !window->tz_resource) + { + window->tz_resource = + tizen_surface_get_tizen_resource(window->display->wl.tz_surf, window->surface); + if (!window->tz_resource) return; + + tizen_resource_add_listener(window->tz_resource, + &_tizen_resource_listener, window); + + } // if (window->display->wl.session_recovery) @@ -708,6 +744,9 @@ ecore_wl2_window_hide(Ecore_Wl2_Window *window) if (window->tz_position) tizen_position_destroy(window->tz_position); window->tz_position = NULL; + + if (window->tz_resource) tizen_resource_destroy(window->tz_resource); + window->tz_resource = NULL; // EINA_INLIST_FOREACH_SAFE(window->subsurfs, tmp, subsurf) @@ -769,6 +808,9 @@ ecore_wl2_window_free(Ecore_Wl2_Window *window) if (window->tz_position) tizen_position_destroy(window->tz_position); window->tz_position = NULL; + + if (window->tz_resource) tizen_resource_destroy(window->tz_resource); + window->tz_resource = NULL; // if (window->callback) wl_callback_destroy(window->callback); -- 2.7.4