mirror of
https://github.com/owntone/owntone-server.git
synced 2025-01-14 16:25:03 -05:00
[player] Fix incorrect player state while buffering (partial fix for #738)
Player would return PLAYER_PLAYING when resuming playback after a pause, but it should initially return PLAYER_PAUSED because it is still buffering.
This commit is contained in:
parent
1948dcb959
commit
f793ad9f3e
14
src/player.c
14
src/player.c
@ -714,10 +714,6 @@ session_update_play_start(void)
|
|||||||
pb_session.playing_now = pb_session.reading_now;
|
pb_session.playing_now = pb_session.reading_now;
|
||||||
else
|
else
|
||||||
pb_session.playing_now = pb_session.reading_prev;
|
pb_session.playing_now = pb_session.reading_prev;
|
||||||
|
|
||||||
// This is a stupid work-around to make sure pos_ms is non-zero, because a
|
|
||||||
// zero value means that get_status() tells the clients that we are paused.
|
|
||||||
pb_session.playing_now->pos_ms = pb_session.playing_now->seek_ms + 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -973,11 +969,11 @@ event_read(int nsamples)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the playback position will be passing the play_start position
|
|
||||||
if (pb_session.pos < pb_session.playing_now->play_start && pb_session.pos + nsamples >= pb_session.playing_now->play_start)
|
|
||||||
event_play_start();
|
|
||||||
|
|
||||||
session_update_read(nsamples);
|
session_update_read(nsamples);
|
||||||
|
|
||||||
|
// Check if the playback position passed the play_start position
|
||||||
|
if (pb_session.pos - nsamples < pb_session.playing_now->play_start && pb_session.pos >= pb_session.playing_now->play_start)
|
||||||
|
event_play_start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1705,7 +1701,7 @@ get_status(void *arg, int *retval)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case PLAY_PLAYING:
|
case PLAY_PLAYING:
|
||||||
if (pb_session.playing_now->pos_ms == 0)
|
if (pb_session.playing_now->play_start == 0 || pb_session.pos < pb_session.playing_now->play_start)
|
||||||
{
|
{
|
||||||
DPRINTF(E_DBG, L_PLAYER, "Player status: playing (buffering)\n");
|
DPRINTF(E_DBG, L_PLAYER, "Player status: playing (buffering)\n");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user