aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libindicator/indicator-service.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c
index a4cdb68..eebe3f8 100644
--- a/libindicator/indicator-service.c
+++ b/libindicator/indicator-service.c
@@ -20,6 +20,7 @@ struct _IndicatorServicePrivate {
DBusGProxy * dbus_proxy;
guint timeout;
GList * watchers;
+ guint this_service_version;
};
/* Signals Stuff */
@@ -36,10 +37,12 @@ static guint signals[LAST_SIGNAL] = { 0 };
enum {
PROP_0,
PROP_NAME,
+ PROP_VERSION
};
/* The strings so that they can be slowly looked up. */
#define PROP_NAME_S "name"
+#define PROP_VERSION_S "version"
/* GObject Stuff */
#define INDICATOR_SERVICE_GET_PRIVATE(o) \
@@ -78,6 +81,12 @@ indicator_service_class_init (IndicatorServiceClass *klass)
"This is the name that should be used on DBus for this service.",
NULL,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property(object_class, PROP_VERSION,
+ g_param_spec_uint(PROP_VERSION_S,
+ "The version of the service that we're implementing.",
+ "A number to represent the version of the other APIs the service provides. This should match across the manager and the service",
+ 0, G_MAXUINT, 0,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
/* Signals */
@@ -113,6 +122,7 @@ indicator_service_init (IndicatorService *self)
priv->dbus_proxy = NULL;
priv->timeout = 0;
priv->watchers = NULL;
+ priv->this_service_version = 0;
/* Start talkin' dbus */
GError * error = NULL;
@@ -213,6 +223,10 @@ set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec
}
break;
/* *********************** */
+ case PROP_VERSION:
+ priv->this_service_version = g_value_get_uint(value);
+ break;
+ /* *********************** */
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -240,6 +254,10 @@ get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspe
}
break;
/* *********************** */
+ case PROP_VERSION:
+ g_value_set_uint(value, priv->this_service_version);
+ break;
+ /* *********************** */
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -305,7 +323,7 @@ _indicator_service_server_watch (IndicatorService * service, DBusGMethodInvocati
priv->timeout = 0;
}
- dbus_g_method_return(method, INDICATOR_SERVICE_VERSION, 0);
+ dbus_g_method_return(method, INDICATOR_SERVICE_VERSION, priv->this_service_version);
return TRUE;
}