Changeset a5ef7ce0f308caca8b7a41d66e0aae4c653344b1
- Timestamp:
- 12/02/07 18:31:53
(2 years ago)
- Author:
- Rémi Denis-Courmont <rem@videolan.org>
- git-committer:
- Rémi Denis-Courmont <rem@videolan.org> 1171301513 +0000
- git-parent:
[1c3bc8974c3b0acf191be3e5ebaf4c00634411fa]
- git-author:
- Rémi Denis-Courmont <rem@videolan.org> 1171301513 +0000
- Message:
Use poll() always and fix terrible bug due to #ifdefs
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| rbd20527 |
ra5ef7ce |
|
| 287 | 287 | unsigned i; |
|---|
| 288 | 288 | ssize_t n; |
|---|
| 289 | | #ifdef HAVE_POLL |
|---|
| 290 | 289 | struct pollfd ufd[fdc]; |
|---|
| 291 | | #else |
|---|
| 292 | | int maxfd = -1; |
|---|
| 293 | | fd_set set; |
|---|
| 294 | | #endif |
|---|
| 295 | 290 | |
|---|
| 296 | 291 | int delay_ms = 500; |
|---|
| … | … | |
| 304 | 299 | } |
|---|
| 305 | 300 | |
|---|
| 306 | | #ifdef HAVE_POLL |
|---|
| 307 | 301 | memset (ufd, 0, sizeof (ufd)); |
|---|
| 308 | 302 | |
|---|
| … | … | |
| 314 | 308 | |
|---|
| 315 | 309 | n = poll( ufd, fdc, delay_ms ); |
|---|
| 316 | | #else |
|---|
| 317 | | FD_ZERO (&set); |
|---|
| 318 | | |
|---|
| 319 | | for( i = 0; i < fdc; i++ ) |
|---|
| 320 | | { |
|---|
| 321 | | #if !defined(WIN32) && !defined(UNDER_CE) |
|---|
| 322 | | if( fdv[i] >= FD_SETSIZE ) |
|---|
| 323 | | { |
|---|
| 324 | | /* We don't want to overflow select() fd_set */ |
|---|
| 325 | | msg_Err( p_this, "select set overflow" ); |
|---|
| 326 | | return -1; |
|---|
| 327 | | } |
|---|
| 328 | | #endif |
|---|
| 329 | | FD_SET( fdv[i], &set ); |
|---|
| 330 | | if( fdv[i] > maxfd ) |
|---|
| 331 | | maxfd = fdv[i]; |
|---|
| 332 | | } |
|---|
| 333 | | |
|---|
| 334 | | n = select( maxfd + 1, &set, NULL, NULL, |
|---|
| 335 | | (wait_ms == -1) ? NULL |
|---|
| 336 | | : &(struct timeval){ 0, delay_ms * 1000 } ); |
|---|
| 337 | | #endif |
|---|
| 338 | 310 | if( n == -1 ) |
|---|
| 339 | 311 | goto error; |
|---|
| … | … | |
| 346 | 318 | for (i = 0;; i++) |
|---|
| 347 | 319 | { |
|---|
| 348 | | #ifdef HAVE_POLL |
|---|
| 349 | 320 | if ((i_total > 0) && (ufd[i].revents & POLLERR)) |
|---|
| 350 | 321 | return i_total; // error will be dequeued on next run |
|---|
| 351 | 322 | |
|---|
| 352 | 323 | if ((ufd[i].revents & POLLIN) == 0) |
|---|
| 353 | | #else |
|---|
| 354 | | if (!FD_ISSET (fdv[i], &set)) |
|---|
| 355 | 324 | continue; |
|---|
| 356 | | #endif |
|---|
| | 325 | |
|---|
| 357 | 326 | fdc = 1; |
|---|
| 358 | 327 | fdv += i; |
|---|