static void _opaque_region_set(Ecore_Wl2_Window *window, struct wl_region *region);
//
+// TIZEN_ONLY(20210330): for maintain internal aux hint list
+typedef struct _Ecore_Wl2_Window_Aux_Hint Ecore_Wl2_Window_Aux_Hint;
+struct _Ecore_Wl2_Window_Aux_Hint
+{
+ int id;
+ Eina_Stringshare *hint;
+ Eina_Stringshare *val;
+};
+//
+
/* internal functions */
void
_ecore_wl2_window_init(void)
Ecore_Wl2_Input *input;
Ecore_Wl2_Subsurface *subsurf;
Eina_Inlist *tmp;
+ Ecore_Wl2_Window_Aux_Hint *hint;
EINA_SAFETY_ON_NULL_RETURN(window);
+ // TIZEN_ONLY(20210330): for maintain internal aux hint list
+ EINA_LIST_FREE(window->aux_hints, hint)
+ {
+ eina_stringshare_del(hint->hint);
+ eina_stringshare_del(hint->val);
+ }
+ //
+
//TIZEN_ONLY(20171216): add ecore_wl2_window_find
eina_hash_del(_windows, _ecore_wl2_window_id_str_get(window->id), window);
//
}
//
+// TIZEN_ONLY(20210330): for maintain internal aux hint list
+static Ecore_Wl2_Window_Aux_Hint *
+_ecore_wl2_window_aux_hint_get_by_id(Ecore_Wl2_Window *win, int id)
+{
+ Ecore_Wl2_Window_Aux_Hint *ewah = NULL;
+ Eina_List *l = NULL;
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(win, NULL);
+
+ EINA_LIST_REVERSE_FOREACH(win->aux_hints, l, ewah)
+ {
+ if (ewah->id == id)
+ return ewah;
+ }
+
+ return NULL;
+}
+
+static Eina_Bool
+_ecore_wl2_window_aux_hint_list_add(Ecore_Wl2_Window *win, int id, const char *hint, const char *val)
+{
+ Ecore_Wl2_Window_Aux_Hint *ewah = NULL;
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(win, EINA_FALSE);
+
+ ewah = _ecore_wl2_window_aux_hint_get_by_id(win, id);
+ if (ewah)
+ {
+ eina_stringshare_del(ewah->hint);
+ eina_stringshare_del(ewah->val);
+ ewah->hint = eina_stringshare_add(hint);
+ ewah->val = eina_stringshare_add(val);
+ return EINA_TRUE;
+ }
+
+ ewah = (Ecore_Wl2_Window_Aux_Hint *)calloc(1, sizeof(Ecore_Wl2_Window_Aux_Hint));
+ EINA_SAFETY_ON_NULL_RETURN_VAL(ewah, EINA_FALSE);
+
+ ewah->hint = eina_stringshare_add(hint);
+ ewah->val = eina_stringshare_add(val);
+ ewah->id = id;
+ win->aux_hints = eina_list_append(win->aux_hints, ewah);
+
+ return EINA_TRUE;
+}
+
+static Eina_Bool
+_ecore_wl2_window_aux_hint_list_change(Ecore_Wl2_Window *win, Ecore_Wl2_Window_Aux_Hint *ewah, const char *val)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(win, EINA_FALSE);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(ewah, EINA_FALSE);
+
+ eina_stringshare_del(ewah->val);
+ ewah->val = eina_stringshare_add(val);
+
+ return EINA_TRUE;
+}
+
+static Eina_Bool
+_ecore_wl2_window_aux_hint_list_del(Ecore_Wl2_Window *win, Ecore_Wl2_Window_Aux_Hint *ewah)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(win, EINA_FALSE);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(ewah, EINA_FALSE);
+
+ eina_stringshare_del(ewah->hint);
+ eina_stringshare_del(ewah->val);
+ win->aux_hints = eina_list_remove(win->aux_hints, ewah);
+
+ return EINA_TRUE;
+}
+// END OF TIZEN_ONLY
+
EAPI Eina_List *
ecore_wl2_window_aux_hints_supported_get(Ecore_Wl2_Window *win)
{
tizen_policy_add_aux_hint(win->display->wl.tz_policy, win->surface, id, hint, val);
//
+ // TIZEN_ONLY(20210330): for maintain internal aux hint list
+ _ecore_wl2_window_aux_hint_list_add(win, id, hint, val);
+ //
+
if ((!win->surface) || (!win->display->wl.efl_aux_hints)) return;
efl_aux_hints_add_aux_hint(win->display->wl.efl_aux_hints, win->surface, id, hint, val);
tizen_policy_change_aux_hint(win->display->wl.tz_policy, win->surface, id, val);
//
+ // TIZEN_ONLY(20210330): for maintain internal aux hint list
+ Ecore_Wl2_Window_Aux_Hint *ewah = NULL;
+ ewah = _ecore_wl2_window_aux_hint_get_by_id(win, id);
+ if (ewah)
+ _ecore_wl2_window_aux_hint_list_change(win, ewah, val);
+ //
+
if ((!win->surface) || (!win->display->wl.efl_aux_hints)) return;
efl_aux_hints_change_aux_hint(win->display->wl.efl_aux_hints, win->surface, id, val);
tizen_policy_del_aux_hint(win->display->wl.tz_policy, win->surface, id);
//
+ // TIZEN_ONLY(20210330): for maintain internal aux hint list
+ Ecore_Wl2_Window_Aux_Hint *ewah = NULL;
+ ewah = _ecore_wl2_window_aux_hint_get_by_id(win, id);
+ if (ewah)
+ _ecore_wl2_window_aux_hint_list_del(win, ewah);
+ //
+
if ((!win->surface) || (!win->display->wl.efl_aux_hints)) return;
efl_aux_hints_del_aux_hint(win->display->wl.efl_aux_hints, win->surface, id);