summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberto Mardegan <alberto.mardegan@nokia.com>2009-11-20 12:29:55 +0200
committerAlberto Mardegan <alberto.mardegan@nokia.com>2009-11-20 15:58:09 +0200
commitc0b5f7f587bf2b80021325624615525853327dc3 (patch)
tree92dd08ba6fc3bcabdd996833322ff9e4c77bbd30
parent04e29b76ca3773cd8baa5b608eace7484bd51bf5 (diff)
downloadtelepathy-mission-control-c0b5f7f587bf2b80021325624615525853327dc3.tar.gz
When manager instrospection fails, dispose the manager.
-rw-r--r--src/mcd-account.c4
-rw-r--r--src/mcd-manager.c6
2 files changed, 10 insertions, 0 deletions
diff --git a/src/mcd-account.c b/src/mcd-account.c
index 2fcb200e..f10a809c 100644
--- a/src/mcd-account.c
+++ b/src/mcd-account.c
@@ -549,6 +549,10 @@ static void on_manager_ready (McdManager *manager, const GError *error,
if (error)
{
DEBUG ("got error: %s", error->message);
+
+ /* we are not interested in the manager anymore */
+ g_object_unref (priv->manager);
+ priv->manager = NULL;
}
else
{
diff --git a/src/mcd-manager.c b/src/mcd-manager.c
index ef9563dd..1b1a5f42 100644
--- a/src/mcd-manager.c
+++ b/src/mcd-manager.c
@@ -91,6 +91,12 @@ on_manager_ready (TpConnectionManager *tp_conn_mgr, const GError *error,
DEBUG ("manager %s is ready", priv->name);
priv->ready = TRUE;
_mcd_object_ready (manager, readiness_quark, error);
+
+ if (error)
+ {
+ /* if instrospection failed, this object is useless: abort it */
+ mcd_mission_abort (MCD_MISSION (manager));
+ }
}
static gint