Changeset e1c6d5df in mainline for uspace/lib/draw/surface.c


Ignore:
Timestamp:
2012-11-29T07:44:58Z (13 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3194d83
Parents:
ff98ce8 (diff), 82edef2 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge from lp:~petr-koupy/helenos/gui-optim.

The main improvements are:

  • significantly faster rendering (making qemu/non-KVM usable) if user limits himself just to window movement and resizing (i.e. avoiding rotation, scaling and transparency)
  • preview of the result of window transformation is depicted by a "ghost" frame following the mouse pointer
  • changing of window focus feels more natural and intuitive (mouse click handler behaves more like in mainstream operating systems, window titles changes color to reflect whether they have focus or not)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/draw/surface.c

    rff98ce8 re1c6d5df  
    143143}
    144144
     145void surface_add_damaged_region(surface_t *surface, surface_coord_t x, surface_coord_t y,
     146    surface_coord_t width, surface_coord_t height)
     147{
     148        surface->dirty_x_lo = surface->dirty_x_lo > x ? x : surface->dirty_x_lo;
     149        surface->dirty_y_lo = surface->dirty_y_lo > y ? y : surface->dirty_y_lo;
     150
     151        surface_coord_t x_hi = x + width - 1;
     152        surface_coord_t y_hi = y + height - 1;
     153
     154        surface->dirty_x_hi = surface->dirty_x_hi < x_hi ? x_hi : surface->dirty_x_hi;
     155        surface->dirty_y_hi = surface->dirty_y_hi < y_hi ? y_hi : surface->dirty_y_hi;
     156}
     157
    145158void surface_reset_damaged_region(surface_t *surface)
    146159{
     
    158171        surface->dirty_y_hi = surface->dirty_y_hi < y ? y : surface->dirty_y_hi;
    159172
    160         if (x < surface->pixmap.width && y < surface->pixmap.height) {
    161                 pixelmap_put_pixel(&surface->pixmap, x, y, pixel);
    162         }
     173        pixelmap_put_pixel(&surface->pixmap, x, y, pixel);
    163174}
    164175
    165176pixel_t surface_get_pixel(surface_t *surface, surface_coord_t x, surface_coord_t y)
    166177{
    167         if (x < surface->pixmap.width && y < surface->pixmap.height) {
    168                 return pixelmap_get_pixel(&surface->pixmap, x, y);
    169         } else {
    170                 return 0;
    171         }
     178        return pixelmap_get_pixel(&surface->pixmap, x, y);
    172179}
    173180
Note: See TracChangeset for help on using the changeset viewer.