Changeset 2401 for neercs/trunk/src
- Timestamp:
- Jun 15, 2008, 2:50:12 PM (14 years ago)
- Location:
- neercs/trunk/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
neercs/trunk/src/main.c
r2400 r2401 77 77 h = cucul_get_canvas_height(cv); 78 78 79 w = 80;80 h = 25;81 79 82 80 … … 124 122 /* Windows are in a temporary state, resize them to the right dimensions */ 125 123 update_windows_props(cv, screen_list, pty); 126 127 124 caca_refresh_display(dp); 128 125 126 129 127 for(;;) 130 128 { 131 struct timeval tv;132 fd_set fdset;133 129 caca_event_t ev; 134 int maxfd = 0, ret; 135 136 /* Read data, if any */ 137 FD_ZERO(&fdset); 138 for(i = 0; i < screen_list->count; i++) 139 { 140 if(screen_list->screen[i]->fd >= 0) 141 FD_SET(screen_list->screen[i]->fd, &fdset); 142 if(screen_list->screen[i]->fd > maxfd) 143 maxfd = screen_list->screen[i]->fd; 144 } 145 tv.tv_sec = 0; 146 tv.tv_usec = 50000; 147 ret = select(maxfd + 1, &fdset, NULL, NULL, &tv); 148 149 if(ret < 0) 150 { 151 if(errno == EINTR) 152 ; /* We probably got a SIGWINCH, ignore it */ 153 else 154 { 155 for(i = 0; i < screen_list->count; i++) 156 if(screen_list->screen[i]->total) 157 break; 158 if(i == screen_list->count) 159 break; 160 } 161 } 162 else if(ret) 163 { 164 /* Read each terminal content */ 165 refresh |= update_screens_contents(screen_list, &fdset, &pty, &prevpty); 166 } 130 int ret; 131 132 refresh |= update_screens_contents(screen_list, 133 &pty, &prevpty); 134 167 135 /* No more screens, exit */ 168 136 if(!screen_list->count) break; … … 382 350 383 351 int update_screens_contents(struct screen_list* screen_list, 384 fd_set *fdset,385 352 int *pty, int *prevpty) 386 353 { 387 354 int i, refresh = 0; 355 int maxfd = 0; 356 struct timeval tv; 357 fd_set fdset; 358 int ret; 359 360 /* Read data, if any */ 361 FD_ZERO(&fdset); 362 for(i = 0; i < screen_list->count; i++) 363 { 364 if(screen_list->screen[i]->fd >= 0) 365 FD_SET(screen_list->screen[i]->fd, &fdset); 366 if(screen_list->screen[i]->fd > maxfd) 367 maxfd = screen_list->screen[i]->fd; 368 } 369 tv.tv_sec = 0; 370 tv.tv_usec = 50000; 371 ret = select(maxfd + 1, &fdset, NULL, NULL, &tv); 372 373 if(ret < 0) 374 { 375 if(errno == EINTR) 376 ; /* We probably got a SIGWINCH, ignore it */ 377 else 378 { 379 for(i = 0; i < screen_list->count; i++) 380 if(screen_list->screen[i]->total) 381 break; 382 if(i == screen_list->count) 383 return 0; 384 } 385 } 386 else if(ret) 387 { 388 388 389 for(i = 0; i < screen_list->count; i++) 389 390 { … … 392 393 393 394 if(screen_list->screen[i]->fd < 0 || 394 !FD_ISSET(screen_list->screen[i]->fd, fdset))395 !FD_ISSET(screen_list->screen[i]->fd, &fdset)) 395 396 continue; 396 397 … … 429 430 break; 430 431 } 432 } 431 433 } 432 434 return refresh; -
neercs/trunk/src/neercs.h
r2400 r2401 74 74 int pty); 75 75 int update_screens_contents(struct screen_list* screen_list, 76 fd_set *fdset,77 76 int *pty, int *prevpty); 78 77
Note: See TracChangeset
for help on using the changeset viewer.