retry ECORE_WL_WINDOW_TYPE_NOTIFICATION type check if given elm win is not ELM_WIN_NO... 12/51412/1
authorGwanglim Lee <gl77.lee@samsung.com>
Mon, 9 Nov 2015 10:30:20 +0000 (19:30 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Mon, 9 Nov 2015 10:30:20 +0000 (19:30 +0900)
Change-Id: Ie2140ee2d018743955a4185fec6590d142bd33c2

src/efl_util.c

index e5f8f33..13e3632 100644 (file)
@@ -630,6 +630,8 @@ efl_util_set_notification_window_level(Evas_Object *window,
                                             level);
         return EFL_UTIL_ERROR_NONE;
      }
+
+   return EFL_UTIL_ERROR_NOT_SUPPORTED_WINDOW_TYPE;
 #endif /* end of X11 */
 
 #if WAYLAND
@@ -637,52 +639,54 @@ efl_util_set_notification_window_level(Evas_Object *window,
    Ecore_Wl_Window *wlwin;
    struct wl_surface *surface;
    Efl_Util_Wl_Surface_Lv_Info *lv_info;
+   Ecore_Wl_Window_Type wl_type;
 
    res = _wl_init();
    EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EFL_UTIL_ERROR_INVALID_PARAMETER);
 
-   type = elm_win_type_get(window);
-   EINA_SAFETY_ON_FALSE_RETURN_VAL((type == ELM_WIN_NOTIFICATION),
-                                   EFL_UTIL_ERROR_NOT_SUPPORTED_WINDOW_TYPE);
-
    wlwin = elm_win_wl_window_get(window);
-   if (wlwin)
-     {
-        while (!_eflutil.wl.policy.proto)
-          wl_display_dispatch_queue(_eflutil.wl.dpy, _eflutil.wl.queue);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(wlwin, EFL_UTIL_ERROR_NOT_SUPPORTED_WINDOW_TYPE);
 
-        surface = ecore_wl_window_surface_get(wlwin);
-        EINA_SAFETY_ON_NULL_RETURN_VAL(surface,
-                                       EFL_UTIL_ERROR_NOT_SUPPORTED_WINDOW_TYPE);
+   type = elm_win_type_get(window);
+   if (type != ELM_WIN_NOTIFICATION)
+     {
+        wl_type = ecore_wl_window_type_get(wlwin);
+        EINA_SAFETY_ON_FALSE_RETURN_VAL((wl_type == ECORE_WL_WINDOW_TYPE_NOTIFICATION),
+                                        EFL_UTIL_ERROR_NOT_SUPPORTED_WINDOW_TYPE);
+     }
 
-        lv_info = eina_hash_find(_eflutil.wl.policy.hash_noti_lv, &surface);
-        if (!lv_info)
-          {
-             lv_info = calloc(1, sizeof(Efl_Util_Wl_Surface_Lv_Info));
-             EINA_SAFETY_ON_NULL_RETURN_VAL(lv_info, EFL_UTIL_ERROR_OUT_OF_MEMORY);
+   while (!_eflutil.wl.policy.proto)
+     wl_display_dispatch_queue(_eflutil.wl.dpy, _eflutil.wl.queue);
 
-             lv_info->surface = surface;
-             lv_info->level = (int)level;
-             lv_info->wait_for_done = EINA_TRUE;
+   surface = ecore_wl_window_surface_get(wlwin);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(surface,
+                                  EFL_UTIL_ERROR_NOT_SUPPORTED_WINDOW_TYPE);
 
-             eina_hash_add(_eflutil.wl.policy.hash_noti_lv,
-                           &surface,
-                           lv_info);
-          }
-        else
-          {
-             lv_info->level = (int)level;
-             lv_info->wait_for_done = EINA_TRUE;
-          }
+   lv_info = eina_hash_find(_eflutil.wl.policy.hash_noti_lv, &surface);
+   if (!lv_info)
+     {
+        lv_info = calloc(1, sizeof(Efl_Util_Wl_Surface_Lv_Info));
+        EINA_SAFETY_ON_NULL_RETURN_VAL(lv_info, EFL_UTIL_ERROR_OUT_OF_MEMORY);
 
-        tizen_policy_set_notification_level(_eflutil.wl.policy.proto,
-                                            surface, (int)level);
+        lv_info->surface = surface;
+        lv_info->level = (int)level;
+        lv_info->wait_for_done = EINA_TRUE;
 
-        return EFL_UTIL_ERROR_NONE;
+        eina_hash_add(_eflutil.wl.policy.hash_noti_lv,
+                      &surface,
+                      lv_info);
+     }
+   else
+     {
+        lv_info->level = (int)level;
+        lv_info->wait_for_done = EINA_TRUE;
      }
-#endif /* end of WAYLAND */
 
-   return EFL_UTIL_ERROR_NOT_SUPPORTED_WINDOW_TYPE;
+   tizen_policy_set_notification_level(_eflutil.wl.policy.proto,
+                                       surface, (int)level);
+
+   return EFL_UTIL_ERROR_NONE;
+#endif /* end of WAYLAND */
 }
 
 API int
