[PATCH spice-gtk] display: signal primary-destroy when clearing all surfaces

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When destroying the primary surface, we need to signal it, since
listeners might be referencing the data pointer. Currently, this only
happens during channel finalize().

This could help with rhbz#1082555.
---
 gtk/channel-display.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/gtk/channel-display.c b/gtk/channel-display.c
index 96fd764..ff9f85c 100644
--- a/gtk/channel-display.c
+++ b/gtk/channel-display.c
@@ -807,12 +807,18 @@ static display_surface *find_surface(SpiceDisplayChannelPrivate *c, guint32 surf
     return g_hash_table_lookup(c->surfaces, GINT_TO_POINTER(surface_id));
 }
 
+/* main or coroutine context */
 static void clear_surfaces(SpiceChannel *channel, gboolean keep_primary)
 {
     SpiceDisplayChannelPrivate *c = SPICE_DISPLAY_CHANNEL(channel)->priv;
     GHashTableIter iter;
     display_surface *surface;
 
+    if (!keep_primary) {
+        c->primary = NULL;
+        emit_main_context(channel, SPICE_DISPLAY_PRIMARY_DESTROY);
+    }
+
     g_hash_table_iter_init(&iter, c->surfaces);
     while (g_hash_table_iter_next(&iter, NULL, (gpointer*)&surface)) {
 
-- 
1.8.5.3

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]