PipeInputStream and PipeOutputStream should not fail when creating GPollableStream source. It is already checked and unref in case of existing source. In order to track possible issues, the g_return_val_if_fail was changed to a g_debug message; --- gtk/giopipe.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/gtk/giopipe.c b/gtk/giopipe.c index 50edb5b..86eaab6 100644 --- a/gtk/giopipe.c +++ b/gtk/giopipe.c @@ -234,10 +234,11 @@ pipe_input_stream_create_source (GPollableInputStream *stream, PipeInputStream *self = PIPE_INPUT_STREAM(stream); GSource *pollable_source; - g_return_val_if_fail (self->source == NULL || - g_source_is_destroyed (self->source), NULL); + if (self->source != NULL && !g_source_is_destroyed (self->source)) + g_debug ("%s: GPollableSource already exists %p - This could lead to data loss (%ld)", + G_STRFUNC, self->source, self->read); - if (self->source && g_source_is_destroyed (self->source)) + if (self->source) g_source_unref (self->source); pollable_source = g_pollable_source_new_full (self, NULL, cancellable); @@ -416,10 +417,11 @@ pipe_output_stream_create_source (GPollableOutputStream *stream, PipeOutputStream *self = PIPE_OUTPUT_STREAM(stream); GSource *pollable_source; - g_return_val_if_fail (self->source == NULL || - g_source_is_destroyed (self->source), NULL); + if (self->source != NULL && !g_source_is_destroyed (self->source)) + g_debug ("%s: GPollableSource already exists %p - This could lead to data loss (%ld)", + G_STRFUNC, self->source, self->count); - if (self->source && g_source_is_destroyed (self->source)) + if (self->source) g_source_unref (self->source); pollable_source = g_pollable_source_new_full (self, NULL, cancellable); -- 2.4.1 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel