summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/desktop.c4
-rw-r--r--src/ivi-compositor.h2
-rw-r--r--src/shell.c14
3 files changed, 20 insertions, 0 deletions
diff --git a/src/desktop.c b/src/desktop.c
index 4caba48..ad1ce44 100644
--- a/src/desktop.c
+++ b/src/desktop.c
@@ -192,6 +192,10 @@ desktop_surface_removed(struct weston_desktop_surface *dsurface, void *userdata)
output->active = NULL;
}
+ if (surface->role == IVI_SURFACE_ROLE_REMOTE &&
+ output->type == OUTPUT_REMOTE)
+ ivi_destroy_waltham_destroy(surface);
+
/* check if there's a last 'remote' surface and insert a black
* surface view if there's no background set for that output
*/
diff --git a/src/ivi-compositor.h b/src/ivi-compositor.h
index 3dd0c20..189cd8c 100644
--- a/src/ivi-compositor.h
+++ b/src/ivi-compositor.h
@@ -415,4 +415,6 @@ ivi_seat_reset_caps_sent(struct ivi_compositor *ivi);
void
agl_shell_desktop_advertise_application_id(struct ivi_compositor *ivi,
struct ivi_surface *surface);
+void
+ivi_destroy_waltham_destroy(struct ivi_surface *surface);
#endif
diff --git a/src/shell.c b/src/shell.c
index 612661f..463d0e6 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -107,6 +107,20 @@ ivi_set_desktop_surface_fullscreen(struct ivi_surface *surface)
agl_shell_desktop_advertise_application_id(ivi, surface);
}
+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)
{