mirror of
https://github.com/owntone/owntone-server.git
synced 2024-12-27 15:45:56 -05:00
[outputs] Fix crash, invalid reference to device after outputs_device_add
This commit is contained in:
parent
b7add1d0fa
commit
c74b305983
@ -527,7 +527,7 @@ outputs_listener_notify(void)
|
|||||||
|
|
||||||
/* ---------------------------- Called by player ---------------------------- */
|
/* ---------------------------- Called by player ---------------------------- */
|
||||||
|
|
||||||
int
|
struct output_device *
|
||||||
outputs_device_add(struct output_device *add, bool new_deselect, int default_volume)
|
outputs_device_add(struct output_device *add, bool new_deselect, int default_volume)
|
||||||
{
|
{
|
||||||
struct output_device *device;
|
struct output_device *device;
|
||||||
@ -603,7 +603,7 @@ outputs_device_add(struct output_device *add, bool new_deselect, int default_vol
|
|||||||
|
|
||||||
listener_notify(LISTENER_SPEAKER);
|
listener_notify(LISTENER_SPEAKER);
|
||||||
|
|
||||||
return 0;
|
return device;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -266,7 +266,10 @@ outputs_listener_notify(void);
|
|||||||
|
|
||||||
/* ---------------------------- Called by player ---------------------------- */
|
/* ---------------------------- Called by player ---------------------------- */
|
||||||
|
|
||||||
int
|
// Ownership of *add is transferred, so don't address after calling. Instead you
|
||||||
|
// can address the return value (which is not the same if the device was already
|
||||||
|
// in the list.
|
||||||
|
struct output_device *
|
||||||
outputs_device_add(struct output_device *add, bool new_deselect, int default_volume);
|
outputs_device_add(struct output_device *add, bool new_deselect, int default_volume);
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -794,8 +794,8 @@ session_update_read_next(void)
|
|||||||
static void
|
static void
|
||||||
session_update_read_eof(void)
|
session_update_read_eof(void)
|
||||||
{
|
{
|
||||||
pb_session.reading_now->read_end = pb_session.pos - 1;
|
pb_session.reading_now->read_end = pb_session.pos;
|
||||||
pb_session.reading_now->play_end = pb_session.pos - 1 + pb_session.reading_now->output_buffer_samples;
|
pb_session.reading_now->play_end = pb_session.pos + pb_session.reading_now->output_buffer_samples;
|
||||||
|
|
||||||
source_free(&pb_session.reading_prev);
|
source_free(&pb_session.reading_prev);
|
||||||
pb_session.reading_prev = pb_session.reading_now;
|
pb_session.reading_prev = pb_session.reading_now;
|
||||||
@ -1196,9 +1196,10 @@ device_add(void *arg, int *retval)
|
|||||||
// Never turn on new devices during playback
|
// Never turn on new devices during playback
|
||||||
new_deselect = (player_state == PLAY_PLAYING);
|
new_deselect = (player_state == PLAY_PLAYING);
|
||||||
|
|
||||||
*retval = outputs_device_add(device, new_deselect, default_volume);
|
device = outputs_device_add(device, new_deselect, default_volume);
|
||||||
|
*retval = device ? 0 : -1;
|
||||||
|
|
||||||
if (device->selected)
|
if (device && device->selected)
|
||||||
speaker_select_output(device);
|
speaker_select_output(device);
|
||||||
|
|
||||||
return COMMAND_END;
|
return COMMAND_END;
|
||||||
|
Loading…
Reference in New Issue
Block a user