#include <stdbool.h>
#include <Ecore_Wayland.h>
-#include <Elementary.h>
#include <glib-object.h>
#include <glib.h>
#include <gio/gio.h>
appcore_multiwindow_base_instance_resume(cxt->inst);
}
-EXPORT_API void appcore_multiwindow_base_window_bind(appcore_multiwindow_base_instance_h h, Evas_Object *win)
+EXPORT_API void appcore_multiwindow_base_window_on_pre_visibility(int type, void *event)
+{
+ Ecore_Wl_Event_Window_Pre_Visibility_Change *ev = event;
+ win_context *cxt = __find_win_context_by_wid(ev->win);
+
+ if (!cxt)
+ return;
+
+ if (ev->type == ECORE_WL_WINDOW_VISIBILITY_TYPE_PRE_UNOBSCURED)
+ appcore_multiwindow_base_instance_resume(cxt->inst);
+}
+
+EXPORT_API void appcore_multiwindow_base_window_bind(appcore_multiwindow_base_instance_h h, Ecore_Wl_Window *wl_win)
{
win_context *cxt;
- Ecore_Wl_Window *wl_win;
int id;
- cxt = __find_win_context(h);
- if (cxt) {
- _ERR("This instance is already binded");
+ if (!wl_win) {
+ _ERR("Invalid parameter");
return;
}
- wl_win = elm_win_wl_window_get(win);
- if (!wl_win) {
- _ERR("failed to get wayland window");
+ cxt = __find_win_context(h);
+ if (cxt) {
+ _ERR("This instance is already binded");
return;
}
id = ecore_wl_window_id_get(wl_win);
cxt = malloc(sizeof(win_context));
+ if (cxt == NULL) {
+ _ERR("Out of memory");
+ return;
+ }
+
cxt->win_id = id;
cxt->inst = h;
__win_contexts = g_list_append(__win_contexts, cxt);