mirror of
https://github.com/owntone/owntone-server.git
synced 2025-02-05 10:48:09 -05:00
Move last_active check into raop_device_find_or_new()
Removes some of the clutter in the mDNS callback and ensures the check is only done for new devices.
This commit is contained in:
parent
6bfc4a65e2
commit
8cc3d4841f
33
src/player.c
33
src/player.c
@ -2960,7 +2960,9 @@ raop_device_remove_family(const char *name, uint64_t id, int family)
|
|||||||
static struct raop_device *
|
static struct raop_device *
|
||||||
raop_device_find_or_new(uint64_t id)
|
raop_device_find_or_new(uint64_t id)
|
||||||
{
|
{
|
||||||
|
struct player_status status;
|
||||||
struct raop_device *rd;
|
struct raop_device *rd;
|
||||||
|
int ret;
|
||||||
|
|
||||||
for (rd = dev_list; rd; rd = rd->next)
|
for (rd = dev_list; rd; rd = rd->next)
|
||||||
{
|
{
|
||||||
@ -2980,6 +2982,18 @@ raop_device_find_or_new(uint64_t id)
|
|||||||
|
|
||||||
rd->id = id;
|
rd->id = id;
|
||||||
|
|
||||||
|
/* Check if the device was selected last time */
|
||||||
|
if (time(NULL) < dev_deadline)
|
||||||
|
{
|
||||||
|
player_get_status(&status);
|
||||||
|
|
||||||
|
if (status.status == PLAY_STOPPED)
|
||||||
|
{
|
||||||
|
ret = db_config_has_tuple_hex64(VAR_ACTIVE_SPK, id);
|
||||||
|
rd->selected = (ret == 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
rd->next = dev_list;
|
rd->next = dev_list;
|
||||||
dev_list = rd;
|
dev_list = rd;
|
||||||
|
|
||||||
@ -2990,7 +3004,6 @@ raop_device_find_or_new(uint64_t id)
|
|||||||
static void
|
static void
|
||||||
raop_device_cb(const char *name, const char *type, const char *domain, const char *hostname, int family, const char *address, int port, struct keyval *txt)
|
raop_device_cb(const char *name, const char *type, const char *domain, const char *hostname, int family, const char *address, int port, struct keyval *txt)
|
||||||
{
|
{
|
||||||
struct player_status status;
|
|
||||||
struct raop_device *rd;
|
struct raop_device *rd;
|
||||||
cfg_t *apex;
|
cfg_t *apex;
|
||||||
const char *p;
|
const char *p;
|
||||||
@ -2998,7 +3011,6 @@ raop_device_cb(const char *name, const char *type, const char *domain, const cha
|
|||||||
char *password;
|
char *password;
|
||||||
uint64_t id;
|
uint64_t id;
|
||||||
char has_password;
|
char has_password;
|
||||||
char last_active;
|
|
||||||
enum raop_devtype devtype;
|
enum raop_devtype devtype;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -3108,22 +3120,6 @@ raop_device_cb(const char *name, const char *type, const char *domain, const cha
|
|||||||
devtype = RAOP_DEV_APPLETV;
|
devtype = RAOP_DEV_APPLETV;
|
||||||
|
|
||||||
no_am:
|
no_am:
|
||||||
/* Check if the device was selected last time */
|
|
||||||
if (time(NULL) < dev_deadline)
|
|
||||||
{
|
|
||||||
player_get_status(&status);
|
|
||||||
|
|
||||||
if (status.status != PLAY_STOPPED)
|
|
||||||
last_active = 0;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ret = db_config_has_tuple_hex64(VAR_ACTIVE_SPK, id);
|
|
||||||
last_active = (ret == 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
last_active = 0;
|
|
||||||
|
|
||||||
pthread_mutex_lock(&dev_lck);
|
pthread_mutex_lock(&dev_lck);
|
||||||
|
|
||||||
rd = raop_device_find_or_new(id);
|
rd = raop_device_find_or_new(id);
|
||||||
@ -3139,7 +3135,6 @@ raop_device_cb(const char *name, const char *type, const char *domain, const cha
|
|||||||
DPRINTF(E_DBG, L_PLAYER, "Adding AirTunes device %s (password: %s, type %s)\n", name, (password) ? "yes" : "no", raop_devtype[devtype]);
|
DPRINTF(E_DBG, L_PLAYER, "Adding AirTunes device %s (password: %s, type %s)\n", name, (password) ? "yes" : "no", raop_devtype[devtype]);
|
||||||
|
|
||||||
rd->advertised = 1;
|
rd->advertised = 1;
|
||||||
rd->selected = last_active;
|
|
||||||
|
|
||||||
switch (family)
|
switch (family)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user