/*
- * Copyright (C) 2005-2009 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2010 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
#include <regex.h>
#include <sys/types.h>
#include <dirent.h>
+#include <stdbool.h>
#include "para.h"
#include "audiod.cmdline.h"
#include "list.h"
#include "sched.h"
#include "ggo.h"
+#include "buffer_tree.h"
#include "filter.h"
#include "grab_client.h"
#include "error.h"
#include "net.h"
#include "daemon.h"
#include "string.h"
+#include "write.h"
#include "fd.h"
#include "audiod_command_list.h"
struct list_head node;
};
-static struct list_head client_list;
-static int client_list_initialized;
+static INITIALIZED_LIST_HEAD(client_list);
static int num_clients;
/** The list of all status items used by para_{server,audiod,gui}. */
{
struct stat_client *sc;
- if (!client_list_initialized)
- return;
list_for_each_entry(sc, &client_list, node)
PARA_INFO_LOG("stat client on fd %d\n", sc->fd);
}
MAX_STAT_CLIENTS);
return -E_TOO_MANY_CLIENTS;
}
- if (!client_list_initialized) {
- INIT_LIST_HEAD(&client_list);
- client_list_initialized = 1;
- }
PARA_INFO_LOG("adding client on fd %d\n", fd);
new_client = para_calloc(sizeof(struct stat_client));
new_client->fd = fd;
struct para_buffer pfpb = {.flags = PBF_SIZE_PREFIX};
const uint64_t one = 1;
- if (!client_list_initialized)
- return;
list_for_each_entry_safe(sc, tmp, &client_list, node) {
int fd = sc->fd, ret;
static int get_play_time_slot_num(void)
{
- int i, oldest = -1;
+ int i, oldest_slot = -1;
+ struct timeval oldest_wstime = {0, 0};
FOR_EACH_SLOT(i) {
struct slot_info *s = &slot[i];
- if (!s->wng)
+ struct timeval wstime;
+ if (!s->wns)
continue;
- if (oldest >= 0 && tv_diff(&s->wstime, &slot[oldest].wstime,
- NULL) > 0)
+ btr_get_node_start(s->wns[0].btrn, &wstime);
+ if (oldest_slot >= 0 && tv_diff(&wstime, &oldest_wstime, NULL) > 0)
continue;
- oldest = i;
+ oldest_wstime = wstime;
+ oldest_slot = i;
}
- return oldest;
+ //PARA_CRIT_LOG("oldest slot: %d\n", oldest_slot);
+ return oldest_slot;
}
__malloc static char *decoder_flags(void)
char flag = '0';
if (s->receiver_node)
flag += 1;
- if (s->fc)
+ if (s->fns)
flag += 2;
- if (s->wng)
+ if (s->wns)
flag += 4;
flags[i] = flag;
}