فهرست منبع

remove support for faking notifications

with the existence of timers, this is now superfluous.
Oswald Buddenhagen 10 سال پیش
والد
کامیت
3f629af07e
2فایلهای تغییر یافته به همراه14 افزوده شده و 17 حذف شده
  1. 0 2
      src/common.h
  2. 14 15
      src/util.c

+ 0 - 2
src/common.h

@@ -140,7 +140,6 @@ typedef struct notifier {
 #else
 #else
 	int fd, events;
 	int fd, events;
 #endif
 #endif
-	int faked;
 } notifier_t;
 } notifier_t;
 
 
 #ifdef HAVE_SYS_POLL_H
 #ifdef HAVE_SYS_POLL_H
@@ -153,7 +152,6 @@ typedef struct notifier {
 
 
 void init_notifier( notifier_t *sn, int fd, void (*cb)( int, void * ), void *aux );
 void init_notifier( notifier_t *sn, int fd, void (*cb)( int, void * ), void *aux );
 void conf_notifier( notifier_t *sn, int and_events, int or_events );
 void conf_notifier( notifier_t *sn, int and_events, int or_events );
-static INLINE void fake_notifier( notifier_t *sn, int events ) { sn->faked |= events; }
 void wipe_notifier( notifier_t *sn );
 void wipe_notifier( notifier_t *sn );
 
 
 typedef struct {
 typedef struct {

+ 14 - 15
src/util.c

@@ -636,7 +636,6 @@ init_notifier( notifier_t *sn, int fd, void (*cb)( int, void * ), void *aux )
 #endif
 #endif
 	sn->cb = cb;
 	sn->cb = cb;
 	sn->aux = aux;
 	sn->aux = aux;
-	sn->faked = 0;
 	sn->next = notifiers;
 	sn->next = notifiers;
 	notifiers = sn;
 	notifiers = sn;
 }
 }
@@ -762,20 +761,19 @@ event_wait( void )
 		}
 		}
 		timeout = delta * 1000;
 		timeout = delta * 1000;
 	}
 	}
-	for (sn = notifiers; sn; sn = sn->next)
-		if (sn->faked) {
-			timeout = 0;
-			break;
-		}
-	if (poll( pollfds, npolls, timeout ) < 0) {
+	switch (poll( pollfds, npolls, timeout )) {
+	case 0:
+		return;
+	case -1:
 		perror( "poll() failed in event loop" );
 		perror( "poll() failed in event loop" );
 		abort();
 		abort();
+	default:
+		break;
 	}
 	}
 	for (sn = notifiers; sn; sn = sn->next) {
 	for (sn = notifiers; sn; sn = sn->next) {
 		int n = sn->index;
 		int n = sn->index;
-		if ((m = pollfds[n].revents | sn->faked)) {
+		if ((m = pollfds[n].revents)) {
 			assert( !(m & POLLNVAL) );
 			assert( !(m & POLLNVAL) );
-			sn->faked = 0;
 			sn->cb( m | shifted_bit( m, POLLHUP, POLLIN ), sn->aux );
 			sn->cb( m | shifted_bit( m, POLLHUP, POLLIN ), sn->aux );
 			if (changed) {
 			if (changed) {
 				changed = 0;
 				changed = 0;
@@ -786,7 +784,6 @@ event_wait( void )
 #else
 #else
 	struct timeval *timeout = 0;
 	struct timeval *timeout = 0;
 	struct timeval to_tv;
 	struct timeval to_tv;
-	static struct timeval null_tv;
 	fd_set rfds, wfds, efds;
 	fd_set rfds, wfds, efds;
 	int fd;
 	int fd;
 
 
@@ -808,8 +805,6 @@ event_wait( void )
 	FD_ZERO( &efds );
 	FD_ZERO( &efds );
 	m = -1;
 	m = -1;
 	for (sn = notifiers; sn; sn = sn->next) {
 	for (sn = notifiers; sn; sn = sn->next) {
-		if (sn->faked)
-			timeout = &null_tv;
 		fd = sn->fd;
 		fd = sn->fd;
 		if (sn->events & POLLIN)
 		if (sn->events & POLLIN)
 			FD_SET( fd, &rfds );
 			FD_SET( fd, &rfds );
@@ -819,13 +814,18 @@ event_wait( void )
 		if (fd > m)
 		if (fd > m)
 			m = fd;
 			m = fd;
 	}
 	}
-	if (select( m + 1, &rfds, &wfds, &efds, timeout ) < 0) {
+	switch (select( m + 1, &rfds, &wfds, &efds, timeout )) {
+	case 0:
+		return;
+	case -1:
 		perror( "select() failed in event loop" );
 		perror( "select() failed in event loop" );
 		abort();
 		abort();
+	default:
+		break;
 	}
 	}
 	for (sn = notifiers; sn; sn = sn->next) {
 	for (sn = notifiers; sn; sn = sn->next) {
 		fd = sn->fd;
 		fd = sn->fd;
-		m = sn->faked;
+		m = 0;
 		if (FD_ISSET( fd, &rfds ))
 		if (FD_ISSET( fd, &rfds ))
 			m |= POLLIN;
 			m |= POLLIN;
 		if (FD_ISSET( fd, &wfds ))
 		if (FD_ISSET( fd, &wfds ))
@@ -833,7 +833,6 @@ event_wait( void )
 		if (FD_ISSET( fd, &efds ))
 		if (FD_ISSET( fd, &efds ))
 			m |= POLLERR;
 			m |= POLLERR;
 		if (m) {
 		if (m) {
-			sn->faked = 0;
 			sn->cb( m, sn->aux );
 			sn->cb( m, sn->aux );
 			if (changed) {
 			if (changed) {
 				changed = 0;
 				changed = 0;