X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=grab_client.c;h=c410b3b934f398a6eb6bbd480f5d7e8f31535d62;hp=2b8235b4e800e260263850dde263a0de224a605e;hb=d09716570fc81b71d6ad3d5f543b5f8acf1a5e33;hpb=fe838e619339649b050ef71715127fe6b8e872b6 diff --git a/grab_client.c b/grab_client.c index 2b8235b4..c410b3b9 100644 --- a/grab_client.c +++ b/grab_client.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2009 Andre Noll + * Copyright (C) 2006-2011 Andre Noll * * 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; } - ret = write_nonblock(gc->fd, buf, len, 0); + ret = write_nonblock(gc->fd, buf, len); 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) { - 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); } @@ -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); - 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; @@ -158,7 +156,7 @@ void activate_grab_clients(void) struct grab_client *gc, *tmp; list_for_each_entry_safe(gc, tmp, &inactive_grab_client_list, node) { - if (gc->task.error == -E_TASK_UNREGISTERED) { + if (gc->task.error < 0) { list_del(&gc->node); free(gc); continue;