Changeset 3936 for neercs/trunk


Ignore:
Timestamp:
Nov 18, 2009, 3:11:29 PM (10 years ago)
Author:
Jean-Yves Lamoureux
Message:
  • Massive factorisation of window manager refreshes
File:
1 edited

Legend:

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

    r3935 r3936  
    196196}
    197197
    198 void wm_refresh_card(struct screen_list *screen_list)
    199 {
    200     int i;
    201 
    202     for (i = screen_list->count - 1; i >= 0; i--)
    203     {
    204         if (i != screen_list->pty && screen_list->screen[i]->visible &&
    205             (screen_list->screen[i]->changed || screen_list->changed))
    206         {
    207             caca_blit(screen_list->cv,
    208                       screen_list->screen[i]->x,
    209                       screen_list->screen[i]->y,
    210                       screen_list->screen[i]->cv, NULL);
    211 
    212             caca_draw_cp437_box(screen_list->cv,
    213                                 screen_list->screen[i]->x - 1,
    214                                 screen_list->screen[i]->y - 1,
    215                                 screen_list->screen[i]->w + 2,
    216                                 screen_list->screen[i]->h + 2);
    217             if (screen_list->screen[i]->title)
    218                 caca_printf(screen_list->cv,
    219                             screen_list->screen[i]->x,
    220                             screen_list->screen[i]->y - 1,
    221                             " %.*s ",
    222                             screen_list->screen[i]->w - 3,
    223                             screen_list->screen[i]->title);
    224         }
    225     }
    226 
     198static void wm_bell(struct screen_list *screen_list)
     199{
     200    if (screen_list->screen[screen_list->pty]->bell)
     201    {
     202        caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK);
     203        screen_list->screen[screen_list->pty]->bell = 0;
     204        screen_list->in_bell--;
     205    }
     206    else
     207    {
     208        caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK);
     209    }   
     210}
     211
     212static void wm_box(struct screen_list *screen_list, int pty)
     213{
     214    caca_draw_cp437_box(screen_list->cv,
     215                        screen_list->screen[pty]->x - 1,
     216                        screen_list->screen[pty]->y - 1,
     217                        screen_list->screen[pty]->w + 2,
     218                        screen_list->screen[pty]->h + 2);
     219   
     220    if (screen_list->screen[screen_list->pty]->title)
     221    {
     222        caca_printf(screen_list->cv,
     223                    screen_list->screen[pty]->x,
     224                    screen_list->screen[pty]->y - 1,
     225                    " %.*s ",
     226                    screen_list->screen[pty]->w - 3,
     227                    screen_list->screen[pty]->title);
     228    }
     229}
     230
     231static void wm_blit_current_screen(struct screen_list* screen_list)
     232{
    227233    if (screen_list->screen[screen_list->pty]->changed || screen_list->changed)
    228234        caca_blit(screen_list->cv,
     
    230236                  screen_list->screen[screen_list->pty]->y,
    231237                  screen_list->screen[screen_list->pty]->cv, NULL);
    232 
    233     if (screen_list->screen[screen_list->pty]->bell)
    234     {
    235         caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK);
    236         screen_list->screen[screen_list->pty]->bell = 0;
    237         screen_list->in_bell--;
    238     }
    239     else
    240     {
    241         caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK);
    242     }
    243 
    244     caca_draw_cp437_box(screen_list->cv,
    245                         screen_list->screen[screen_list->pty]->x - 1,
    246                         screen_list->screen[screen_list->pty]->y - 1,
    247                         screen_list->screen[screen_list->pty]->w + 2,
    248                         screen_list->screen[screen_list->pty]->h + 2);
    249 
    250     if (screen_list->screen[screen_list->pty]->title)
    251     {
    252         caca_printf(screen_list->cv,
    253                     screen_list->screen[screen_list->pty]->x,
    254                     screen_list->screen[screen_list->pty]->y - 1,
    255                     " %.*s ",
    256                     screen_list->screen[screen_list->pty]->w - 3,
    257                     screen_list->screen[screen_list->pty]->title);
    258     }
    259 }
    260 
    261 
    262 void wm_refresh_full(struct screen_list *screen_list)
    263 {
    264     if (screen_list->screen[screen_list->pty]->changed || screen_list->changed)
    265         caca_blit(screen_list->cv,
    266                   screen_list->screen[screen_list->pty]->x,
    267                   screen_list->screen[screen_list->pty]->y,
    268                   screen_list->screen[screen_list->pty]->cv, NULL);
    269 
    270     if (screen_list->screen[screen_list->pty]->bell)
    271     {
    272         caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK);
    273         screen_list->screen[screen_list->pty]->bell = 0;
    274         screen_list->in_bell--;
    275     }
    276     else
    277     {
    278         caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK);
    279     }
    280 
    281     caca_draw_cp437_box(screen_list->cv,
    282                         screen_list->screen[screen_list->pty]->x - 1,
    283                         screen_list->screen[screen_list->pty]->y - 1,
    284                         screen_list->screen[screen_list->pty]->w + 2,
    285                         screen_list->screen[screen_list->pty]->h + 2);
    286 
    287     if (screen_list->screen[screen_list->pty]->title)
    288     {
    289         caca_printf(screen_list->cv,
    290                     screen_list->screen[screen_list->pty]->x,
    291                     screen_list->screen[screen_list->pty]->y - 1,
    292                     " %.*s ",
    293                     screen_list->screen[screen_list->pty]->w - 3,
    294                     screen_list->screen[screen_list->pty]->title);
    295     }
    296 }
    297 
    298 void wm_refresh_vsplit(struct screen_list *screen_list)
     238}
     239
     240void wm_refresh_card(struct screen_list *screen_list)
    299241{
    300242    int i;
     
    310252                      screen_list->screen[i]->cv, NULL);
    311253
    312             caca_draw_cp437_box(screen_list->cv,
    313                                 screen_list->screen[i]->x - 1,
    314                                 screen_list->screen[i]->y - 1,
    315                                 screen_list->screen[i]->w + 2,
    316                                 screen_list->screen[i]->h + 2);
    317             if (screen_list->screen[i]->title)
    318                 caca_printf(screen_list->cv,
    319                             screen_list->screen[i]->x,
    320                             screen_list->screen[i]->y - 1,
    321                             " %.*s ",
    322                             screen_list->screen[i]->w - 3,
    323                             screen_list->screen[i]->title);
    324         }
    325     }
    326 
    327     if (screen_list->screen[screen_list->pty]->changed || screen_list->changed)
    328         caca_blit(screen_list->cv,
    329                   screen_list->screen[screen_list->pty]->x,
    330                   screen_list->screen[screen_list->pty]->y,
    331                   screen_list->screen[screen_list->pty]->cv, NULL);
    332 
    333     if (screen_list->screen[screen_list->pty]->bell)
    334     {
    335         caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK);
    336         screen_list->screen[screen_list->pty]->bell = 0;
    337         screen_list->in_bell--;
    338     }
    339     else
    340     {
    341         caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK);
    342     }
    343 
    344     caca_draw_cp437_box(screen_list->cv,
    345                         screen_list->screen[screen_list->pty]->x - 1,
    346                         screen_list->screen[screen_list->pty]->y - 1,
    347                         screen_list->screen[screen_list->pty]->w + 2,
    348                         screen_list->screen[screen_list->pty]->h + 2);
    349 
    350     if (screen_list->screen[screen_list->pty]->title)
    351     {
    352         caca_printf(screen_list->cv,
    353                     screen_list->screen[screen_list->pty]->x,
    354                     screen_list->screen[screen_list->pty]->y - 1,
    355                     " %.*s ",
    356                     screen_list->screen[screen_list->pty]->w - 3,
    357                     screen_list->screen[screen_list->pty]->title);
    358     }
    359 }
    360 
    361 void wm_refresh_hsplit(struct screen_list *screen_list)
     254            wm_box(screen_list, i);
     255        }
     256    }
     257
     258        wm_blit_current_screen(screen_list);
     259    wm_bell(screen_list);
     260        wm_box(screen_list, screen_list->pty);   
     261}
     262
     263
     264void wm_refresh_full(struct screen_list *screen_list)
     265{
     266    wm_blit_current_screen(screen_list);
     267        wm_bell(screen_list);
     268        wm_box(screen_list, screen_list->pty); 
     269}
     270
     271void wm_refresh_vsplit(struct screen_list *screen_list)
    362272{
    363273    int i;
     
    373283                      screen_list->screen[i]->cv, NULL);
    374284
    375             caca_draw_cp437_box(screen_list->cv,
    376                                 screen_list->screen[i]->x - 1,
    377                                 screen_list->screen[i]->y - 1,
    378                                 screen_list->screen[i]->w + 2,
    379                                 screen_list->screen[i]->h + 2);
    380             if (screen_list->screen[i]->title)
    381                 caca_printf(screen_list->cv,
    382                             screen_list->screen[i]->x,
    383                             screen_list->screen[i]->y - 1,
    384                             " %.*s ",
    385                             screen_list->screen[i]->w - 3,
    386                             screen_list->screen[i]->title);
    387         }
    388     }
    389 
    390     if (screen_list->screen[screen_list->pty]->changed || screen_list->changed)
    391         caca_blit(screen_list->cv,
    392                   screen_list->screen[screen_list->pty]->x,
    393                   screen_list->screen[screen_list->pty]->y,
    394                   screen_list->screen[screen_list->pty]->cv, NULL);
    395 
    396     if (screen_list->screen[screen_list->pty]->bell)
    397     {
    398         caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK);
    399         screen_list->screen[screen_list->pty]->bell = 0;
    400         screen_list->in_bell--;
    401     }
    402     else
    403     {
    404         caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK);
    405     }
    406 
    407     caca_draw_cp437_box(screen_list->cv,
    408                         screen_list->screen[screen_list->pty]->x - 1,
    409                         screen_list->screen[screen_list->pty]->y - 1,
    410                         screen_list->screen[screen_list->pty]->w + 2,
    411                         screen_list->screen[screen_list->pty]->h + 2);
    412 
    413     if (screen_list->screen[screen_list->pty]->title)
    414     {
    415         caca_printf(screen_list->cv,
    416                     screen_list->screen[screen_list->pty]->x,
    417                     screen_list->screen[screen_list->pty]->y - 1,
    418                     " %.*s ",
    419                     screen_list->screen[screen_list->pty]->w - 3,
    420                     screen_list->screen[screen_list->pty]->title);
    421     }
     285                        wm_box(screen_list, i);
     286        }
     287    }
     288
     289        wm_blit_current_screen(screen_list);
     290        wm_bell(screen_list);
     291    wm_box(screen_list, screen_list->pty); 
     292}
     293
     294void wm_refresh_hsplit(struct screen_list *screen_list)
     295{
     296    int i;
     297
     298    for (i = screen_list->count - 1; i >= 0; i--)
     299    {
     300        if (i != screen_list->pty && screen_list->screen[i]->visible &&
     301            (screen_list->screen[i]->changed || screen_list->changed))
     302        {
     303            caca_blit(screen_list->cv,
     304                      screen_list->screen[i]->x,
     305                      screen_list->screen[i]->y,
     306                      screen_list->screen[i]->cv, NULL);
     307
     308                        wm_box(screen_list, i);
     309        }
     310    }
     311
     312        wm_blit_current_screen(screen_list);
     313        wm_bell(screen_list);
     314    wm_box(screen_list, screen_list->pty); 
    422315}
    423316
     
    497390    else
    498391    {
    499 
    500392        long long unsigned int cur_time = get_us() - screen_list->last_switch;
    501393
Note: See TracChangeset for help on using the changeset viewer.