summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Kasik <mkasik@redhat.com>2013-09-05 10:57:41 +0200
committerMarek Kasik <mkasik@redhat.com>2013-09-05 10:57:41 +0200
commit09ac86bbaa8df9f9d1aa27830f1be9db9b70f8be (patch)
treec26d12117e684ae2de540e5faeef4ca5a9bbbb3f
parentfeb7fa0007a573038cbce9d857ffee19b06b5d3f (diff)
downloadgnome-settings-daemon-09ac86bbaa8df9f9d1aa27830f1be9db9b70f8be.tar.gz
print-notifications: Don't run connection test for local server
https://bugzilla.gnome.org/show_bug.cgi?id=678623
-rw-r--r--plugins/print-notifications/gsd-print-notifications-manager.c65
1 files changed, 36 insertions, 29 deletions
diff --git a/plugins/print-notifications/gsd-print-notifications-manager.c b/plugins/print-notifications/gsd-print-notifications-manager.c
index 86bec39a..8a18950e 100644
--- a/plugins/print-notifications/gsd-print-notifications-manager.c
+++ b/plugins/print-notifications/gsd-print-notifications-manager.c
@@ -1002,17 +1002,24 @@ renew_subscription_with_connection_test (gpointer user_data)
static void
renew_subscription_timeout_enable (GsdPrintNotificationsManager *manager,
- gboolean enable)
+ gboolean enable,
+ gboolean with_connection_test)
{
if (manager->priv->renew_source_id > 0)
g_source_remove (manager->priv->renew_source_id);
if (enable) {
renew_subscription (manager);
- manager->priv->renew_source_id =
- g_timeout_add_seconds (RENEW_INTERVAL,
- renew_subscription_with_connection_test,
- manager);
+ if (with_connection_test)
+ manager->priv->renew_source_id =
+ g_timeout_add_seconds (RENEW_INTERVAL,
+ renew_subscription_with_connection_test,
+ manager);
+ else
+ manager->priv->renew_source_id =
+ g_timeout_add_seconds (RENEW_INTERVAL,
+ renew_subscription,
+ manager);
} else {
manager->priv->renew_source_id = 0;
}
@@ -1040,7 +1047,7 @@ cups_connection_test_cb (GObject *source_object,
manager->priv->num_dests = cupsGetDests (&manager->priv->dests);
g_debug ("Got dests from remote CUPS server.");
- renew_subscription_timeout_enable (manager, TRUE);
+ renew_subscription_timeout_enable (manager, TRUE, TRUE);
} else {
g_debug ("Test connection to CUPS server \'%s:%d\' failed.", cupsServer (), ippPort ());
if (manager->priv->cups_connection_timeout_id == 0)
@@ -1060,26 +1067,18 @@ cups_connection_test (gpointer user_data)
if (!manager->priv->dests) {
address = g_strdup_printf ("%s:%d", cupsServer (), port);
- if (address && address[0] != '/') {
- client = g_socket_client_new ();
-
- g_debug ("Initiating test connection to CUPS server \'%s:%d\'.", cupsServer (), port);
-
- g_socket_client_connect_to_host_async (client,
- address,
- port,
- NULL,
- cups_connection_test_cb,
- manager);
+ client = g_socket_client_new ();
- g_object_unref (client);
- } else {
- manager->priv->num_dests = cupsGetDests (&manager->priv->dests);
- g_debug ("Got dests from local CUPS server.");
+ g_debug ("Initiating test connection to CUPS server \'%s:%d\'.", cupsServer (), port);
- renew_subscription_timeout_enable (manager, TRUE);
- }
+ g_socket_client_connect_to_host_async (client,
+ address,
+ port,
+ NULL,
+ cups_connection_test_cb,
+ manager);
+ g_object_unref (client);
g_free (address);
}
@@ -1129,12 +1128,20 @@ gsd_print_notifications_manager_start_idle (gpointer data)
manager->priv->printing_printers = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
- cups_connection_test (manager);
- g_bus_get (G_BUS_TYPE_SYSTEM,
- NULL,
- gsd_print_notifications_manager_got_dbus_connection,
- data);
+ if (server_is_local (cupsServer ())) {
+ manager->priv->num_dests = cupsGetDests (&manager->priv->dests);
+ g_debug ("Got dests from local CUPS server.");
+
+ renew_subscription_timeout_enable (manager, TRUE, FALSE);
+
+ g_bus_get (G_BUS_TYPE_SYSTEM,
+ NULL,
+ gsd_print_notifications_manager_got_dbus_connection,
+ data);
+ } else {
+ cups_connection_test (manager);
+ }
scp_handler (manager, TRUE);
@@ -1188,7 +1195,7 @@ gsd_print_notifications_manager_stop (GsdPrintNotificationsManager *manager)
manager->priv->cups_dbus_subscription_id = 0;
}
- renew_subscription_timeout_enable (manager, FALSE);
+ renew_subscription_timeout_enable (manager, FALSE, FALSE);
if (manager->priv->subscription_id >= 0)
cancel_subscription (manager->priv->subscription_id);