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), |