[Xfce4-commits] [xfce/xfce4-power-manager] 01/01: Revert "g_value_array is deprecated"
noreply at xfce.org
noreply at xfce.org
Sun Jun 29 06:48:54 CEST 2014
This is an automated email from the git hooks/post-receive script.
eric pushed a commit to branch master
in repository xfce/xfce4-power-manager.
commit 483452b6791088b9170c8f30f39d7e2c17ec9f55
Author: Eric Koegel <eric.koegel at gmail.com>
Date: Sun Jun 29 07:47:36 2014 +0300
Revert "g_value_array is deprecated"
This reverts commit 2a7c86ceb4eda43cceeb450715ed8c37cd248c94.
Not sure there's a good way to port the dbus-glib code to using
GValue, revert until we port xfpm to GIO's dbus code.
---
src/xfpm-polkit.c | 255 +++++++++++++++++++++++++++++++++++------------------
1 file changed, 168 insertions(+), 87 deletions(-)
diff --git a/src/xfpm-polkit.c b/src/xfpm-polkit.c
index b66b228..7d1bbf4 100644
--- a/src/xfpm-polkit.c
+++ b/src/xfpm-polkit.c
@@ -75,7 +75,7 @@ struct XfpmPolkitPrivate
#ifdef ENABLE_POLKIT
DBusGProxy *proxy;
- GArray *subject;
+ GValueArray *subject;
GHashTable *details;
GHashTable *subject_hash;
@@ -253,7 +253,9 @@ xfpm_polkit_free_data (gpointer data)
g_hash_table_destroy (polkit->priv->details);
g_hash_table_destroy (polkit->priv->subject_hash);
- g_array_unref (polkit->priv->subject);
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+ g_value_array_free (polkit->priv->subject);
+ G_GNUC_END_IGNORE_DEPRECATIONS
polkit->priv->details = NULL;
polkit->priv->subject_hash = NULL;
@@ -268,70 +270,146 @@ xfpm_polkit_free_data (gpointer data)
static void
xfpm_polkit_init_data (XfpmPolkit *polkit)
{
+ //const gchar *consolekit_cookie;
GValue hash_elem = { 0 };
- gint pid;
- guint64 start_time;
+ //gboolean subject_created = FALSE;
if (polkit->priv->subject_valid)
- return;
+ return;
- pid = getpid ();
-
- start_time = get_start_time_for_pid (pid);
-
- if ( G_LIKELY (start_time != 0 ) )
+ /**
+ * This variable should be set by the session manager or by
+ * the login manager (gdm?). under clean Xfce environment
+ * it is set by the session manager (4.8 and above)
+ * since we don't have a login manager, yet!
+ **/
+ /*
+ *
+ * Disable for the moment
+ *
+ consolekit_cookie = g_getenv ("XDG_SESSION_COOKIE");
+
+ if ( consolekit_cookie )
{
- GValue val = { 0 }, pid_val = { 0 }, start_time_val = { 0 };
-
- polkit->priv->subject = g_array_sized_new (FALSE, TRUE, sizeof (GValue), 2);
- g_array_set_clear_func (polkit->priv->subject, (GDestroyNotify) g_value_unset);
-
- polkit->priv->subject_hash = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- g_free,
- NULL);
-
- g_value_init (&val, G_TYPE_STRING);
- g_value_set_string (&val, "unix-process");
- g_array_append_val (polkit->priv->subject, val);
-
- g_value_unset (&val);
-
- g_value_init (&pid_val, G_TYPE_UINT);
- g_value_set_uint (&pid_val, pid);
- g_hash_table_insert (polkit->priv->subject_hash,
- g_strdup ("pid"), &pid_val);
-
- g_value_init (&start_time_val, G_TYPE_UINT64);
- g_value_set_uint64 (&start_time_val, start_time);
- g_hash_table_insert (polkit->priv->subject_hash,
- g_strdup ("start-time"), &start_time_val);
-
- XFPM_DEBUG ("Using unix session polkit subject");
+ DBusGProxy *proxy;
+ GError *error = NULL;
+ gboolean ret;
+ gchar *consolekit_session;
+
+ proxy = dbus_g_proxy_new_for_name_owner (polkit->priv->bus,
+ "org.freedesktop.ConsoleKit",
+ "/org/freedesktop/ConsoleKit/Manager",
+ "org.freedesktop.ConsoleKit.Manager",
+ NULL);
+
+ if ( proxy )
+ {
+ ret = dbus_g_proxy_call (proxy, "GetSessionForCookie", &error,
+ G_TYPE_STRING, consolekit_cookie,
+ G_TYPE_INVALID,
+ DBUS_TYPE_G_OBJECT_PATH, &consolekit_session,
+ G_TYPE_INVALID);
+
+ if ( G_LIKELY (ret) )
+ {
+ GValue val = { 0 };
+
+ polkit->priv->subject = g_value_array_new (2);
+ polkit->priv->subject_hash = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+ g_free,
+ NULL);
+ g_value_init (&val, G_TYPE_STRING);
+ g_value_set_string (&val, "unix-session");
+ g_value_array_append (polkit->priv->subject, &val);
+
+ g_value_unset (&val);
+ g_value_init (&val, G_TYPE_STRING);
+ g_value_set_string (&val, consolekit_session);
+
+ g_hash_table_insert (polkit->priv->subject_hash,
+ g_strdup ("session-id"),
+ &val);
+
+ g_free (consolekit_session);
+ XFPM_DEBUG ("Using ConsoleKit session Polkit subject");
+ subject_created = TRUE;
+ }
+ g_object_unref (proxy);
+ }
+ else if (error)
+ {
+ g_warning ("'GetSessionForCookie' failed : %s", error->message);
+ g_error_free (error);
+ }
+
}
- else
+ */
+
+ //if ( subject_created == FALSE )
{
- g_warning ("Unable to create polkit subject");
+ gint pid;
+ guint64 start_time;
+
+ pid = getpid ();
+
+ start_time = get_start_time_for_pid (pid);
+
+ if ( G_LIKELY (start_time != 0 ) )
+ {
+ GValue val = { 0 }, pid_val = { 0 }, start_time_val = { 0 };
+
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+ polkit->priv->subject = g_value_array_new (2);
+ G_GNUC_END_IGNORE_DEPRECATIONS
+ polkit->priv->subject_hash = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+ g_free,
+ NULL);
+
+ g_value_init (&val, G_TYPE_STRING);
+ g_value_set_string (&val, "unix-process");
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+ g_value_array_append (polkit->priv->subject, &val);
+ G_GNUC_END_IGNORE_DEPRECATIONS
+
+ g_value_unset (&val);
+
+ g_value_init (&pid_val, G_TYPE_UINT);
+ g_value_set_uint (&pid_val, pid);
+ g_hash_table_insert (polkit->priv->subject_hash,
+ g_strdup ("pid"), &pid_val);
+
+ g_value_init (&start_time_val, G_TYPE_UINT64);
+ g_value_set_uint64 (&start_time_val, start_time);
+ g_hash_table_insert (polkit->priv->subject_hash,
+ g_strdup ("start-time"), &start_time_val);
+
+ XFPM_DEBUG ("Using unix session polkit subject");
+ }
+ else
+ {
+ g_warning ("Unable to create polkit subject");
+ }
}
-
g_value_init (&hash_elem,
- dbus_g_type_get_map ("GHashTable",
- G_TYPE_STRING,
- G_TYPE_VALUE));
-
+ dbus_g_type_get_map ("GHashTable",
+ G_TYPE_STRING,
+ G_TYPE_VALUE));
+
g_value_set_static_boxed (&hash_elem, polkit->priv->subject_hash);
-
- g_array_append_val (polkit->priv->subject, hash_elem);
-
-
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+ g_value_array_append (polkit->priv->subject, &hash_elem);
+ G_GNUC_END_IGNORE_DEPRECATIONS
+
/**
* Polkit details, will leave it empty.
**/
- polkit->priv->details = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- g_free,
- g_free);
+ polkit->priv->details = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+ g_free,
+ g_free);
/*Clean these data after 1 minute*/
polkit->priv->destroy_id =
@@ -345,7 +423,7 @@ static gboolean
xfpm_polkit_check_auth_intern (XfpmPolkit *polkit, const gchar *action_id)
{
#ifdef ENABLE_POLKIT
- GArray *result;
+ GValueArray *result;
GValue result_val = { 0 };
GError *error = NULL;
gboolean is_authorized = FALSE;
@@ -365,37 +443,40 @@ xfpm_polkit_check_auth_intern (XfpmPolkit *polkit, const gchar *action_id)
g_return_val_if_fail (polkit->priv->proxy != NULL, FALSE);
g_return_val_if_fail (polkit->priv->subject_valid, FALSE);
-
- result = g_array_sized_new (FALSE, TRUE, sizeof (GValue), 0);
- g_array_set_clear_func (result, (GDestroyNotify) g_value_unset);
+
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+ result = g_value_array_new (0);
+ G_GNUC_END_IGNORE_DEPRECATIONS
ret = dbus_g_proxy_call (polkit->priv->proxy, "CheckAuthorization", &error,
- polkit->priv->subject_gtype, polkit->priv->subject,
- G_TYPE_STRING, action_id,
- polkit->priv->details_gtype, polkit->priv->details,
- G_TYPE_UINT, 0,
- G_TYPE_STRING, NULL,
- G_TYPE_INVALID,
- polkit->priv->result_gtype, &result,
- G_TYPE_INVALID);
+ polkit->priv->subject_gtype, polkit->priv->subject,
+ G_TYPE_STRING, action_id,
+ polkit->priv->details_gtype, polkit->priv->details,
+ G_TYPE_UINT, 0,
+ G_TYPE_STRING, NULL,
+ G_TYPE_INVALID,
+ polkit->priv->result_gtype, &result,
+ G_TYPE_INVALID);
if ( G_LIKELY (ret) )
{
- g_value_init (&result_val, polkit->priv->result_gtype);
- g_value_set_static_boxed (&result_val, result);
-
- dbus_g_type_struct_get (&result_val,
- 0, &is_authorized,
- G_MAXUINT);
- g_value_unset (&result_val);
+ g_value_init (&result_val, polkit->priv->result_gtype);
+ g_value_set_static_boxed (&result_val, result);
+
+ dbus_g_type_struct_get (&result_val,
+ 0, &is_authorized,
+ G_MAXUINT);
+ g_value_unset (&result_val);
}
else if ( error )
{
- g_warning ("'CheckAuthorization' failed with %s", error->message);
- g_error_free (error);
+ g_warning ("'CheckAuthorization' failed with %s", error->message);
+ g_error_free (error);
}
- g_array_unref (result);
+ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+ g_value_array_free (result);
+ G_GNUC_END_IGNORE_DEPRECATIONS
XFPM_DEBUG ("Action=%s is authorized=%s", action_id, xfpm_bool_to_string (is_authorized));
@@ -448,25 +529,25 @@ xfpm_polkit_init (XfpmPolkit *polkit)
polkit->priv->subject_hash = NULL;
polkit->priv->subject_gtype =
- dbus_g_type_get_struct ("GValueArray",
- G_TYPE_STRING,
- dbus_g_type_get_map ("GHashTable",
- G_TYPE_STRING,
+ dbus_g_type_get_struct ("GValueArray",
+ G_TYPE_STRING,
+ dbus_g_type_get_map ("GHashTable",
+ G_TYPE_STRING,
G_TYPE_VALUE),
G_TYPE_INVALID);
- polkit->priv->details_gtype = dbus_g_type_get_map ("GHashTable",
- G_TYPE_STRING,
+ polkit->priv->details_gtype = dbus_g_type_get_map ("GHashTable",
+ G_TYPE_STRING,
G_TYPE_STRING);
polkit->priv->result_gtype =
- dbus_g_type_get_struct ("GValueArray",
- G_TYPE_BOOLEAN,
- G_TYPE_BOOLEAN,
- dbus_g_type_get_map ("GHashTable",
- G_TYPE_STRING,
- G_TYPE_STRING),
- G_TYPE_INVALID);
+ dbus_g_type_get_struct ("GValueArray",
+ G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN,
+ dbus_g_type_get_map ("GHashTable",
+ G_TYPE_STRING,
+ G_TYPE_STRING),
+ G_TYPE_INVALID);
#endif /*ENABLE_POLKIT*/
polkit->priv->bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list