compositor: Do not allow vt-switching by default
[src/agl-compositor.git] / src / shell.c
index 0422583..9e7693e 100644 (file)
@@ -54,6 +54,7 @@ agl_shell_desktop_advertise_application_id(struct ivi_compositor *ivi,
                                           struct ivi_surface *surface)
 {
        struct desktop_client *dclient;
+       static bool display_adv = false;
 
        if (surface->advertised_on_launch)
                return;
@@ -63,7 +64,10 @@ agl_shell_desktop_advertise_application_id(struct ivi_compositor *ivi,
                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");
+                       if (!display_adv) {
+                               weston_log("WARNING app_is is null, unable to advertise\n");
+                               display_adv = true;
+                       }
                        return;
                }
                agl_shell_desktop_send_application(dclient->resource, app_id);
@@ -107,6 +111,21 @@ ivi_set_desktop_surface_fullscreen(struct ivi_surface *surface)
        agl_shell_desktop_advertise_application_id(ivi, surface);
 }
 
+#ifdef HAVE_WALTHAM
+void
+ivi_destroy_waltham_destroy(struct ivi_surface *surface)
+{
+       struct ivi_compositor *ivi = surface->ivi;
+       const struct weston_transmitter_api *api =
+               ivi->waltham_transmitter_api;
+
+       if (!api)
+               return;
+
+       if (surface->waltham_surface.transmitter_surface)
+               api->surface_destroy(surface->waltham_surface.transmitter_surface);
+}
+
 static void
 ivi_output_notify_waltham_plugin(struct ivi_surface *surface)
 {
@@ -163,6 +182,17 @@ ivi_output_notify_waltham_plugin(struct ivi_surface *surface)
            api->surface_push_to_remote(weston_surface, app_id, trans_remote, NULL);
 }
 
+#else
+void
+ivi_destroy_waltham_destroy(struct ivi_surface *surface)
+{
+}
+static void
+ivi_output_notify_waltham_plugin(struct ivi_surface *surface)
+{
+}
+#endif
+
 static void
 ivi_set_desktop_surface_remote(struct ivi_surface *surface)
 {
@@ -681,7 +711,7 @@ remove_black_surface(struct ivi_output *output)
        weston_layer_entry_remove(&view->layer_link);
        weston_view_update_transform(view);
 
-       weston_output_damage(output->output);
+       weston_view_damage_below(view);
 }
 
 void
@@ -708,7 +738,7 @@ insert_black_surface(struct ivi_output *output)
        view->surface->is_mapped = true;
 
        weston_view_update_transform(view);
-       weston_output_damage(output->output);
+       weston_view_damage_below(view);
 }
 
 static void
@@ -732,7 +762,9 @@ shell_ready(struct wl_client *client, struct wl_resource *shell_res)
 
        wl_list_for_each_safe(surface, tmp, &ivi->pending_surfaces, link) {
                wl_list_remove(&surface->link);
+               wl_list_init(&surface->link);
                ivi_check_pending_desktop_surface(surface);
+               surface->checked_pending = true;
        }
 }
 
@@ -772,6 +804,7 @@ shell_set_background(struct wl_client *client,
                return;
        }
 
+       surface->checked_pending = true;
        surface->role = IVI_SURFACE_ROLE_BACKGROUND;
        surface->bg.output = output;
        wl_list_remove(&surface->link);
@@ -844,6 +877,7 @@ shell_set_panel(struct wl_client *client,
                return;
        }
 
+       surface->checked_pending = true;
        surface->role = IVI_SURFACE_ROLE_PANEL;
        surface->panel.output = output;
        surface->panel.edge = edge;