summaryrefslogtreecommitdiff
path: root/src/audacious/main.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/audacious/main.cc')
-rw-r--r--src/audacious/main.cc26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/audacious/main.cc b/src/audacious/main.cc
index 2f436ef..8aa7e02 100644
--- a/src/audacious/main.cc
+++ b/src/audacious/main.cc
@@ -28,6 +28,7 @@
#include <libaudcore/hook.h>
#include <libaudcore/i18n.h>
#include <libaudcore/interface.h>
+#include <libaudcore/mainloop.h>
#include <libaudcore/playlist.h>
#include <libaudcore/runtime.h>
#include <libaudcore/tuple.h>
@@ -296,7 +297,10 @@ static void do_commands ()
else if (aud_drct_get_paused ())
aud_drct_pause ();
}
+}
+static void do_commands_at_idle (void *)
+{
if (options.show_jump_box && ! options.headless)
aud_ui_show_jump_to_song ();
if (options.mainwin && ! options.headless)
@@ -377,20 +381,22 @@ int main (int argc, char * * argv)
do_commands ();
- if (check_should_quit ())
- goto QUIT;
+ if (! check_should_quit ())
+ {
+ QueuedFunc at_idle_func;
+ at_idle_func.queue (do_commands_at_idle, nullptr);
- hook_associate ("playback stop", (HookFunction) maybe_quit, nullptr);
- hook_associate ("playlist add complete", (HookFunction) maybe_quit, nullptr);
- hook_associate ("quit", (HookFunction) aud_quit, nullptr);
+ hook_associate ("playback stop", (HookFunction) maybe_quit, nullptr);
+ hook_associate ("playlist add complete", (HookFunction) maybe_quit, nullptr);
+ hook_associate ("quit", (HookFunction) aud_quit, nullptr);
- aud_run ();
+ aud_run ();
- hook_dissociate ("playback stop", (HookFunction) maybe_quit);
- hook_dissociate ("playlist add complete", (HookFunction) maybe_quit);
- hook_dissociate ("quit", (HookFunction) aud_quit);
+ hook_dissociate ("playback stop", (HookFunction) maybe_quit);
+ hook_dissociate ("playlist add complete", (HookFunction) maybe_quit);
+ hook_dissociate ("quit", (HookFunction) aud_quit);
+ }
-QUIT:
#ifdef USE_DBUS
dbus_server_cleanup ();
#endif