Changeset 42ec919 in mainline


Ignore:
Timestamp:
2009-01-11T21:03:12Z (15 years ago)
Author:
Jiri Svoboda <jirik.svoboda@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
bda24ee7
Parents:
4a62ec9
Message:

Viewport invalidation. Makes delta-redraw optimization work when returning from kcon.

Location:
uspace
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/libc/include/ipc/fb.h

    r4a62ec9 r42ec919  
    4848        FB_VIEWPORT_CREATE,
    4949        FB_VIEWPORT_DELETE,
     50        FB_VIEWPORT_INVALIDATE,
    5051        FB_SET_STYLE,
    5152        FB_SET_COLOR,
  • uspace/srv/console/gcons.c

    r4a62ec9 r42ec919  
    8484        async_msg_1(fbphone, FB_VIEWPORT_SWITCH, vp);
    8585}
     86
     87static void vp_invalidate(int vp)
     88{
     89        async_msg_1(fbphone, FB_VIEWPORT_INVALIDATE, vp);
     90}
     91
    8692
    8793/** Create view port */
     
    158164        redraw_state(consnum);
    159165
     166        vp_invalidate(console_vp);
    160167        vp_switch(console_vp);
    161168}
     
    356363        for (i = 0; i < CONSOLE_COUNT; i++)
    357364                redraw_state(i);
     365        vp_invalidate(console_vp);
    358366        vp_switch(console_vp);
    359367}
  • uspace/srv/fb/fb.c

    r4a62ec9 r42ec919  
    140140        bb_cell_t *backbuf;
    141141        unsigned int bbsize;
     142        bool bb_invalid;
    142143} viewport_t;
    143144
     
    560561        viewports[i].bbsize = bbsize;
    561562        viewports[i].backbuf = backbuf;
     563        viewports[i].bb_invalid = false;
    562564       
    563565        viewports[i].initialized = true;
     
    884886                if (glyph != data[i].character ||
    885887                    rgb.fg_color != bbp->fg_color ||
    886                     rgb.bg_color != bbp->bg_color) {
     888                    rgb.bg_color != bbp->bg_color ||
     889                    vport->bb_invalid) {
    887890                        bbp->glyph = data[i].character;
    888891
     
    16241627                        retval = EOK;
    16251628                        break;
     1629                case FB_VIEWPORT_INVALIDATE:
     1630                        i = IPC_GET_ARG1(call);
     1631                        if (i >= MAX_VIEWPORTS) {
     1632                                retval = EINVAL;
     1633                                break;
     1634                        }
     1635                        viewports[i].bb_invalid = true;
     1636                        retval = EOK;
     1637                        break;
     1638               
    16261639                case FB_SET_STYLE:
    16271640                        retval = fb_set_style(vport, IPC_GET_ARG1(call));
Note: See TracChangeset for help on using the changeset viewer.