diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/Makefile.in | 2 | ||||
-rw-r--r-- | src/ka-applet.c | 36 | ||||
-rw-r--r-- | src/ka-dialog.c | 20 | ||||
-rw-r--r-- | src/krb5-auth-dialog.ui (renamed from src/krb5-auth-dialog.xml) | 0 |
5 files changed, 39 insertions, 21 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 1c89d31..fb64219 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -105,7 +105,7 @@ AM_CPPFLAGS = \ pkgdatadir = $(datadir)/krb5-auth-dialog pkgdata_DATA = \ - krb5-auth-dialog.xml \ + krb5-auth-dialog.ui \ $(NULL) EXTRA_DIST = \ diff --git a/src/Makefile.in b/src/Makefile.in index 612e7c4..12cb8fa 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -409,7 +409,7 @@ AM_CPPFLAGS = \ $(NULL) pkgdata_DATA = \ - krb5-auth-dialog.xml \ + krb5-auth-dialog.ui \ $(NULL) EXTRA_DIST = \ diff --git a/src/ka-applet.c b/src/ka-applet.c index b2b2823..7de9204 100644 --- a/src/ka-applet.c +++ b/src/ka-applet.c @@ -950,21 +950,31 @@ ka_ns_check_persistence (KaApplet *self) { GList *caps; GList *l; + gboolean is_autostart = g_getenv("DESKTOP_AUTOSTART_ID") ? TRUE : FALSE; + gint seconds = 5; self->priv->ns_persistence = FALSE; - caps = notify_get_server_caps (); - if (caps == NULL) { + do { + caps = notify_get_server_caps (); + if (caps == NULL) g_warning ("Failed to read server caps"); - return; - } - - l = g_list_find_custom (caps, "persistence", (GCompareFunc)strcmp); - if (l != NULL) { - self->priv->ns_persistence = TRUE; - KA_DEBUG ("Notification server supports persistence."); - } - g_list_foreach (caps, (GFunc) g_free, NULL); - g_list_free (caps); + else { + l = g_list_find_custom (caps, "persistence", (GCompareFunc)strcmp); + if (l != NULL) { + self->priv->ns_persistence = TRUE; + KA_DEBUG ("Notification server supports persistence."); + } + g_list_foreach (caps, (GFunc) g_free, NULL); + g_list_free (caps); + } + /* During session start we have to wait until the shell is fully up + * to reliably detect the persistence property (#642666) */ + if (is_autostart && !self->priv->ns_persistence) { + sleep(1); + seconds--; + } else + break; + } while (seconds); } @@ -989,7 +999,7 @@ ka_applet_create () applet->priv->uixml = gtk_builder_new (); ret = gtk_builder_add_from_file (applet->priv->uixml, KA_DATA_DIR G_DIR_SEPARATOR_S - PACKAGE ".xml", &error); + PACKAGE ".ui", &error); if (!ret) { g_assert (error); g_assert (error->message); diff --git a/src/ka-dialog.c b/src/ka-dialog.c index ce86367..3114f49 100644 --- a/src/ka-dialog.c +++ b/src/ka-dialog.c @@ -502,6 +502,15 @@ credentials_expiring (gpointer *data) } +/* run once, then terminate the timer */ +static gboolean +credentials_expiring_once (gpointer *data) +{ + credentials_expiring(data); + return FALSE; +} + + /* * set ticket options by looking at krb5.conf and gconf */ @@ -1056,9 +1065,10 @@ main (int argc, char *argv[]) const char *help_msg = "Run '" PACKAGE " --help' to see a full list of available command line options"; const GOptionEntry options [] = { {"auto", 'a', 0, G_OPTION_ARG_NONE, &run_auto, - "Only run if an initialized ccache is found (default)", NULL}, + "Only run if an initialized ccache is found", NULL}, + /* accepted for compatibility only */ {"always", 'A', 0, G_OPTION_ARG_NONE, &run_always, - "Always run", NULL}, + "Always run (default)", NULL}, { NULL, 0, 0, G_OPTION_ARG_NONE, NULL, NULL, NULL } }; GFileMonitor *monitor = NULL; @@ -1085,10 +1095,7 @@ main (int argc, char *argv[]) if (!ka_dbus_connect (&status)) exit(status); - if (run_always && !run_auto) { - always_run = TRUE; - } - + always_run = !run_auto; if (using_krb5 () || always_run) { g_set_application_name (KA_NAME); @@ -1098,6 +1105,7 @@ main (int argc, char *argv[]) ka_nm_init(); g_timeout_add_seconds (CREDENTIAL_CHECK_INTERVAL, (GSourceFunc)credentials_expiring, applet); + g_idle_add ((GSourceFunc)credentials_expiring_once, applet); monitor = monitor_ccache (applet); ka_dbus_service(applet); diff --git a/src/krb5-auth-dialog.xml b/src/krb5-auth-dialog.ui index f36f537..f36f537 100644 --- a/src/krb5-auth-dialog.xml +++ b/src/krb5-auth-dialog.ui |