diff options
author | Marius Vlad <marius.vlad@collabora.com> | 2020-10-22 00:07:53 +0300 |
---|---|---|
committer | Marius Vlad <marius.vlad@collabora.com> | 2020-11-05 10:41:32 +0200 |
commit | 681f5df234921e989606eefc6e293f37883bb22e (patch) | |
tree | 0fb98bf910eed581d52fd3125dfad05155f86731 | |
parent | 27e99ddcad08fd3568133cf3b72a1ae8670a185f (diff) |
shell: Destroy weston_transmitter_surface as well
Instruct waltham-transmitter-plugin that it can destroy its own
surface representation when the weston_surface is also destroyed.
Bug-AGL: SPEC-3601, SPEC-3611
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ie0e5409b21c043b8c98bebb4d77808227ee38aca
-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) { |