@@ -729,6 +733,8 @@ efl_util_get_notification_window_level(Evas_Object *window,
 
         return EFL_UTIL_ERROR_NONE;
      }
+
+   return EFL_UTIL_ERROR_NOT_SUPPORTED_WINDOW_TYPE;
 #endif /* end of X11 */
 
 #if WAYLAND
@@ -736,66 +742,69 @@ efl_util_get_notification_window_level(Evas_Object *window,
    Ecore_Wl_Window *wlwin;
    struct wl_surface *surface;
    Efl_Util_Wl_Surface_Lv_Info *lv_info;
+   Ecore_Wl_Window_Type wl_type;
 
    res = _wl_init();
    EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EFL_UTIL_ERROR_INVALID_PARAMETER);
 
-   type = elm_win_type_get(window);
-   EINA_SAFETY_ON_FALSE_RETURN_VAL((type == ELM_WIN_NOTIFICATION),
-                                   EFL_UTIL_ERROR_NOT_SUPPORTED_WINDOW_TYPE);
-
    wlwin = elm_win_wl_window_get(window);
-   if (wlwin)
+   EINA_SAFETY_ON_NULL_RETURN_VAL(wlwin, EFL_UTIL_ERROR_NOT_SUPPORTED_WINDOW_TYPE);
+
+   type = elm_win_type_get(window);
+   if (type != ELM_WIN_NOTIFICATION)
      {
-        while (!_eflutil.wl.policy.proto)
-          wl_display_dispatch_queue(_eflutil.wl.dpy, _eflutil.wl.queue);
+        wl_type = ecore_wl_window_type_get(wlwin);
+        EINA_SAFETY_ON_FALSE_RETURN_VAL((wl_type == ECORE_WL_WINDOW_TYPE_NOTIFICATION),
+                                        EFL_UTIL_ERROR_NOT_SUPPORTED_WINDOW_TYPE);
+     }
 
-        surface = ecore_wl_window_surface_get(wlwin);
-        EINA_SAFETY_ON_NULL_RETURN_VAL(surface,
-                                       EFL_UTIL_ERROR_NOT_SUPPORTED_WINDOW_TYPE);
+   while (!_eflutil.wl.policy.proto)
+     wl_display_dispatch_queue(_eflutil.wl.dpy, _eflutil.wl.queue);
 
