Auto-resume playback on replace
This commit is contained in:
parent
19605f9b7b
commit
1dbece753e
20
nncmpp.c
20
nncmpp.c
|
@ -2247,12 +2247,20 @@ library_tab_on_action (enum action action)
|
||||||
return parent != NULL;
|
return parent != NULL;
|
||||||
}
|
}
|
||||||
case ACTION_MPD_REPLACE:
|
case ACTION_MPD_REPLACE:
|
||||||
// FIXME: we also need to play it if we've been playing things already
|
|
||||||
if (x.type != LIBRARY_DIR && x.type != LIBRARY_FILE)
|
if (x.type != LIBRARY_DIR && x.type != LIBRARY_FILE)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
MPD_SIMPLE ("clear");
|
// Clears the playlist (which stops playback), add what user wanted
|
||||||
MPD_SIMPLE ("add", x.path);
|
// to replace it with, and eventually restore playback;
|
||||||
|
// I can't think of a reliable alternative that omits the "play"
|
||||||
|
mpd_client_list_begin (c);
|
||||||
|
mpd_client_send_command (c, "clear", NULL);
|
||||||
|
mpd_client_send_command (c, "add", x.path, NULL);
|
||||||
|
if (g.state == PLAYER_PLAYING)
|
||||||
|
mpd_client_send_command (c, "play", NULL);
|
||||||
|
mpd_client_list_end (c);
|
||||||
|
mpd_client_add_task (c, mpd_on_simple_response, NULL);
|
||||||
|
mpd_client_idle (c, 0);
|
||||||
return true;
|
return true;
|
||||||
case ACTION_MPD_ADD:
|
case ACTION_MPD_ADD:
|
||||||
if (x.type != LIBRARY_DIR && x.type != LIBRARY_FILE)
|
if (x.type != LIBRARY_DIR && x.type != LIBRARY_FILE)
|
||||||
|
@ -2400,8 +2408,6 @@ streams_tab_on_downloaded (CURLMsg *msg, struct poller_curl_task *task)
|
||||||
}
|
}
|
||||||
|
|
||||||
mpd_client_list_begin (c);
|
mpd_client_list_begin (c);
|
||||||
|
|
||||||
// FIXME: we also need to play it if we've been playing things already
|
|
||||||
if (self->replace)
|
if (self->replace)
|
||||||
mpd_client_send_command (c, "clear", NULL);
|
mpd_client_send_command (c, "clear", NULL);
|
||||||
|
|
||||||
|
@ -2412,10 +2418,12 @@ streams_tab_on_downloaded (CURLMsg *msg, struct poller_curl_task *task)
|
||||||
strv_append (&links, uri);
|
strv_append (&links, uri);
|
||||||
for (size_t i = 0; i < links.len; i++)
|
for (size_t i = 0; i < links.len; i++)
|
||||||
mpd_client_send_command (c, "add", links.vector[i], NULL);
|
mpd_client_send_command (c, "add", links.vector[i], NULL);
|
||||||
|
if (self->replace && g.state == PLAYER_PLAYING)
|
||||||
|
mpd_client_send_command (c, "play", NULL);
|
||||||
|
|
||||||
strv_free (&links);
|
strv_free (&links);
|
||||||
mpd_client_list_end (c);
|
mpd_client_list_end (c);
|
||||||
mpd_client_add_task (c, NULL, NULL);
|
mpd_client_add_task (c, mpd_on_simple_response, NULL);
|
||||||
mpd_client_idle (c, 0);
|
mpd_client_idle (c, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue