summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2020-10-21 23:31:16 +0300
committerMarius Vlad <marius.vlad@collabora.com>2020-11-05 10:41:32 +0200
commit27e99ddcad08fd3568133cf3b72a1ae8670a185f (patch)
tree23055b87ff035aba18134777d4a7dcc99964d891
parentea7a72cbc284e5877756629abb4d376aecb47f24 (diff)
shell: Keep a reference to weston_transmitter_surface
When 'pushing' the surface store a reference of the weston_transmitter_surface so we can later inform the plug-in when the weston_surface is destroyed, so that it can also destroy the transmittter_surface from its side. Bug-AGL: SPEC-3601, SPEC-3611 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I7fd1df2130e53e8c226c7a751c598765608ae6b3
-rw-r--r--src/ivi-compositor.h9
-rw-r--r--src/shell.c3
2 files changed, 11 insertions, 1 deletions
diff --git a/src/ivi-compositor.h b/src/ivi-compositor.h
index ff8e20d..3dd0c20 100644
--- a/src/ivi-compositor.h
+++ b/src/ivi-compositor.h
@@ -239,6 +239,14 @@ enum ivi_surface_flags {
IVI_SURFACE_PROP_POSITION = (1 << 1),
};
+/* the waltham surface is a pointer type as well and
+ * in order to avoid adding ifdef for waltham use a
+ * generic pointer, which will be only be valid when the
+ * surface is a remote out on a waltham type of output */
+struct ivi_surface_waltham {
+ void *transmitter_surface;
+};
+
struct ivi_surface {
struct ivi_compositor *ivi;
struct weston_desktop_surface *dsurface;
@@ -266,6 +274,7 @@ struct ivi_surface {
struct ivi_remote_surface remote;
};
+ struct ivi_surface_waltham waltham_surface;
struct wl_listener listener_advertise_app;
struct wl_signal signal_advertise_app;
};
diff --git a/src/shell.c b/src/shell.c
index 87d8ce9..0422583 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -159,7 +159,8 @@ ivi_output_notify_waltham_plugin(struct ivi_surface *surface)
* wthp_ivi_app_id_surface_create() and is responsible for setting-up
* the gstreamer pipeline as well.
*/
- api->surface_push_to_remote(weston_surface, app_id, trans_remote, NULL);
+ surface->waltham_surface.transmitter_surface =
+ api->surface_push_to_remote(weston_surface, app_id, trans_remote, NULL);
}
static void