void LauncherApplication::setSnStartupSequence(SnStartupSequence* sequence) { if (sequence != NULL) { if (!sn_startup_sequence_get_completed(sequence)) { /* 'launching' property becomes true for a few seconds */ m_launching_timer.start(); } else { m_launching_timer.stop(); } sn_startup_sequence_ref(sequence); } m_snStartupSequence.reset(sequence); nameChanged(name()); iconChanged(icon()); executableChanged(executable()); launchingChanged(launching()); }
static void sn_event_func(SnMonitorEvent *ev, gpointer data) { SnStartupSequence *seq; gboolean change = FALSE; if (!(seq = sn_monitor_event_get_startup_sequence(ev))) return; switch (sn_monitor_event_get_type(ev)) { case SN_MONITOR_EVENT_INITIATED: sn_startup_sequence_ref(seq); sn_waits = g_slist_prepend(sn_waits, seq); /* 20 second timeout for apps to start if the launcher doesn't have a timeout */ obt_main_loop_timeout_add(ob_main_loop, 20 * G_USEC_PER_SEC, sn_wait_timeout, seq, g_direct_equal, (GDestroyNotify)sn_startup_sequence_unref); change = TRUE; break; case SN_MONITOR_EVENT_CHANGED: /* XXX feedback changed? */ change = TRUE; break; case SN_MONITOR_EVENT_COMPLETED: case SN_MONITOR_EVENT_CANCELED: if ((seq = sequence_find(sn_startup_sequence_get_id(seq)))) { sn_waits = g_slist_remove(sn_waits, seq); obt_main_loop_timeout_remove_data(ob_main_loop, sn_wait_timeout, seq, FALSE); change = TRUE; } break; }; if (change) screen_set_root_cursor(); }
static void sn_event_func(SnMonitorEvent *ev, gpointer data) { SnStartupSequence *seq; gboolean change = FALSE; if (!(seq = sn_monitor_event_get_startup_sequence(ev))) return; switch (sn_monitor_event_get_type(ev)) { case SN_MONITOR_EVENT_INITIATED: sn_startup_sequence_ref(seq); sn_waits = g_slist_prepend(sn_waits, seq); /* 20 second timeout for apps to start if the launcher doesn't have a timeout */ g_timeout_add_full(G_PRIORITY_DEFAULT, 20 * 1000, sn_wait_timeout, seq, (GDestroyNotify)sn_startup_sequence_unref); change = TRUE; break; case SN_MONITOR_EVENT_CHANGED: /* XXX feedback changed? */ change = TRUE; break; case SN_MONITOR_EVENT_COMPLETED: case SN_MONITOR_EVENT_CANCELED: if ((seq = sequence_find(sn_startup_sequence_get_id(seq)))) { sn_waits = g_slist_remove(sn_waits, seq); g_source_remove_by_user_data(seq); change = TRUE; } break; }; if (change) screen_set_root_cursor(); }
/* sn_startup_sequence_ref returns void, so make a * wrapper which returns self */ static SnStartupSequence * sequence_ref (SnStartupSequence *sequence) { sn_startup_sequence_ref (sequence); return sequence; }