Add an exception handling
[platform/core/appfw/app-core.git] / src / multiwindow_base / appcore_multiwindow_base_window.c
index 3aea29b..06c7784 100644 (file)
@@ -23,7 +23,6 @@
 #include <stdbool.h>
 
 #include <Ecore_Wayland.h>
-#include <Elementary.h>
 #include <glib-object.h>
 #include <glib.h>
 #include <gio/gio.h>
@@ -120,27 +119,42 @@ EXPORT_API void appcore_multiwindow_base_window_on_visibility(int type, void *ev
                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);