mirror of
https://github.com/owntone/owntone-server.git
synced 2024-12-29 00:23:23 -05:00
[player] device_restart_cb() should also handle failures due to device verification
This commit is contained in:
parent
7626b6c535
commit
5e48a68525
14
src/player.c
14
src/player.c
@ -1676,10 +1676,12 @@ device_probe_cb(struct output_device *device, struct output_session *session, en
|
|||||||
static void
|
static void
|
||||||
device_restart_cb(struct output_device *device, struct output_session *session, enum output_device_state status)
|
device_restart_cb(struct output_device *device, struct output_session *session, enum output_device_state status)
|
||||||
{
|
{
|
||||||
|
int retval;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
DPRINTF(E_DBG, L_PLAYER, "Callback from %s to device_restart_cb\n", outputs_name(device->type));
|
DPRINTF(E_DBG, L_PLAYER, "Callback from %s to device_restart_cb\n", outputs_name(device->type));
|
||||||
|
|
||||||
|
retval = commands_exec_returnvalue(cmdbase);
|
||||||
ret = device_check(device);
|
ret = device_check(device);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
@ -1688,9 +1690,17 @@ device_restart_cb(struct output_device *device, struct output_session *session,
|
|||||||
outputs_status_cb(session, device_lost_cb);
|
outputs_status_cb(session, device_lost_cb);
|
||||||
outputs_device_stop(session);
|
outputs_device_stop(session);
|
||||||
|
|
||||||
|
if (retval != -2)
|
||||||
|
retval = -1;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (status == OUTPUT_STATE_PASSWORD)
|
||||||
|
{
|
||||||
|
status = OUTPUT_STATE_FAILED;
|
||||||
|
retval = -2;
|
||||||
|
}
|
||||||
|
|
||||||
if (status == OUTPUT_STATE_FAILED)
|
if (status == OUTPUT_STATE_FAILED)
|
||||||
{
|
{
|
||||||
speaker_deselect_output(device);
|
speaker_deselect_output(device);
|
||||||
@ -1698,6 +1708,8 @@ device_restart_cb(struct output_device *device, struct output_session *session,
|
|||||||
if (!device->advertised)
|
if (!device->advertised)
|
||||||
device_remove(device);
|
device_remove(device);
|
||||||
|
|
||||||
|
if (retval != -2)
|
||||||
|
retval = -1;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1707,7 +1719,7 @@ device_restart_cb(struct output_device *device, struct output_session *session,
|
|||||||
outputs_status_cb(session, device_streaming_cb);
|
outputs_status_cb(session, device_streaming_cb);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
commands_exec_end(cmdbase, 0);
|
commands_exec_end(cmdbase, retval);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Internal abort routine */
|
/* Internal abort routine */
|
||||||
|
Loading…
Reference in New Issue
Block a user