diff options
| author | Stefan Monnier | 2011-03-21 12:42:16 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2011-03-21 12:42:16 -0400 |
| commit | cafdcef32d55cbb44389d7e322e7f973cbb72dfd (patch) | |
| tree | 7ee0c41ea8a589650ce6f4311fb10e61a63807b9 /src/xgselect.c | |
| parent | a08a25d7aaf251aa18f2ef747be53734bc55cae9 (diff) | |
| parent | 4e05e67e4cd0bc1b0a4ef3176a4d0d91c6b3738e (diff) | |
| download | emacs-cafdcef32d55cbb44389d7e322e7f973cbb72dfd.tar.gz emacs-cafdcef32d55cbb44389d7e322e7f973cbb72dfd.zip | |
Merge from trunk
Diffstat (limited to 'src/xgselect.c')
| -rw-r--r-- | src/xgselect.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/xgselect.c b/src/xgselect.c index 359a8fbc89b..96d763ff088 100644 --- a/src/xgselect.c +++ b/src/xgselect.c | |||
| @@ -38,7 +38,7 @@ xg_select (int max_fds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, | |||
| 38 | GMainContext *context = g_main_context_default (); | 38 | GMainContext *context = g_main_context_default (); |
| 39 | int have_wfds = wfds != NULL; | 39 | int have_wfds = wfds != NULL; |
| 40 | int n_gfds = 0, our_tmo = 0, retval = 0, our_fds = 0; | 40 | int n_gfds = 0, our_tmo = 0, retval = 0, our_fds = 0; |
| 41 | int prio, i, nfds, tmo_in_millisec; | 41 | int i, nfds, tmo_in_millisec; |
| 42 | 42 | ||
| 43 | if (rfds) memcpy (&all_rfds, rfds, sizeof (all_rfds)); | 43 | if (rfds) memcpy (&all_rfds, rfds, sizeof (all_rfds)); |
| 44 | else FD_ZERO (&all_rfds); | 44 | else FD_ZERO (&all_rfds); |
| @@ -49,9 +49,9 @@ xg_select (int max_fds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, | |||
| 49 | g_main_context_pending (context); | 49 | g_main_context_pending (context); |
| 50 | 50 | ||
| 51 | do { | 51 | do { |
| 52 | if (n_gfds > gfds_size) | 52 | if (n_gfds > gfds_size) |
| 53 | { | 53 | { |
| 54 | while (n_gfds > gfds_size) | 54 | while (n_gfds > gfds_size) |
| 55 | gfds_size *= 2; | 55 | gfds_size *= 2; |
| 56 | xfree (gfds); | 56 | xfree (gfds); |
| 57 | gfds = xmalloc (sizeof (*gfds) * gfds_size); | 57 | gfds = xmalloc (sizeof (*gfds) * gfds_size); |
| @@ -64,7 +64,7 @@ xg_select (int max_fds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, | |||
| 64 | gfds_size); | 64 | gfds_size); |
| 65 | } while (n_gfds > gfds_size); | 65 | } while (n_gfds > gfds_size); |
| 66 | 66 | ||
| 67 | for (i = 0; i < n_gfds; ++i) | 67 | for (i = 0; i < n_gfds; ++i) |
| 68 | { | 68 | { |
| 69 | if (gfds[i].events & G_IO_IN) | 69 | if (gfds[i].events & G_IO_IN) |
| 70 | { | 70 | { |
| @@ -87,7 +87,7 @@ xg_select (int max_fds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, | |||
| 87 | else | 87 | else |
| 88 | { | 88 | { |
| 89 | EMACS_TIME difference; | 89 | EMACS_TIME difference; |
| 90 | 90 | ||
| 91 | EMACS_SUB_TIME (difference, tmo, *timeout); | 91 | EMACS_SUB_TIME (difference, tmo, *timeout); |
| 92 | if (EMACS_TIME_NEG_P (difference)) our_tmo = 1; | 92 | if (EMACS_TIME_NEG_P (difference)) our_tmo = 1; |
| 93 | } | 93 | } |
| @@ -100,7 +100,7 @@ xg_select (int max_fds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, | |||
| 100 | 100 | ||
| 101 | if (nfds < 0) | 101 | if (nfds < 0) |
| 102 | retval = nfds; | 102 | retval = nfds; |
| 103 | else if (nfds > 0) | 103 | else if (nfds > 0) |
| 104 | { | 104 | { |
| 105 | for (i = 0; i < max_fds+1; ++i) | 105 | for (i = 0; i < max_fds+1; ++i) |
| 106 | { | 106 | { |
| @@ -127,7 +127,7 @@ xg_select (int max_fds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, | |||
| 127 | 127 | ||
| 128 | if (our_fds > 0 || (nfds == 0 && our_tmo)) | 128 | if (our_fds > 0 || (nfds == 0 && our_tmo)) |
| 129 | { | 129 | { |
| 130 | 130 | ||
| 131 | /* If Gtk+ is in use eventually gtk_main_iteration will be called, | 131 | /* If Gtk+ is in use eventually gtk_main_iteration will be called, |
| 132 | unless retval is zero. */ | 132 | unless retval is zero. */ |
| 133 | #ifdef USE_GTK | 133 | #ifdef USE_GTK |
| @@ -137,7 +137,7 @@ xg_select (int max_fds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, | |||
| 137 | g_main_context_dispatch (context); | 137 | g_main_context_dispatch (context); |
| 138 | 138 | ||
| 139 | /* To not have to recalculate timeout, return like this. */ | 139 | /* To not have to recalculate timeout, return like this. */ |
| 140 | if (retval == 0) | 140 | if (retval == 0) |
| 141 | { | 141 | { |
| 142 | retval = -1; | 142 | retval = -1; |
| 143 | errno = EINTR; | 143 | errno = EINTR; |
| @@ -156,4 +156,3 @@ xgselect_initialize (void) | |||
| 156 | gfds = xmalloc (sizeof (*gfds)*gfds_size); | 156 | gfds = xmalloc (sizeof (*gfds)*gfds_size); |
| 157 | #endif /* defined (USE_GTK) || defined (HAVE_GCONF) */ | 157 | #endif /* defined (USE_GTK) || defined (HAVE_GCONF) */ |
| 158 | } | 158 | } |
| 159 | |||