# HG changeset patch # User John Lindgren # Date 1239408165 14400 # Node ID ca837b93ad0f487fdd56c2dd22dee87de7c2bd27 # Parent 62cb85252393601ef50a58441baf059bbbe35959 Fix "audacious -p" crash and failing to play on startup diff -r 62cb85252393 -r ca837b93ad0f src/audlegacy/auddrct.c --- a/src/audlegacy/auddrct.c Fri Apr 10 01:02:50 2009 -0400 +++ b/src/audlegacy/auddrct.c Fri Apr 10 20:02:45 2009 -0400 @@ -106,7 +106,7 @@ if (playback_get_paused()) playback_pause(); else if (playlist_get_length(playlist_get_active())) - event_queue("playback initiate", (gpointer)0xdeadbeef); // to avoid crash at startup. --yaz + playback_initiate (); else mainwin_eject_pushed(); return; diff -r 62cb85252393 -r ca837b93ad0f src/audlegacy/main.c --- a/src/audlegacy/main.c Fri Apr 10 01:02:50 2009 -0400 +++ b/src/audlegacy/main.c Fri Apr 10 20:02:45 2009 -0400 @@ -340,101 +340,64 @@ } static void -handle_cmd_line_options(gboolean skip) +handle_cmd_line_options_first (void) { - gboolean is_running = FALSE; - #ifdef USE_DBUS - DBusGProxy *session = audacious_get_dbus_proxy(); - - if (skip) - is_running = audacious_remote_is_running(session); + DBusGProxy * session; #endif - - if (options.version) - { - print_version(); - exit(EXIT_SUCCESS); - } - - if (options.interface == NULL) - { - mcs_handle_t *db = cfg_db_open(); - cfg_db_get_string(db, NULL, "interface", &options.interface); - - if (options.interface == NULL) - options.interface = g_strdup("legacy"); - } - - handle_cmd_line_filenames(is_running); - + if (options.version) { + print_version (); + exit (EXIT_SUCCESS); + } #ifdef USE_DBUS - if (is_running) - { - if (options.rew) - audacious_remote_playlist_prev(session); - - if (options.play) - audacious_remote_play(session); - - if (options.pause) - audacious_remote_pause(session); - - if (options.stop) - audacious_remote_stop(session); - - if (options.fwd) - audacious_remote_playlist_next(session); + session = audacious_get_dbus_proxy (); + if (audacious_remote_is_running (session)) { + handle_cmd_line_filenames (TRUE); + if (options.rew) + audacious_remote_playlist_prev (session); + if (options.play) + audacious_remote_play (session); + if (options.pause) + audacious_remote_pause (session); + if (options.stop) + audacious_remote_stop (session); + if (options.fwd) + audacious_remote_playlist_next (session); + if (options.play_pause) + audacious_remote_play_pause (session); + if (options.show_jump_box) + audacious_remote_show_jtf_box (session); + if (options.mainwin) + audacious_remote_main_win_toggle (session, 1); + if (options.activate) + audacious_remote_activate (session); + exit (EXIT_SUCCESS); + } +#endif + if (options.interface == NULL) { + mcs_handle_t * db = cfg_db_open (); + cfg_db_get_string (db, NULL, "interface", & options.interface); + if (options.interface == NULL) + options.interface = g_strdup ("legacy"); + } +} - if (options.play_pause) - audacious_remote_play_pause(session); - - if (options.show_jump_box) - audacious_remote_show_jtf_box(session); - - if (options.mainwin) - audacious_remote_main_win_toggle(session, TRUE); - - if (options.activate) - audacious_remote_activate(session); - - exit(EXIT_SUCCESS); - } /* is_running */ - else -#endif - { - if (options.rew) - drct_pl_prev(); - - if (options.play) - drct_play(); - - if (options.pause) - drct_pause(); - - if (options.stop) - drct_stop(); - - if (options.fwd) - drct_pl_next(); - - if (options.play_pause) - { - if (drct_get_paused()) - drct_play(); - else - drct_pause(); - } - - if (options.show_jump_box) - drct_jtf_show(); - - if (options.mainwin) - drct_main_win_toggle(TRUE); - - if (options.activate) - drct_activate(); - } /* !is_running */ +static void +handle_cmd_line_options (void) +{ + handle_cmd_line_filenames (FALSE); + if (options.rew) + drct_pl_prev (); + if (options.play || options.play_pause) + g_idle_add (aud_start_playback, NULL); + if (options.fwd) + drct_pl_next (); + if (options.show_jump_box) + drct_jtf_show (); + if (options.mainwin) + drct_main_win_toggle (TRUE); + if (options.activate) + drct_activate (); } static void @@ -569,7 +532,7 @@ signal_handlers_init(); g_message("Handling commandline options, part #1"); - handle_cmd_line_options(TRUE); + handle_cmd_line_options_first (); if (g_ascii_strcasecmp(options.interface, "headless")) /* XXX */ { @@ -599,7 +562,7 @@ playlist_system_init(); g_message("Handling commandline options, part #2"); - handle_cmd_line_options(FALSE); + handle_cmd_line_options (); g_message("Playlist scanner thread startup"); playlist_start_get_info_thread();