Merge branch 't/testsuite'
[paraslash.git] / grab_client.c
index 2b8235b4e800e260263850dde263a0de224a605e..8e6715036769dace2f633d867d4bdb436901b6e0 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright (C) 2006-2009 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2011 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -78,7 +78,7 @@ static int gc_write(struct grab_client *gc, char *buf, size_t len)
                if (gc->mode == GM_SLOPPY)
                        return len;
        }
                if (gc->mode == GM_SLOPPY)
                        return len;
        }
-       ret = write_nonblock(gc->fd, buf, len, 0);
+       ret = write_nonblock(gc->fd, buf, len);
        if (ret < 0)
                goto err;
        if (ret > 0)
        if (ret < 0)
                goto err;
        if (ret > 0)
@@ -101,11 +101,8 @@ static void gc_pre_select(struct sched *s, struct task *t)
 
        if (ret == 0)
                return;
 
        if (ret == 0)
                return;
-       if (ret < 0) {
-               s->timeout.tv_sec = 0;
-               s->timeout.tv_usec = 0;
-               return;
-       }
+       if (ret < 0)
+               sched_min_delay(s);
        para_fd_set(gc->fd, &s->wfds, &s->max_fileno);
 }
 
        para_fd_set(gc->fd, &s->wfds, &s->max_fileno);
 }
 
@@ -132,7 +129,8 @@ static void gc_activate(struct grab_client *gc)
                return;
        PARA_INFO_LOG("activating fd %d\n", gc->fd);
        list_move(&gc->node, &active_grab_client_list);
                return;
        PARA_INFO_LOG("activating fd %d\n", gc->fd);
        list_move(&gc->node, &active_grab_client_list);
-       gc->btrn = btr_new_node(name, parent, NULL, NULL);
+       gc->btrn = btr_new_node(&(struct btr_node_description)
+               EMBRACE(.name = name, .parent = parent));
        if (!gc->task.pre_select) {
                gc->task.pre_select = gc_pre_select;
                gc->task.post_select = gc_post_select;
        if (!gc->task.pre_select) {
                gc->task.pre_select = gc_pre_select;
                gc->task.post_select = gc_post_select;