X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=grab_client.c;h=de69f074efceb6869b61b76391b38077d0061662;hp=de6df6dfddae9d9f24e33323fadc762fd326acb0;hb=d16fe3df649cb48d5ffa26187da3dad4c3066646;hpb=566c81c69d90ae7585b6ede886f9cfc37c2fed02 diff --git a/grab_client.c b/grab_client.c index de6df6df..de69f074 100644 --- a/grab_client.c +++ b/grab_client.c @@ -8,8 +8,6 @@ #include #include -#include -#include #include "para.h" #include "list.h" @@ -62,9 +60,9 @@ struct grab_client { }; /* Grab clients that are attached to a btr node. */ -INITIALIZED_LIST_HEAD(active_grab_client_list); +static INITIALIZED_LIST_HEAD(active_grab_client_list); /* Grab clients that are not currently attached any btr node. */ -INITIALIZED_LIST_HEAD(inactive_grab_client_list); +static INITIALIZED_LIST_HEAD(inactive_grab_client_list); static int gc_write(struct grab_client *gc, char *buf, size_t len) { @@ -117,7 +115,7 @@ static void gc_post_select(struct sched *s, struct task *t); * * \param gc The grab client to activate. */ -static void gc_activate(struct grab_client *gc) +static void gc_activate(struct grab_client *gc, struct sched *s) { struct btr_node *root = audiod_get_btr_root(), *parent; char *name = gc->name? gc->name : "grab"; @@ -136,7 +134,7 @@ static void gc_activate(struct grab_client *gc) snprintf(gc->task.status, sizeof(gc->task.status) - 1, "%s", name); gc->task.status[sizeof(gc->task.status) - 1] = '\0'; gc->task.error = 0; - register_task(&gc->task); + register_task(s, &gc->task); } /** @@ -150,7 +148,7 @@ static void gc_activate(struct grab_client *gc) * This function also garbage collects all grab clients whose tasks have been * unscheduled. */ -void activate_grab_clients(void) +void activate_grab_clients(struct sched *s) { struct grab_client *gc, *tmp; @@ -160,7 +158,7 @@ void activate_grab_clients(void) free(gc); continue; } - gc_activate(gc); + gc_activate(gc, s); } } @@ -267,6 +265,7 @@ static int gc_check_args(int argc, char **argv, struct grab_client *gc) * \param fd The file descriptor of the client. * \param argc Argument count. * \param argv Argument vector. + * \param s The scheduler to register the grab client task to. * * If the command line options given by \a argc and \a argv are valid. * allocate a struct grab_client and initialize it with this valid @@ -277,7 +276,7 @@ static int gc_check_args(int argc, char **argv, struct grab_client *gc) * * \return Standard. */ -int grab_client_new(int fd, int argc, char **argv) +int grab_client_new(int fd, int argc, char **argv, struct sched *s) { int ret; struct grab_client *gc = para_calloc(sizeof(struct grab_client)); @@ -287,7 +286,7 @@ int grab_client_new(int fd, int argc, char **argv) goto err_out; gc->fd = fd; para_list_add(&gc->node, &inactive_grab_client_list); - gc_activate(gc); + gc_activate(gc, s); return 1; err_out: free(gc);