Changeset 2401 for neercs


Ignore:
Timestamp:
Jun 15, 2008, 2:50:12 PM (12 years ago)
Author:
Jean-Yves Lamoureux
Message:
  • Removed more stuff from main()
Location:
neercs/trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • neercs/trunk/src/main.c

    r2400 r2401  
    7777    h = cucul_get_canvas_height(cv);
    7878
    79     w = 80;
    80     h = 25;
    8179
    8280
     
    124122    /* Windows are in a temporary state, resize them to the right dimensions */
    125123    update_windows_props(cv, screen_list, pty);
    126 
    127124    caca_refresh_display(dp);
    128125
     126
    129127    for(;;)
    130128    {
    131         struct timeval tv;
    132         fd_set fdset;
    133129        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
    167135        /* No more screens, exit */
    168136        if(!screen_list->count) break;
     
    382350
    383351int update_screens_contents(struct screen_list* screen_list,
    384                              fd_set *fdset,
    385352                             int *pty, int *prevpty)
    386353{
    387354    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
    388389    for(i = 0; i < screen_list->count; i++)
    389390    {
     
    392393
    393394        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))
    395396            continue;
    396397
     
    429430            break;
    430431        }
     432    }
    431433    }
    432434    return refresh;
  • neercs/trunk/src/neercs.h

    r2400 r2401  
    7474                     int pty);
    7575int update_screens_contents(struct screen_list* screen_list,
    76                              fd_set *fdset,
    7776                             int *pty, int *prevpty);
    7877
Note: See TracChangeset for help on using the changeset viewer.