From 0ed390d44a6243edf7847c2b50ff1f59a025f07b Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Fri, 26 Jan 2007 20:00:32 +0000 Subject: [PATCH] Changed my mind about r7164. Instead of checking for zero flags inside one single uxsel front end, better to do it centrally and avoid passing zero flags on to the front end in the first place. I'm sure other similarly structured front ends could get confused by it too. [originally from svn r7171] [r7164 == 65f9735b95cc8bbf5e7e23f165c01fd3cddf9ec5] --- unix/gtkwin.c | 9 +++------ unix/uxsel.c | 22 +++++++++------------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/unix/gtkwin.c b/unix/gtkwin.c index c615367a..3743672a 100644 --- a/unix/gtkwin.c +++ b/unix/gtkwin.c @@ -2695,15 +2695,12 @@ int uxsel_input_add(int fd, int rwx) { if (rwx & 1) flags |= GDK_INPUT_READ; if (rwx & 2) flags |= GDK_INPUT_WRITE; if (rwx & 4) flags |= GDK_INPUT_EXCEPTION; - if (flags) - return gdk_input_add(fd, flags, fd_input_func, NULL); - else - return -1; + assert(flags); + return gdk_input_add(fd, flags, fd_input_func, NULL); } void uxsel_input_remove(int id) { - if (id > 0) - gdk_input_remove(id); + gdk_input_remove(id); } char *guess_derived_font_name(GdkFont *font, int bold, int wide) diff --git a/unix/uxsel.c b/unix/uxsel.c index 0383faa6..e2979c9a 100644 --- a/unix/uxsel.c +++ b/unix/uxsel.c @@ -62,22 +62,18 @@ void uxsel_init(void) void uxsel_set(int fd, int rwx, uxsel_callback_fn callback) { - struct fd *newfd = snew(struct fd); - struct fd *oldfd; + struct fd *newfd; - newfd->fd = fd; - newfd->rwx = rwx; - newfd->callback = callback; + uxsel_del(fd); - oldfd = find234(fds, newfd, NULL); - if (oldfd) { - uxsel_input_remove(oldfd->id); - del234(fds, oldfd); - sfree(oldfd); + if (rwx) { + newfd = snew(struct fd); + newfd->fd = fd; + newfd->rwx = rwx; + newfd->callback = callback; + newfd->id = uxsel_input_add(fd, rwx); + add234(fds, newfd); } - - add234(fds, newfd); - newfd->id = uxsel_input_add(fd, rwx); } void uxsel_del(int fd)