ACK, but as you say, it's hard to tell if it will really fix that bug. ----- Original Message ----- > From: "Marc-André Lureau" <marcandre.lureau@xxxxxxxxx> > To: spice-devel@xxxxxxxxxxxxxxxxxxxxx > Sent: Friday, April 4, 2014 10:50:23 AM > Subject: [PATCH spice-gtk] display: signal primary-destroy when clearing all surfaces > > 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 > _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel