diff options
Diffstat (limited to 'async-timezone.patch')
-rw-r--r-- | async-timezone.patch | 368 |
1 files changed, 0 insertions, 368 deletions
diff --git a/async-timezone.patch b/async-timezone.patch deleted file mode 100644 index 7a3ce7c..0000000 --- a/async-timezone.patch +++ /dev/null @@ -1,368 +0,0 @@ ---- gnome-panel-2.21.91/applets/clock/set-timezone.c 2008-02-11 16:15:51.000000000 -0500 -+++ hacked/applets/clock/set-timezone.c 2008-02-18 00:49:27.000000000 -0500 -@@ -91,108 +91,6 @@ - return pk_context; - } - --gboolean --set_system_timezone (const char *filename, GError **err) --{ -- DBusGConnection *session_bus; -- DBusGConnection *system_bus; -- DBusGProxy *mechanism_proxy; -- DBusGProxy *polkit_gnome_proxy; -- gboolean ret = FALSE; -- -- session_bus = get_session_bus (); -- if (session_bus == NULL) -- goto out; -- -- system_bus = get_system_bus (); -- if (system_bus == NULL) -- goto out; -- -- mechanism_proxy = dbus_g_proxy_new_for_name (system_bus, -- "org.gnome.ClockApplet.Mechanism", -- "/", -- "org.gnome.ClockApplet.Mechanism"); -- -- polkit_gnome_proxy = dbus_g_proxy_new_for_name (session_bus, -- "org.gnome.PolicyKit", -- "/org/gnome/PolicyKit/Manager", -- "org.gnome.PolicyKit.Manager"); -- -- if (filename != NULL) { -- GError *error; -- -- g_debug ("Trying to set timezone '%s'", filename); -- try_again: -- error = NULL; -- /* first, try to call into the mechanism */ -- if (!dbus_g_proxy_call_with_timeout (mechanism_proxy, -- "SetTimezone", -- INT_MAX, -- &error, -- /* parameters: */ -- G_TYPE_STRING, filename, -- G_TYPE_INVALID, -- /* return values: */ -- G_TYPE_INVALID)) { -- if (dbus_g_error_has_name (error, "org.gnome.ClockApplet.Mechanism.NotPrivileged")) { -- char **tokens; -- char *polkit_result_textual; -- char *polkit_action; -- gboolean gained_privilege; -- -- tokens = g_strsplit (error->message, " ", 2); -- g_error_free (error); -- if (g_strv_length (tokens) != 2) { -- g_warning ("helper return string malformed"); -- g_strfreev (tokens); -- goto out; -- } -- polkit_action = tokens[0]; -- polkit_result_textual = tokens[1]; -- -- g_debug ("helper refused; returned polkit_result='%s' and polkit_action='%s'", -- polkit_result_textual, polkit_action); -- -- /* Now ask the user for auth... */ -- if (!dbus_g_proxy_call_with_timeout (polkit_gnome_proxy, -- "ShowDialog", -- INT_MAX, -- &error, -- /* parameters: */ -- G_TYPE_STRING, polkit_action, -- G_TYPE_UINT, 0, /* X11 window ID; none */ -- G_TYPE_INVALID, -- /* return values: */ -- G_TYPE_BOOLEAN, &gained_privilege, -- G_TYPE_INVALID)) { -- g_propagate_error (err, error); -- g_strfreev (tokens); -- goto out; -- } -- g_strfreev (tokens); -- -- if (gained_privilege) { -- g_debug ("Gained privilege; trying to set timezone again"); -- goto try_again; -- } -- -- } else { -- g_propagate_error (err, error); -- } -- goto out; -- } -- -- g_debug ("Successfully set time zone to '%s'", filename); -- } -- -- ret = TRUE; --out: -- g_object_unref (mechanism_proxy); -- g_object_unref (polkit_gnome_proxy); -- -- return ret; --} -- - static gint - can_do (const gchar *pk_action_id) - { -@@ -269,7 +167,9 @@ - - typedef struct { - gint ref_count; -+ gchar *call; - gint64 time; -+ gchar *filename; - GFunc callback; - gpointer data; - GDestroyNotify notify; -@@ -284,6 +184,7 @@ - if (data->ref_count == 0) { - if (data->notify) - data->notify (data->data); -+ g_free (data->filename); - g_free (data); - } - } -@@ -392,16 +293,28 @@ - "org.gnome.ClockApplet.Mechanism"); - - data->ref_count++; -- dbus_g_proxy_begin_call_with_timeout (proxy, -- "SetTime", -- set_time_notify, -- data, free_data, -- INT_MAX, -- /* parameters: */ -- G_TYPE_INT64, data->time, -- G_TYPE_INVALID, -- /* return values: */ -- G_TYPE_INVALID); -+ if (strcmp (data->call, "SetTime") == 0) -+ dbus_g_proxy_begin_call_with_timeout (proxy, -+ "SetTime", -+ set_time_notify, -+ data, free_data, -+ INT_MAX, -+ /* parameters: */ -+ G_TYPE_INT64, data->time, -+ G_TYPE_INVALID, -+ /* return values: */ -+ G_TYPE_INVALID); -+ else -+ dbus_g_proxy_begin_call_with_timeout (proxy, -+ "SetTimezone", -+ set_time_notify, -+ data, free_data, -+ INT_MAX, -+ /* parameters: */ -+ G_TYPE_STRING, data->filename, -+ G_TYPE_INVALID, -+ /* return values: */ -+ G_TYPE_INVALID); - } - - void -@@ -417,7 +330,33 @@ - - data = g_new (SetTimeCallbackData, 1); - data->ref_count = 1; -+ data->call = "SetTime"; - data->time = time; -+ data->filename = NULL; -+ data->callback = callback; -+ data->data = d; -+ data->notify = notify; -+ -+ set_time_async (data); -+ free_data (data); -+} -+ -+void -+set_system_timezone_async (const gchar *filename, -+ GFunc callback, -+ gpointer d, -+ GDestroyNotify notify) -+{ -+ SetTimeCallbackData *data; -+ -+ if (filename == NULL) -+ return; -+ -+ data = g_new (SetTimeCallbackData, 1); -+ data->ref_count = 1; -+ data->call = "SetTimezone"; -+ data->time = -1; -+ data->filename = g_strdup (filename); - data->callback = callback; - data->data = d; - data->notify = notify; ---- gnome-panel-2.21.91/applets/clock/set-timezone.h 2008-02-11 16:15:51.000000000 -0500 -+++ hacked/applets/clock/set-timezone.h 2008-02-18 00:48:40.000000000 -0500 -@@ -23,8 +23,6 @@ - #include <glib.h> - #include <time.h> - --gboolean set_system_timezone (const char *filename, -- GError **err); - gint can_set_system_timezone (void); - - gint can_set_system_time (void); -@@ -34,4 +32,9 @@ - gpointer data, - GDestroyNotify notify); - -+void set_system_timezone_async (const gchar *filename, -+ GFunc callback, -+ gpointer data, -+ GDestroyNotify notify); -+ - #endif ---- gnome-panel-2.21.91/applets/clock/clock-location.h 2008-02-11 16:15:51.000000000 -0500 -+++ hacked/applets/clock/clock-location.h 2008-02-18 00:11:57.000000000 -0500 -@@ -52,7 +52,10 @@ - void clock_location_localtime (ClockLocation *loc, struct tm *tm); - - gboolean clock_location_is_current (ClockLocation *loc); --gboolean clock_location_make_current (ClockLocation *loc, GError **error); -+void clock_location_make_current (ClockLocation *loc, -+ GFunc callback, -+ gpointer data, -+ GDestroyNotify destroy); - - const gchar *clock_location_get_weather_code (ClockLocation *loc); - void clock_location_set_weather_code (ClockLocation *loc, const gchar *code); ---- gnome-panel-2.21.91/applets/clock/clock-location.c 2008-02-11 16:15:51.000000000 -0500 -+++ hacked/applets/clock/clock-location.c 2008-02-18 00:50:53.000000000 -0500 -@@ -667,18 +667,20 @@ - return offset; - } - --gboolean --clock_location_make_current (ClockLocation *loc, GError **error) --{ -- ClockLocationPrivate *priv = PRIVATE (loc); -- gchar *filename; -- gboolean ret; -+typedef struct { -+ ClockLocation *location; -+ GFunc callback; -+ gpointer data; -+ GDestroyNotify destroy; -+} MakeCurrentData; - -- filename = g_build_filename (SYSTEM_ZONEINFODIR, priv->timezone, NULL); -- ret = set_system_timezone (filename, error); -- g_free (filename); -+static void -+make_current_cb (gpointer data, GError *error) -+{ -+ MakeCurrentData *mcdata = data; -+ ClockLocationPrivate *priv = PRIVATE (mcdata->location); - -- if (ret) { -+ if (error == NULL) { - /* FIXME this ugly shortcut is necessary until we move the - * current timezone tracking to clock.c and emit the - * signal from there -@@ -687,7 +689,47 @@ - current_zone = g_strdup (priv->timezone); - } - -- return ret; -+ if (mcdata->callback) -+ mcdata->callback (mcdata->data, error); -+ else -+ g_error_free (error); -+} -+ -+static void -+free_make_current_data (gpointer data) -+{ -+ MakeCurrentData *mcdata = data; -+ -+ if (mcdata->destroy) -+ mcdata->destroy (mcdata->data); -+ -+ g_object_unref (mcdata->location); -+ g_free (mcdata); -+} -+ -+void -+clock_location_make_current (ClockLocation *loc, -+ GFunc callback, -+ gpointer data, -+ GDestroyNotify destroy) -+{ -+ ClockLocationPrivate *priv = PRIVATE (loc); -+ gchar *filename; -+ MakeCurrentData *mcdata; -+ -+ mcdata = g_new (MakeCurrentData, 1); -+ -+ mcdata->location = g_object_ref (loc); -+ mcdata->callback = callback; -+ mcdata->data = data; -+ mcdata->destroy = destroy; -+ -+ filename = g_build_filename (SYSTEM_ZONEINFODIR, priv->timezone, NULL); -+ set_system_timezone_async (filename, -+ (GFunc)make_current_cb, -+ mcdata, -+ free_make_current_data); -+ g_free (filename); - } - - const gchar * ---- gnome-panel-2.21.91/applets/clock/clock-location-tile.c 2008-02-18 01:08:29.000000000 -0500 -+++ hacked/applets/clock/clock-location-tile.c 2008-02-18 01:10:17.000000000 -0500 -@@ -104,7 +104,7 @@ - NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); -- signals[TILE_PRESSED] = g_signal_new ("timezone-set", -+ signals[TIMEZONE_SET] = g_signal_new ("timezone-set", - G_TYPE_FROM_CLASS (g_obj_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (ClockLocationTileClass, timezone_set), -@@ -171,16 +171,15 @@ - } - - static void --make_current (GtkWidget *widget, ClockLocationTile *tile) -+make_current_cb (gpointer data, GError *error) - { -- ClockLocationTilePrivate *priv = PRIVATE (tile); -- GError *error = NULL; -- GtkWidget *dialog; -+ ClockLocationTile *tile = data; -+ GtkWidget *dialog; - -- if (clock_location_make_current (priv->location, &error)) { -+ if (error == NULL) { - g_signal_emit (tile, signals[TIMEZONE_SET], 0); - } -- else if (error) { -+ else { - dialog = gtk_message_dialog_new (NULL, - 0, - GTK_MESSAGE_ERROR, -@@ -195,6 +194,15 @@ - } - } - -+static void -+make_current (GtkWidget *widget, ClockLocationTile *tile) -+{ -+ ClockLocationTilePrivate *priv = PRIVATE (tile); -+ -+ clock_location_make_current (priv->location, -+ (GFunc)make_current_cb, tile, NULL); -+} -+ - static gboolean - enter_or_leave_tile (GtkWidget *widget, - GdkEventCrossing *event, |