if (!no_session_recovery)
no_session_recovery = !!getenv("EFL_NO_WAYLAND_SESSION_RECOVERY");
+//TIZEN_ONLY(20171216): add ecore_wl2_window_find
+ _ecore_wl2_window_init();
+//
+
return _ecore_wl2_init_count;
ecore_event_err:
return 0;
}
+//TIZEN_ONLY(20171216): add ecore_wl2_window_find
+ _ecore_wl2_window_shutdown();
+//
+
if (--_ecore_wl2_init_count != 0) return _ecore_wl2_init_count;
/* reset events */
#include "ecore_wl2_private.h"
#include "efl-hints-client-protocol.h"
+//TIZEN_ONLY(20171216): add ecore_wl2_window_find
+/* local variables */
+static Eina_Hash *_windows = NULL;
+
+/* internal functions */
+void
+_ecore_wl2_window_init(void)
+{
+ if (!_windows)
+ _windows = eina_hash_string_superfast_new(NULL);
+}
+
+void
+_ecore_wl2_window_shutdown(void)
+{
+ eina_hash_free(_windows);
+ _windows = NULL;
+}
+
+static char *
+_ecore_wl2_window_id_str_get(int win_id)
+{
+ const char *vals = "qWeRtYuIoP5$&<~";
+ static char id[9];
+ unsigned int val;
+
+ val = (unsigned int)win_id;
+ id[0] = vals[(val >> 28) & 0xf];
+ id[1] = vals[(val >> 24) & 0xf];
+ id[2] = vals[(val >> 20) & 0xf];
+ id[3] = vals[(val >> 16) & 0xf];
+ id[4] = vals[(val >> 12) & 0xf];
+ id[5] = vals[(val >> 8) & 0xf];
+ id[6] = vals[(val >> 4) & 0xf];
+ id[7] = vals[(val) & 0xf];
+ id[8] = 0;
+
+ return id;
+}
+//
+
void
_ecore_wl2_window_semi_free(Ecore_Wl2_Window *window)
{
_ecore_wl2_window_surface_create(win);
+//TIZEN_ONLY(20171216): add ecore_wl2_window_find
+ eina_hash_add(_windows, _ecore_wl2_window_id_str_get(win->id), win);
+//
+
return win;
}
EINA_SAFETY_ON_NULL_RETURN(window);
+//TIZEN_ONLY(20171216): add ecore_wl2_window_find
+ eina_hash_del(_windows, _ecore_wl2_window_id_str_get(window->id), window);
+//
+
display = window->display;
EINA_INLIST_FOREACH(display->inputs, input)
}
//
+//TIZEN_ONLY(20171216): add ecore_wl2_window_find
+EAPI Ecore_Wl2_Window *
+ecore_wl2_window_find(unsigned int id)
+{
+ Ecore_Wl2_Window *win = NULL;
+
+ if (!_windows) return NULL;
+ win = eina_hash_find(_windows, _ecore_wl2_window_id_str_get(id));
+ return win;
+}
+//
+
EAPI void
ecore_wl2_window_type_set(Ecore_Wl2_Window *window, Ecore_Wl2_Window_Type type)
{