[chromecast] Try to improve session handling + actually remove device on mdns cb

This commit is contained in:
ejurgensen
2016-02-02 22:37:08 +01:00
parent e4d209f8a0
commit 483a428bae
2 changed files with 104 additions and 78 deletions

View File

@@ -1885,20 +1885,21 @@ device_streaming_cb(struct output_device *device, struct output_session *session
DPRINTF(E_DBG, L_PLAYER, "CALLBACK streaming_cb %d\n", status);
ret = device_check(device);
if (ret < 0)
{
DPRINTF(E_LOG, L_PLAYER, "Output device disappeared during streaming!\n");
output_sessions--;
return;
}
if (status == OUTPUT_STATE_FAILED)
{
output_sessions--;
ret = device_check(device);
if (ret < 0)
{
DPRINTF(E_WARN, L_PLAYER, "Output device disappeared during streaming!\n");
return;
}
DPRINTF(E_LOG, L_PLAYER, "The %s device '%s' FAILED\n", device->type_name, device->name);
output_sessions--;
if (player_state == PLAY_PLAYING)
speaker_deselect_output(device);
@@ -1906,21 +1907,16 @@ device_streaming_cb(struct output_device *device, struct output_session *session
if (!device->advertised)
device_remove(device);
if (output_sessions == 0)
playback_abort();
}
else if (status == OUTPUT_STATE_STOPPED)
{
output_sessions--;
ret = device_check(device);
if (ret < 0)
{
DPRINTF(E_WARN, L_PLAYER, "Output device disappeared during streaming!\n");
return;
}
DPRINTF(E_INFO, L_PLAYER, "The %s device '%s' stopped\n", device->type_name, device->name);
output_sessions--;
device->session = NULL;
if (!device->advertised)