[Spice-devel] [PATCH spice-gtk] display: signal primary-destroy when clearing all surfaces
Marc-André Lureau
marcandre.lureau at gmail.com
Fri Apr 4 08:50:23 PDT 2014
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
More information about the Spice-devel
mailing list