Merge branch 't/interactive'
[paraslash.git] / grab_client.c
index 9109c2f8f6c5f1978eddd356ff7f8e979d73dd8a..e5f42416f57e87256d3e8e77eb94fa26c384046a 100644 (file)
@@ -116,7 +116,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";
@@ -135,7 +135,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);
 }
 
 /**
@@ -149,7 +149,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;
 
@@ -159,7 +159,7 @@ void activate_grab_clients(void)
                        free(gc);
                        continue;
                }
-               gc_activate(gc);
+               gc_activate(gc, s);
        }
 }
 
@@ -266,6 +266,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
@@ -276,7 +277,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));
@@ -286,7 +287,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);