Rev 3793 | Rev 3882 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3793 | Rev 3795 | ||
|---|---|---|---|
| Line 137... | Line 137... | ||
| 137 | bool cursor_shown; |
137 | bool cursor_shown; |
| 138 | 138 | ||
| 139 | /* Back buffer */ |
139 | /* Back buffer */ |
| 140 | bb_cell_t *backbuf; |
140 | bb_cell_t *backbuf; |
| 141 | unsigned int bbsize; |
141 | unsigned int bbsize; |
| 142 | bool bb_invalid; |
- | |
| 143 | } viewport_t; |
142 | } viewport_t; |
| 144 | 143 | ||
| 145 | typedef struct { |
144 | typedef struct { |
| 146 | bool initialized; |
145 | bool initialized; |
| 147 | bool enabled; |
146 | bool enabled; |
| Line 558... | Line 557... | ||
| 558 | viewports[i].cursor_active = false; |
557 | viewports[i].cursor_active = false; |
| 559 | viewports[i].cursor_shown = false; |
558 | viewports[i].cursor_shown = false; |
| 560 | 559 | ||
| 561 | viewports[i].bbsize = bbsize; |
560 | viewports[i].bbsize = bbsize; |
| 562 | viewports[i].backbuf = backbuf; |
561 | viewports[i].backbuf = backbuf; |
| 563 | viewports[i].bb_invalid = false; |
- | |
| 564 | 562 | ||
| 565 | viewports[i].initialized = true; |
563 | viewports[i].initialized = true; |
| 566 | 564 | ||
| 567 | render_glyphs(&viewports[i]); |
565 | render_glyphs(&viewports[i]); |
| 568 | 566 | ||
| Line 881... | Line 879... | ||
| 881 | uint8_t glyph = bbp->glyph; |
879 | uint8_t glyph = bbp->glyph; |
| 882 | 880 | ||
| 883 | a = &data[i].attrs; |
881 | a = &data[i].attrs; |
| 884 | rgb_from_attr(&rgb, a); |
882 | rgb_from_attr(&rgb, a); |
| 885 | 883 | ||
| 886 | if (glyph != data[i].character || |
884 | bbp->glyph = data[i].character; |
| 887 | rgb.fg_color != bbp->fg_color || |
885 | bbp->fg_color = rgb.fg_color; |
| 888 | rgb.bg_color != bbp->bg_color || |
886 | bbp->bg_color = rgb.bg_color; |
| 889 | vport->bb_invalid) { |
- | |
| 890 | bbp->glyph = data[i].character; |
- | |
| 891 | 887 | ||
| 892 | bbp->fg_color = rgb.fg_color; |
- | |
| 893 | bbp->bg_color = rgb.bg_color; |
- | |
| 894 | - | ||
| 895 | draw_vp_glyph(vport, false, col, row); |
888 | draw_vp_glyph(vport, false, col, row); |
| 896 | } |
- | |
| 897 | } |
889 | } |
| 898 | cursor_show(vport); |
890 | cursor_show(vport); |
| 899 | } |
891 | } |
| 900 | 892 | ||
| 901 | 893 | ||
| Line 1624... | Line 1616... | ||
| 1624 | free(viewports[i].bgpixel); |
1616 | free(viewports[i].bgpixel); |
| 1625 | if (viewports[i].backbuf) |
1617 | if (viewports[i].backbuf) |
| 1626 | free(viewports[i].backbuf); |
1618 | free(viewports[i].backbuf); |
| 1627 | retval = EOK; |
1619 | retval = EOK; |
| 1628 | break; |
1620 | 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 | - | ||
| 1639 | case FB_SET_STYLE: |
1621 | case FB_SET_STYLE: |
| 1640 | retval = fb_set_style(vport, IPC_GET_ARG1(call)); |
1622 | retval = fb_set_style(vport, IPC_GET_ARG1(call)); |
| 1641 | break; |
1623 | break; |
| 1642 | case FB_SET_COLOR: |
1624 | case FB_SET_COLOR: |
| 1643 | retval = fb_set_color(vport, IPC_GET_ARG1(call), |
1625 | retval = fb_set_color(vport, IPC_GET_ARG1(call), |