[gnome-control-center] info: Check PackageKit version at runtime



commit 5366d1188e212d472905ac325df9a4c03eb711a9
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Jul 22 13:00:18 2012 -0400

    info: Check PackageKit version at runtime
    
    The previous patch made use use PackageKit 0.8 API. This patch
    adds a version check that keeps the info panel from crashing
    when it finds an older PackageKit at runtime.

 panels/info/cc-info-panel.c |   32 +++++++++++++++++++++++++++-----
 1 files changed, 27 insertions(+), 5 deletions(-)
---
diff --git a/panels/info/cc-info-panel.c b/panels/info/cc-info-panel.c
index f678f1c..96a39de 100644
--- a/panels/info/cc-info-panel.c
+++ b/panels/info/cc-info-panel.c
@@ -1940,11 +1940,33 @@ cc_info_panel_init (CcInfoPanel *self)
     }
   else
     {
-      g_signal_connect (self->priv->pk_proxy,
-                        "g-signal",
-                        G_CALLBACK (on_pk_signal),
-                        self);
-      refresh_updates (self);
+      GVariant *v;
+      guint32 major, minor, micro;
+
+      v = g_dbus_proxy_get_cached_property (self->priv->pk_proxy, "VersionMajor");
+      g_variant_get (v, "u", &major);
+      g_variant_unref (v);
+      v = g_dbus_proxy_get_cached_property (self->priv->pk_proxy, "VersionMinor");
+      g_variant_get (v, "u", &minor);
+      g_variant_unref (v);
+      v = g_dbus_proxy_get_cached_property (self->priv->pk_proxy, "VersionMicro");
+      g_variant_get (v, "u", &micro);
+      g_variant_unref (v);
+
+      if (major != 0 || minor != 8)
+        {
+          g_warning ("PackageKit version %u.%u.%u not supported", major, minor, micro);
+          g_clear_object (&self->priv->pk_proxy);
+          self->priv->updates_state = PK_NOT_AVAILABLE;
+        }
+      else
+        {
+          g_signal_connect (self->priv->pk_proxy,
+                            "g-signal",
+                            G_CALLBACK (on_pk_signal),
+                            self);
+          refresh_updates (self);
+        }
     }
 
   gtk_builder_add_from_file (self->priv->builder,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]