Ignore:
Timestamp:
May 19, 2009, 10:42:12 PM (12 years ago)
Author:
Sam Hocevar
Message:

Fix dirty rectangle handling in the X11 and SLang drivers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/caca/driver/slang.c

    r3470 r3480  
    221221static void slang_display(caca_display_t *dp)
    222222{
    223     uint32_t const *cvchars = (uint32_t const *)caca_get_canvas_chars(dp->cv);
    224     uint32_t const *cvattrs = (uint32_t const *)caca_get_canvas_attrs(dp->cv);
    225223    int x, y, i;
    226224
    227225    for(i = 0; i < caca_get_dirty_rectangle_count(dp->cv); i++)
    228226    {
     227        uint32_t const *cvchars, *cvattrs;
    229228        int xmin, ymin, xmax, ymax;
    230229
    231230        caca_get_dirty_rectangle(dp->cv, i, &xmin, &ymin, &xmax, &ymax);
     231
     232        cvchars = (uint32_t const *)caca_get_canvas_chars(dp->cv)
     233                    + xmin + ymin * dp->cv->width;
     234        cvattrs = (uint32_t const *)caca_get_canvas_attrs(dp->cv)
     235                    + xmin + ymin * dp->cv->width;
    232236
    233237        for(y = ymin; y <= ymax; y++)
    234238        {
    235             SLsmg_gotorc(y, 0);
    236             for(x = xmax; x >= xmin; x--)
     239            SLsmg_gotorc(y, xmin);
     240            for(x = xmin; x <= xmax; x++)
    237241            {
    238242                uint32_t ch = *cvchars++;
     
    278282#endif
    279283            }
     284
     285            cvchars += dp->cv->width - (xmax - xmin) - 1;
     286            cvattrs += dp->cv->width - (xmax - xmin) - 1;
    280287        }
    281288    }
Note: See TracChangeset for help on using the changeset viewer.