diff --git a/src/calls-call-holder.c b/src/calls-call-holder.c index c15c4d9..9b99940 100644 --- a/src/calls-call-holder.c +++ b/src/calls-call-holder.c @@ -137,10 +137,17 @@ dispose (GObject *object) GObjectClass *parent_class = g_type_class_peek (G_TYPE_OBJECT); CallsCallHolder *self = CALLS_CALL_HOLDER (object); - g_clear_object (&self->selector_item); + // Mutual reference + if (self->selector_item) + { + GObject *selector_item = G_OBJECT (self->selector_item); + self->selector_item = NULL; + g_object_unref (selector_item); + } + g_clear_object (&self->display); g_clear_object (&self->data); - + parent_class->dispose (object); } diff --git a/src/calls-call-selector-item.c b/src/calls-call-selector-item.c index 7560e53..f95c01b 100644 --- a/src/calls-call-selector-item.c +++ b/src/calls-call-selector-item.c @@ -191,7 +191,13 @@ dispose (GObject *object) GObjectClass *parent_class = g_type_class_peek (GTK_TYPE_EVENT_BOX); CallsCallSelectorItem *self = CALLS_CALL_SELECTOR_ITEM (object); - g_clear_object (&self->holder); + // Mutual reference + if (self->holder) + { + GObject *holder = G_OBJECT (self->holder); + self->holder = NULL; + g_object_unref (holder); + } parent_class->dispose (object); }