diff options
Diffstat (limited to 'gtk/spice-session.c')
-rw-r--r-- | gtk/spice-session.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/gtk/spice-session.c b/gtk/spice-session.c index 5f67883..d92c195 100644 --- a/gtk/spice-session.c +++ b/gtk/spice-session.c @@ -69,6 +69,18 @@ static void spice_session_init(SpiceSession *session) } static void +spice_session_dispose(GObject *gobject) +{ + SpiceSession *session = SPICE_SESSION(gobject); + + spice_session_disconnect(session); + + /* Chain up to the parent class */ + if (G_OBJECT_CLASS(spice_session_parent_class)->dispose) + G_OBJECT_CLASS(spice_session_parent_class)->dispose(gobject); +} + +static void spice_session_finalize(GObject *gobject) { SpiceSession *session = SPICE_SESSION(gobject); @@ -82,7 +94,8 @@ spice_session_finalize(GObject *gobject) free(s->ca_file); /* Chain up to the parent class */ - G_OBJECT_CLASS(spice_session_parent_class)->finalize(gobject); + if (G_OBJECT_CLASS(spice_session_parent_class)->finalize) + G_OBJECT_CLASS(spice_session_parent_class)->finalize(gobject); } static void spice_session_get_property(GObject *gobject, @@ -160,7 +173,8 @@ static void spice_session_class_init(SpiceSessionClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS(klass); - gobject_class->finalize = spice_session_finalize; + gobject_class->dispose = spice_session_dispose; + gobject_class->finalize = spice_session_finalize; gobject_class->get_property = spice_session_get_property; gobject_class->set_property = spice_session_set_property; |