diff options
-rw-r--r-- | src/desktop.c | 4 | ||||
-rw-r--r-- | src/ivi-compositor.h | 2 | ||||
-rw-r--r-- | src/shell.c | 14 |
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 0422583..fb15dfc 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) { |