make startup notification a little more robust. obconf is just broken, between

the application and it's .desktop.
This commit is contained in:
Dana Jansens 2007-03-10 22:52:50 +00:00
parent 3f7ad89510
commit ec67e96583
3 changed files with 10 additions and 7 deletions

View file

@ -299,7 +299,7 @@ void client_manage(Window window)
client_get_all(self); client_get_all(self);
client_restore_session_state(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 /* update the focus lists, do this before the call to change_state or
it can end up in the list twice! */ it can end up in the list twice! */

View file

@ -164,8 +164,8 @@ static void sn_event_func(SnMonitorEvent *ev, gpointer data)
case SN_MONITOR_EVENT_INITIATED: case SN_MONITOR_EVENT_INITIATED:
d = wait_data_new(seq); d = wait_data_new(seq);
sn_waits = g_slist_prepend(sn_waits, d); sn_waits = g_slist_prepend(sn_waits, d);
/* 30 second timeout for apps to start */ /* 15 second timeout for apps to start */
ob_main_loop_timeout_add(ob_main_loop, 30 * G_USEC_PER_SEC, ob_main_loop_timeout_add(ob_main_loop, 15 * G_USEC_PER_SEC,
sn_wait_timeout, d, sn_wait_destroy); sn_wait_timeout, d, sn_wait_destroy);
change = TRUE; change = TRUE;
break; break;
@ -188,14 +188,17 @@ static void sn_event_func(SnMonitorEvent *ev, gpointer data)
screen_set_root_cursor(); screen_set_root_cursor();
} }
void sn_app_started(gchar *wmclass) void sn_app_started(const gchar *id, const gchar *wmclass)
{ {
GSList *it; GSList *it;
for (it = sn_waits; it; it = g_slist_next(it)) { for (it = sn_waits; it; it = g_slist_next(it)) {
ObWaitData *d = it->data; ObWaitData *d = it->data;
if (sn_startup_sequence_get_wmclass(d->seq) && const gchar *seqid, *seqclass;
!strcmp(sn_startup_sequence_get_wmclass(d->seq), wmclass)) 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); sn_startup_sequence_complete(d->seq);
break; break;

View file

@ -27,7 +27,7 @@ void sn_shutdown(gboolean reconfig);
gboolean sn_app_starting(); gboolean sn_app_starting();
/*! Notify that an app has started */ /*! 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 /*! Get the desktop requested via the startup-notiication protocol if one
was requested */ was requested */