mirror of
https://github.com/owntone/owntone-server.git
synced 2024-12-28 08:05:56 -05:00
[player/db] Increment queue version if shuffle mode is turned off
This fixes showing the wrong queue in the player web interface after turing shuffle mode off.
This commit is contained in:
parent
4cf71bafcc
commit
05141480e2
14
src/db.c
14
src/db.c
@ -5963,6 +5963,20 @@ db_queue_reshuffle(uint32_t item_id)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Increment queue version (triggers queue change event)
|
||||
*/
|
||||
int
|
||||
db_queue_inc_version()
|
||||
{
|
||||
int queue_version;
|
||||
|
||||
queue_version = queue_transaction_begin();
|
||||
queue_transaction_end(0, queue_version);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
db_queue_get_count()
|
||||
{
|
||||
|
3
src/db.h
3
src/db.h
@ -853,6 +853,9 @@ db_queue_move_byposrelativetoitem(uint32_t from_pos, uint32_t to_offset, uint32_
|
||||
int
|
||||
db_queue_reshuffle(uint32_t item_id);
|
||||
|
||||
int
|
||||
db_queue_inc_version(void);
|
||||
|
||||
int
|
||||
db_queue_get_count();
|
||||
|
||||
|
34
src/player.c
34
src/player.c
@ -2852,29 +2852,31 @@ static enum command_state
|
||||
shuffle_set(void *arg, int *retval)
|
||||
{
|
||||
union player_arg *cmdarg = arg;
|
||||
char new_shuffle;
|
||||
uint32_t cur_id;
|
||||
|
||||
switch (cmdarg->intval)
|
||||
{
|
||||
case 1:
|
||||
if (!shuffle)
|
||||
{
|
||||
cur_id = cur_streaming ? cur_streaming->item_id : 0;
|
||||
db_queue_reshuffle(cur_id);
|
||||
}
|
||||
/* FALLTHROUGH */
|
||||
case 0:
|
||||
shuffle = cmdarg->intval;
|
||||
break;
|
||||
new_shuffle = (cmdarg->intval == 0) ? 0 : 1;
|
||||
|
||||
default:
|
||||
DPRINTF(E_LOG, L_PLAYER, "Invalid shuffle mode: %d\n", cmdarg->intval);
|
||||
*retval = -1;
|
||||
return COMMAND_END;
|
||||
// Ignore unchanged shuffle mode requests
|
||||
if (new_shuffle == shuffle)
|
||||
goto out;
|
||||
|
||||
// Update queue and notify listeners
|
||||
if (new_shuffle)
|
||||
{
|
||||
cur_id = cur_streaming ? cur_streaming->item_id : 0;
|
||||
db_queue_reshuffle(cur_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
db_queue_inc_version();
|
||||
}
|
||||
|
||||
// Update shuffle mode and notify listeners
|
||||
shuffle = new_shuffle;
|
||||
listener_notify(LISTENER_OPTIONS);
|
||||
|
||||
out:
|
||||
*retval = 0;
|
||||
return COMMAND_END;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user