shell: Avoid advertising applications without app_id set
[src/agl-compositor.git] / src / shell.c
index 4886a0a..94fdb66 100644 (file)
@@ -55,6 +55,10 @@ agl_shell_desktop_advertise_application_id(struct ivi_compositor *ivi,
        wl_list_for_each(dclient, &ivi->desktop_clients, link) {
                const char *app_id =
                        weston_desktop_surface_get_app_id(surface->dsurface);
+               if (app_id == NULL) {
+                       weston_log("WARNING app_is is null, unable to advertise\n");
+                       return;
+               }
                agl_shell_desktop_send_application(dclient->resource, app_id);
        }
 }
@@ -366,24 +370,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;
        }
 
@@ -438,6 +446,10 @@ ivi_shell_advertise_xdg_surfaces(struct ivi_compositor *ivi, struct wl_resource
        wl_list_for_each(surface, &ivi->surfaces, link) {
                const char *app_id =
                        weston_desktop_surface_get_app_id(surface->dsurface);
+               if (app_id == NULL) {
+                       weston_log("WARNING app_is is null, unable to advertise\n");
+                       return;
+               }
                agl_shell_desktop_send_application(resource, app_id);
        }
 }
@@ -789,8 +801,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)
 {
@@ -804,6 +815,9 @@ shell_advertise_app_state(struct ivi_compositor *ivi, const char *app_id,
        if (!surf)
                return;
 
+       if (!app_id)
+               return;
+
        if (policy && policy->api.surface_advertise_state_change &&
            !policy->api.surface_advertise_state_change(surf, surf->ivi)) {
                return;