layout: Advertise state change for other types of surface roles
[src/agl-compositor.git] / src / shell.c
index 82cc1d3..c884f16 100644 (file)
@@ -264,7 +264,7 @@ ivi_check_pending_desktop_surface_popup(struct ivi_surface *surface)
        const char *_app_id =
                        weston_desktop_surface_get_app_id(surface->dsurface);
 
-       if (wl_list_empty(&ivi->popup_pending_apps))
+       if (wl_list_empty(&ivi->popup_pending_apps) || !_app_id)
                return false;
 
        wl_list_for_each_safe(p_popup, next_p_popup,
@@ -295,7 +295,7 @@ ivi_check_pending_desktop_surface_split(struct ivi_surface *surface)
        const char *_app_id =
                        weston_desktop_surface_get_app_id(surface->dsurface);
 
-       if (wl_list_empty(&ivi->split_pending_apps))
+       if (wl_list_empty(&ivi->split_pending_apps) || !_app_id)
                return false;
 
        wl_list_for_each_safe(split_surf, next_split_surf,
@@ -319,7 +319,7 @@ ivi_check_pending_desktop_surface_fullscreen(struct ivi_surface *surface)
        const char *_app_id =
                        weston_desktop_surface_get_app_id(surface->dsurface);
 
-       if (wl_list_empty(&ivi->fullscreen_pending_apps))
+       if (wl_list_empty(&ivi->fullscreen_pending_apps) || !_app_id)
                return false;
 
        wl_list_for_each_safe(fs_surf, next_fs_surf,
@@ -342,7 +342,7 @@ ivi_check_pending_desktop_surface_remote(struct ivi_surface *surface)
        const char *_app_id =
                weston_desktop_surface_get_app_id(surface->dsurface);
 
-       if (wl_list_empty(&ivi->remote_pending_apps))
+       if (wl_list_empty(&ivi->remote_pending_apps) || !_app_id)
                return false;
 
        wl_list_for_each_safe(remote_surf, next_remote_surf,
@@ -366,24 +366,28 @@ ivi_check_pending_desktop_surface(struct ivi_surface *surface)
        ret = ivi_check_pending_desktop_surface_popup(surface);
        if (ret) {
                ivi_set_desktop_surface_popup(surface);
+               ivi_layout_popup_committed(surface);
                return;
        }
 
        ret = ivi_check_pending_desktop_surface_split(surface);
        if (ret) {
                ivi_set_desktop_surface_split(surface);
+               ivi_layout_split_committed(surface);
                return;
        }
 
        ret = ivi_check_pending_desktop_surface_fullscreen(surface);
        if (ret) {
                ivi_set_desktop_surface_fullscreen(surface);
+               ivi_layout_fullscreen_committed(surface);
                return;
        }
 
        ret = ivi_check_pending_desktop_surface_remote(surface);
        if (ret) {
                ivi_set_desktop_surface_remote(surface);
+               ivi_layout_desktop_committed(surface);
                return;
        }
 
@@ -789,8 +793,7 @@ shell_set_panel(struct wl_client *client,
        weston_desktop_surface_set_size(dsurface, width, height);
 }
 
-
-static void
+void
 shell_advertise_app_state(struct ivi_compositor *ivi, const char *app_id,
                          const char *data, uint32_t app_state)
 {