From ec67e96583fe0a1f9a1ef2f75b9293117c115319 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sat, 10 Mar 2007 22:52:50 +0000 Subject: [PATCH] make startup notification a little more robust. obconf is just broken, between the application and it's .desktop. --- openbox/client.c | 2 +- openbox/startupnotify.c | 13 ++++++++----- openbox/startupnotify.h | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/openbox/client.c b/openbox/client.c index c70d6591..5441dbd9 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -299,7 +299,7 @@ void client_manage(Window window) client_get_all(self); client_restore_session_state(self); - sn_app_started(self->class); + sn_app_started(self->startup_id, self->class); /* update the focus lists, do this before the call to change_state or it can end up in the list twice! */ diff --git a/openbox/startupnotify.c b/openbox/startupnotify.c index 66258c82..dbb633ef 100644 --- a/openbox/startupnotify.c +++ b/openbox/startupnotify.c @@ -164,8 +164,8 @@ static void sn_event_func(SnMonitorEvent *ev, gpointer data) case SN_MONITOR_EVENT_INITIATED: d = wait_data_new(seq); sn_waits = g_slist_prepend(sn_waits, d); - /* 30 second timeout for apps to start */ - ob_main_loop_timeout_add(ob_main_loop, 30 * G_USEC_PER_SEC, + /* 15 second timeout for apps to start */ + ob_main_loop_timeout_add(ob_main_loop, 15 * G_USEC_PER_SEC, sn_wait_timeout, d, sn_wait_destroy); change = TRUE; break; @@ -188,14 +188,17 @@ static void sn_event_func(SnMonitorEvent *ev, gpointer data) screen_set_root_cursor(); } -void sn_app_started(gchar *wmclass) +void sn_app_started(const gchar *id, const gchar *wmclass) { GSList *it; for (it = sn_waits; it; it = g_slist_next(it)) { ObWaitData *d = it->data; - if (sn_startup_sequence_get_wmclass(d->seq) && - !strcmp(sn_startup_sequence_get_wmclass(d->seq), wmclass)) + const gchar *seqid, *seqclass; + seqid = sn_startup_sequence_get_id(d->seq); + seqclass = sn_startup_sequence_get_wmclass(d->seq); + if ((seqid && id && !strcmp(seqid, id)) || + (seqclass && wmclass && !strcmp(seqclass, wmclass))) { sn_startup_sequence_complete(d->seq); break; diff --git a/openbox/startupnotify.h b/openbox/startupnotify.h index 5d305afd..1a6d47a1 100644 --- a/openbox/startupnotify.h +++ b/openbox/startupnotify.h @@ -27,7 +27,7 @@ void sn_shutdown(gboolean reconfig); gboolean sn_app_starting(); /*! Notify that an app has started */ -void sn_app_started(gchar *wmclass); +void sn_app_started(const gchar *id, const gchar *wmclass); /*! Get the desktop requested via the startup-notiication protocol if one was requested */ -- 2.44.0