gnome-session r4898 - in branches/dbus_based: . gnome-session
- From: mccann svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-session r4898 - in branches/dbus_based: . gnome-session
- Date: Wed, 30 Jul 2008 19:32:31 +0000 (UTC)
Author: mccann
Date: Wed Jul 30 19:32:31 2008
New Revision: 4898
URL: http://svn.gnome.org/viewvc/gnome-session?rev=4898&view=rev
Log:
2008-07-30 William Jon McCann <jmccann redhat com>
* gnome-session/gsm-inhibitor.c (gsm_inhibitor_error_quark),
(gsm_inhibitor_error_get_type), (gsm_inhibitor_set_client_id),
(gsm_inhibitor_get_client_id), (gsm_inhibitor_class_init):
* gnome-session/gsm-inhibitor.h:
DBus doesn't allow NULL or empty object path strings. Throw
an error instead.
Modified:
branches/dbus_based/ChangeLog
branches/dbus_based/gnome-session/gsm-inhibitor.c
branches/dbus_based/gnome-session/gsm-inhibitor.h
Modified: branches/dbus_based/gnome-session/gsm-inhibitor.c
==============================================================================
--- branches/dbus_based/gnome-session/gsm-inhibitor.c (original)
+++ branches/dbus_based/gnome-session/gsm-inhibitor.c Wed Jul 30 19:32:31 2008
@@ -33,6 +33,8 @@
static guint32 inhibitor_serial = 1;
+#define IS_STRING_EMPTY(x) ((x)==NULL||(x)[0]=='\0')
+
#define GSM_INHIBITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_INHIBITOR, GsmInhibitorPrivate))
struct GsmInhibitorPrivate
@@ -61,6 +63,39 @@
G_DEFINE_TYPE (GsmInhibitor, gsm_inhibitor, G_TYPE_OBJECT)
+GQuark
+gsm_inhibitor_error_quark (void)
+{
+ static GQuark ret = 0;
+ if (ret == 0) {
+ ret = g_quark_from_static_string ("gsm_inhibitor_error");
+ }
+
+ return ret;
+}
+
+#define ENUM_ENTRY(NAME, DESC) { NAME, "" #NAME "", DESC }
+
+GType
+gsm_inhibitor_error_get_type (void)
+{
+ static GType etype = 0;
+
+ if (etype == 0) {
+ static const GEnumValue values[] = {
+ ENUM_ENTRY (GSM_INHIBITOR_ERROR_GENERAL, "GeneralError"),
+ ENUM_ENTRY (GSM_INHIBITOR_ERROR_NOT_SET, "NotSet"),
+ { 0, 0, 0 }
+ };
+
+ g_assert (GSM_INHIBITOR_NUM_ERRORS == G_N_ELEMENTS (values) - 1);
+
+ etype = g_enum_register_static ("GsmInhibitorError", values);
+ }
+
+ return etype;
+}
+
static guint32
get_next_inhibitor_serial (void)
{
@@ -159,6 +194,8 @@
g_free (inhibitor->priv->client_id);
+ g_debug ("GsmInhibitor: setting client-id = %s", client_id);
+
if (client_id != NULL) {
inhibitor->priv->client_id = g_strdup (client_id);
} else {
@@ -250,12 +287,19 @@
{
g_return_val_if_fail (GSM_IS_INHIBITOR (inhibitor), FALSE);
- if (inhibitor->priv->client_id != NULL) {
- *id = g_strdup (inhibitor->priv->client_id);
- } else {
- *id = g_strdup ("");
+ /* object paths are not allowed to be NULL or blank */
+ if (IS_STRING_EMPTY (inhibitor->priv->client_id)) {
+ g_set_error (error,
+ GSM_INHIBITOR_ERROR,
+ GSM_INHIBITOR_ERROR_NOT_SET,
+ "Value is not set");
+ return FALSE;
}
+ *id = g_strdup (inhibitor->priv->client_id);
+
+ g_debug ("GsmInhibitor: getting client-id = '%s'", *id);
+
return TRUE;
}
@@ -512,6 +556,7 @@
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
dbus_g_object_type_install_info (GSM_TYPE_INHIBITOR, &dbus_glib_gsm_inhibitor_object_info);
+ dbus_g_error_domain_register (GSM_INHIBITOR_ERROR, NULL, GSM_INHIBITOR_TYPE_ERROR);
g_type_class_add_private (klass, sizeof (GsmInhibitorPrivate));
}
Modified: branches/dbus_based/gnome-session/gsm-inhibitor.h
==============================================================================
--- branches/dbus_based/gnome-session/gsm-inhibitor.h (original)
+++ branches/dbus_based/gnome-session/gsm-inhibitor.h Wed Jul 30 19:32:31 2008
@@ -53,7 +53,20 @@
GSM_INHIBITOR_FLAG_LOGOUT = 1 << 0,
GSM_INHIBITOR_FLAG_SWITCH_USER = 1 << 1,
GSM_INHIBITOR_FLAG_SUSPEND = 1 << 2,
-} GsmManagerInhibitFlag;
+} GsmInhibitorFlag;
+
+typedef enum
+{
+ GSM_INHIBITOR_ERROR_GENERAL = 0,
+ GSM_INHIBITOR_ERROR_NOT_SET,
+ GSM_INHIBITOR_NUM_ERRORS
+} GsmInhibitorError;
+
+#define GSM_INHIBITOR_ERROR gsm_inhibitor_error_quark ()
+GType gsm_inhibitor_error_get_type (void);
+#define GSM_INHIBITOR_TYPE_ERROR (gsm_inhibitor_error_get_type ())
+
+GQuark gsm_inhibitor_error_quark (void);
GType gsm_inhibitor_get_type (void) G_GNUC_CONST;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]