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
[email protected]
http://lists.freedesktop.org/mailman/listinfo/spice-devel