-        lv_info = eina_hash_find(_eflutil.wl.policy.hash_noti_lv, &surface);
-        if (lv_info)
+   surface = ecore_wl_window_surface_get(wlwin);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(surface,
+                                  EFL_UTIL_ERROR_NOT_SUPPORTED_WINDOW_TYPE);
+
+   lv_info = eina_hash_find(_eflutil.wl.policy.hash_noti_lv, &surface);
+   if (lv_info)
+     {
+        if (lv_info->wait_for_done)
           {
-             if (lv_info->wait_for_done)
+             int count = 0;
+             while ((lv_info->wait_for_done) && (count < 3))
                {
-                  int count = 0;
-                  while ((lv_info->wait_for_done) && (count < 3))
-                    {
-                       ecore_wl_flush();
-                       wl_display_dispatch_queue(_eflutil.wl.dpy, _eflutil.wl.queue);
-                       count++;
-                    }
-
-                  if (lv_info->wait_for_done)
-                    {
-                       *level = EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT;
-                       return EFL_UTIL_ERROR_INVALID_PARAMETER;
-                    }
+                  ecore_wl_flush();
+                  wl_display_dispatch_queue(_eflutil.wl.dpy, _eflutil.wl.queue);
+                  count++;
                }
 
-             switch (lv_info->level)
+             if (lv_info->wait_for_done)
                {
-                case TIZEN_POLICY_LEVEL_1:       *level = EFL_UTIL_NOTIFICATION_LEVEL_1;       break;
-                case TIZEN_POLICY_LEVEL_2:       *level = EFL_UTIL_NOTIFICATION_LEVEL_2;       break;
-                case TIZEN_POLICY_LEVEL_3:       *level = EFL_UTIL_NOTIFICATION_LEVEL_3;       break;
-                case TIZEN_POLICY_LEVEL_NONE:    *level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;    break;
-                case TIZEN_POLICY_LEVEL_DEFAULT: *level = EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT; break;
-                case TIZEN_POLICY_LEVEL_MEDIUM:  *level = EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM;  break;
-                case TIZEN_POLICY_LEVEL_HIGH:    *level = EFL_UTIL_NOTIFICATION_LEVEL_HIGH;    break;
-                case TIZEN_POLICY_LEVEL_TOP:     *level = EFL_UTIL_NOTIFICATION_LEVEL_TOP;     break;
-                default:                               *level = EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT;
-                                                       return EFL_UTIL_ERROR_INVALID_PARAMETER;
+                  *level = EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT;
+                  return EFL_UTIL_ERROR_INVALID_PARAMETER;
                }
-             return EFL_UTIL_ERROR_NONE;
           }
-        else
-          *level = EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT;
 
+        switch (lv_info->level)
+          {
+           case TIZEN_POLICY_LEVEL_1:       *level = EFL_UTIL_NOTIFICATION_LEVEL_1;       break;
+           case TIZEN_POLICY_LEVEL_2:       *level = EFL_UTIL_NOTIFICATION_LEVEL_2;       break;
+           case TIZEN_POLICY_LEVEL_3:       *level = EFL_UTIL_NOTIFICATION_LEVEL_3;       break;
+           case TIZEN_POLICY_LEVEL_NONE:    *level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;    break;
+           case TIZEN_POLICY_LEVEL_DEFAULT: *level = EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT; break;
+           case TIZEN_POLICY_LEVEL_MEDIUM:  *level = EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM;  break;
+           case TIZEN_POLICY_LEVEL_HIGH:    *level = EFL_UTIL_NOTIFICATION_LEVEL_HIGH;    break;
+           case TIZEN_POLICY_LEVEL_TOP:     *level = EFL_UTIL_NOTIFICATION_LEVEL_TOP;     break;
+           default:                         *level = EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT;
+            return EFL_UTIL_ERROR_INVALID_PARAMETER;
+          }
         return EFL_UTIL_ERROR_NONE;
      }
+   else
+     *level = EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT;
+
+   return EFL_UTIL_ERROR_NONE;
 #endif /* end of WAYLAND */
-   return EFL_UTIL_ERROR_NOT_SUPPORTED_WINDOW_TYPE;
 }
 
 API int