Lines Matching defs:watch
212 SpiceWatch *watch = xnfalloc(sizeof(SpiceWatch));
214 DPRINTF(0, "adding %p, fd=%d at %d", watch,
216 watch->fd = fd;
217 watch->event_mask = event_mask;
218 watch->func = func;
219 watch->opaque = opaque;
220 watch->remove = FALSE;
221 ring_item_init(&watch->link);
222 ring_add(&watches, &watch->link);
224 return watch;
227 static void watch_update_mask(SpiceWatch *watch, int event_mask)
229 DPRINTF(0, "fd %d to %d", watch->fd, event_mask);
230 watch->event_mask = event_mask;
233 static void watch_remove(SpiceWatch *watch)
235 DPRINTF(0, "remove %p (fd %d)", watch, watch->fd);
236 watch->remove = TRUE;
242 SpiceWatch *watch;
248 watch = (SpiceWatch*)link;
249 if (watch->event_mask & SPICE_WATCH_EVENT_READ) {
250 FD_SET(watch->fd, rfds);
251 max_fd = watch->fd > max_fd ? watch->fd : max_fd;
253 if (watch->event_mask & SPICE_WATCH_EVENT_WRITE) {
254 FD_SET(watch->fd, wfds);
255 max_fd = watch->fd > max_fd ? watch->fd : max_fd;
283 SpiceWatch *watch;
292 watch = (SpiceWatch*)watches.next;
297 watch = (SpiceWatch*)link;
298 if (!watch->remove && (watch->event_mask & SPICE_WATCH_EVENT_READ)
299 && FD_ISSET(watch->fd, &rfds)) {
300 watch->func(watch->fd, SPICE_WATCH_EVENT_READ, watch->opaque);
302 if (!watch->remove && (watch->event_mask & SPICE_WATCH_EVENT_WRITE)
303 && FD_ISSET(watch->fd, &wfds)) {
304 watch->func(watch->fd, SPICE_WATCH_EVENT_WRITE, watch->opaque);
306 if (watch->remove) {
307 ring_remove(&watch->link);
308 free(watch);
316 SpiceWatch *watch;
321 watch = (SpiceWatch*)link;
322 if (!watch->remove && (watch->event_mask & SPICE_WATCH_EVENT_WRITE))
348 SpiceWatch *watch = (SpiceWatch *)data;
350 if ((watch->event_mask & SPICE_WATCH_EVENT_READ) && (xevents & X_NOTIFY_READ)) {
351 watch->func(watch->fd, SPICE_WATCH_EVENT_READ, watch->opaque);
354 if ((watch->event_mask & SPICE_WATCH_EVENT_WRITE) && (xevents & X_NOTIFY_WRITE)) {
355 watch->func(watch->fd, SPICE_WATCH_EVENT_WRITE, watch->opaque);
359 static int watch_update_mask_internal(SpiceWatch *watch, int event_mask)
363 SetNotifyFd(watch->fd, NULL, X_NOTIFY_NONE, NULL);
364 watch->event_mask = 0;
373 DPRINTF(0, "Unexpected watch event_mask: %i", event_mask);
376 SetNotifyFd(watch->fd, watch_fd_notified, x_event_mask, watch);
377 watch->event_mask = event_mask;
384 SpiceWatch *watch = xnfalloc(sizeof(SpiceWatch));
386 DPRINTF(0, "adding %p, fd=%d", watch, fd);
388 watch->fd = fd;
389 watch->func = func;
390 watch->opaque = opaque;
391 if (watch_update_mask_internal(watch, event_mask) != 0) {
392 free(watch);
396 return watch;
399 static void watch_update_mask(SpiceWatch *watch, int event_mask)
401 DPRINTF(0, "fd %d to %d", watch->fd, event_mask);
402 watch_update_mask_internal(watch, event_mask);
405 static void watch_remove(SpiceWatch *watch)
407 DPRINTF(0, "remove %p (fd %d)", watch, watch->fd);
408 RemoveNotifyFd(watch->fd);
409 free(watch);