Stefano Stabellini
2009-Mar-02 17:15 UTC
[Xen-devel] [PATCH 2 of 13] Introduce accessors for DisplayState
Import "Introduce accessors for DisplayState" from qemu mainstream, plus few following fixes. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5789 c046a42c-6fe2-441c-8c8c-71466251a162 Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> --- diff --git a/console.c b/console.c --- a/console.c +++ b/console.c @@ -184,7 +184,7 @@ { unsigned int r, g, b, color; - switch(ds->depth) { + switch(ds_get_bits_per_pixel(ds)) { case 8: r = (rgba >> 16) & 0xff; g = (rgba >> 8) & 0xff; @@ -217,9 +217,9 @@ uint8_t *d, *d1; int x, y, bpp; - bpp = (ds->depth + 7) >> 3; - d1 = ds->data + - ds->linesize * posy + bpp * posx; + bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3; + d1 = ds_get_data(ds) + + ds_get_linesize(ds) * posy + bpp * posx; for (y = 0; y < height; y++) { d = d1; switch(bpp) { @@ -242,7 +242,7 @@ } break; } - d1 += ds->linesize; + d1 += ds_get_linesize(ds); } } @@ -253,27 +253,27 @@ uint8_t *d; int wb, y, bpp; - bpp = (ds->depth + 7) >> 3; + bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3; wb = w * bpp; if (yd <= ys) { - s = ds->data + - ds->linesize * ys + bpp * xs; - d = ds->data + - ds->linesize * yd + bpp * xd; + s = ds_get_data(ds) + + ds_get_linesize(ds) * ys + bpp * xs; + d = ds_get_data(ds) + + ds_get_linesize(ds) * yd + bpp * xd; for (y = 0; y < h; y++) { memmove(d, s, wb); - d += ds->linesize; - s += ds->linesize; + d += ds_get_linesize(ds); + s += ds_get_linesize(ds); } } else { - s = ds->data + - ds->linesize * (ys + h - 1) + bpp * xs; - d = ds->data + - ds->linesize * (yd + h - 1) + bpp * xd; + s = ds_get_data(ds) + + ds_get_linesize(ds) * (ys + h - 1) + bpp * xs; + d = ds_get_data(ds) + + ds_get_linesize(ds) * (yd + h - 1) + bpp * xd; for (y = 0; y < h; y++) { memmove(d, s, wb); - d -= ds->linesize; - s -= ds->linesize; + d -= ds_get_linesize(ds); + s -= ds_get_linesize(ds); } } } @@ -363,7 +363,7 @@ static inline unsigned int col_expand(DisplayState *ds, unsigned int col) { - switch(ds->depth) { + switch(ds_get_bits_per_pixel(ds)) { case 8: col |= col << 8; col |= col << 16; @@ -433,13 +433,13 @@ bgcol = color_table[t_attrib->bold][t_attrib->bgcol]; } - bpp = (ds->depth + 7) >> 3; - d = ds->data + - ds->linesize * y * FONT_HEIGHT + bpp * x * FONT_WIDTH; - linesize = ds->linesize; + bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3; + d = ds_get_data(ds) + + ds_get_linesize(ds) * y * FONT_HEIGHT + bpp * x * FONT_WIDTH; + linesize = ds_get_linesize(ds); font_ptr = vgafont16 + FONT_HEIGHT * ch; xorcol = bgcol ^ fgcol; - switch(ds->depth) { + switch(ds_get_bits_per_pixel(ds)) { case 8: for(i = 0; i < FONT_HEIGHT; i++) { font_data = *font_ptr++; @@ -573,7 +573,7 @@ if (s != active_console) return; - vga_fill_rect(s->ds, 0, 0, s->ds->width, s->ds->height, + vga_fill_rect(s->ds, 0, 0, ds_get_width(s->ds), ds_get_height(s->ds), color_table[0][COLOR_BLACK]); y1 = s->y_displayed; for(y = 0; y < s->height; y++) { @@ -586,7 +586,7 @@ if (++y1 == s->total_height) y1 = 0; } - dpy_update(s->ds, 0, 0, s->ds->width, s->ds->height); + dpy_update(s->ds, 0, 0, ds_get_width(s->ds), ds_get_height(s->ds)); console_show_cursor(s, 1); } @@ -1121,12 +1121,12 @@ { TextConsole *s = (TextConsole *) opaque; - if (s->g_width != s->ds->width || s->g_height != s->ds->height) { + if (s->g_width != ds_get_width(s->ds) || s->g_height != ds_get_height(s->ds)) { if (s->console_type == TEXT_CONSOLE_FIXED_SIZE) dpy_resize(s->ds, s->g_width, s->g_height); else { - s->g_width = s->ds->width; - s->g_height = s->ds->height; + s->g_width = ds_get_width(s->ds); + s->g_height = ds_get_height(s->ds); text_console_resize(s); } } @@ -1287,7 +1287,7 @@ void qemu_console_resize(QEMUConsole *console, int width, int height) { if (console->g_width != width || console->g_height != height - || !console->ds->data) { + || !ds_get_data(console->ds)) { console->g_width = width; console->g_height = height; if (active_console == console) { diff --git a/console.h b/console.h --- a/console.h +++ b/console.h @@ -113,6 +113,36 @@ s->dpy_text_cursor(s, x, y); } +static inline int ds_get_linesize(DisplayState *ds) +{ + return ds->linesize; +} + +static inline uint8_t* ds_get_data(DisplayState *ds) +{ + return ds->data; +} + +static inline int ds_get_width(DisplayState *ds) +{ + return ds->width; +} + +static inline int ds_get_height(DisplayState *ds) +{ + return ds->height; +} + +static inline int ds_get_bits_per_pixel(DisplayState *ds) +{ + return ds->depth; +} + +static inline int ds_get_bytes_per_pixel(DisplayState *ds) +{ + return (ds->depth / 8); +} + typedef unsigned long console_ch_t; static inline void console_write_ch(console_ch_t *dest, uint32_t ch) { diff --git a/hw/blizzard.c b/hw/blizzard.c --- a/hw/blizzard.c +++ b/hw/blizzard.c @@ -166,7 +166,7 @@ s->my[1] = s->data.y + s->data.dy; bypp[0] = s->bpp; - bypp[1] = (s->state->depth + 7) >> 3; + bypp[1] = (ds_get_bits_per_pixel(s->state) + 7) >> 3; bypl[0] = bypp[0] * s->data.pitch; bypl[1] = bypp[1] * s->x; bypl[2] = bypp[0] * s->data.dx; @@ -895,7 +895,7 @@ if (!s->enable) return; - if (s->x != s->state->width || s->y != s->state->height) { + if (s->x != ds_get_width(s->state) || s->y != ds_get_height(s->state)) { s->invalidate = 1; qemu_console_resize(s->console, s->x, s->y); } @@ -904,8 +904,8 @@ s->invalidate = 0; if (s->blank) { - bypp = (s->state->depth + 7) >> 3; - memset(s->state->data, 0, bypp * s->x * s->y); + bypp = (ds_get_bits_per_pixel(s->state) + 7) >> 3; + memset(ds_get_data(s->state), 0, bypp * s->x * s->y); return; } @@ -918,12 +918,12 @@ if (s->mx[1] <= s->mx[0]) return; - bypp = (s->state->depth + 7) >> 3; + bypp = (ds_get_bits_per_pixel(s->state) + 7) >> 3; bypl = bypp * s->x; bwidth = bypp * (s->mx[1] - s->mx[0]); y = s->my[0]; src = s->fb + bypl * y + bypp * s->mx[0]; - dst = s->state->data + bypl * y + bypp * s->mx[0]; + dst = ds_get_data(s->state) + bypl * y + bypp * s->mx[0]; for (; y < s->my[1]; y ++, src += bypl, dst += bypl) memcpy(dst, src, bwidth); @@ -940,8 +940,8 @@ struct blizzard_s *s = (struct blizzard_s *) opaque; blizzard_update_display(opaque); - if (s && s->state->data) - ppm_save(filename, s->state->data, s->x, s->y, s->state->linesize); + if (s && ds_get_data(s->state)) + ppm_save(filename, ds_get_data(s->state), s->x, s->y, ds_get_linesize(s->state)); } #define DEPTH 8 @@ -962,7 +962,7 @@ s->state = ds; s->fb = qemu_malloc(0x180000); - switch (s->state->depth) { + switch (ds_get_bits_per_pixel(s->state)) { case 0: s->line_fn_tab[0] = s->line_fn_tab[1] qemu_mallocz(sizeof(blizzard_fn_t) * 0x10); diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c --- a/hw/cirrus_vga.c +++ b/hw/cirrus_vga.c @@ -2342,9 +2342,9 @@ color1 = s->rgb_to_pixel(c6_to_8(palette[0xf * 3]), c6_to_8(palette[0xf * 3 + 1]), c6_to_8(palette[0xf * 3 + 2])); - bpp = ((s->ds->depth + 7) >> 3); + bpp = ((ds_get_bits_per_pixel(s->ds) + 7) >> 3); d1 += x1 * bpp; - switch(s->ds->depth) { + switch(ds_get_bits_per_pixel(s->ds)) { default: break; case 8: diff --git a/hw/g364fb.c b/hw/g364fb.c --- a/hw/g364fb.c +++ b/hw/g364fb.c @@ -72,7 +72,7 @@ static void g364fb_draw_graphic(G364State *s, int full_update) { - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 8: g364fb_draw_graphic8(s, full_update); break; @@ -86,7 +86,7 @@ g364fb_draw_graphic32(s, full_update); break; default: - printf("g364fb: unknown depth %d\n", s->ds->depth); + printf("g364fb: unknown depth %d\n", ds_get_bits_per_pixel(s->ds)); return; } @@ -101,11 +101,11 @@ if (!full_update) return; - w = s->scr_width * ((s->ds->depth + 7) >> 3); - d = s->ds->data; + w = s->scr_width * ((ds_get_bits_per_pixel(s->ds) + 7) >> 3); + d = ds_get_data(s->ds); for(i = 0; i < s->scr_height; i++) { memset(d, 0, w); - d += s->ds->linesize; + d += ds_get_linesize(s->ds); } dpy_update(s->ds, 0, 0, s->scr_width, s->scr_height); @@ -131,7 +131,7 @@ s->graphic_mode = graphic_mode; full_update = 1; } - if (s->scr_width != s->ds->width || s->scr_height != s->ds->height) { + if (s->scr_width != ds_get_width(s->ds) || s->scr_height != ds_get_height(s->ds)) { qemu_console_resize(s->console, s->scr_width, s->scr_height); full_update = 1; } diff --git a/hw/g364fb_template.h b/hw/g364fb_template.h --- a/hw/g364fb_template.h +++ b/hw/g364fb_template.h @@ -28,7 +28,7 @@ data_buffer = s->vram_buffer; w_display = s->scr_width * PIXEL_WIDTH / 8; - data_display = s->ds->data; + data_display = ds_get_data(s->ds); for(i = 0; i < s->scr_height; i++) { dd = data_display; for (j = 0; j < s->scr_width; j++, dd += PIXEL_WIDTH / 8, data_buffer++) { @@ -38,6 +38,6 @@ s->palette[index][1], s->palette[index][2]); } - data_display += s->ds->linesize; + data_display += ds_get_linesize(s->ds); } } diff --git a/hw/jazz_led.c b/hw/jazz_led.c --- a/hw/jazz_led.c +++ b/hw/jazz_led.c @@ -155,8 +155,8 @@ uint8_t *d; int x, bpp; - bpp = (ds->depth + 7) >> 3; - d = ds->data + ds->linesize * posy + bpp * posx1; + bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3; + d = ds_get_data(ds) + ds_get_linesize(ds) * posy + bpp * posx1; switch(bpp) { case 1: for (x = posx1; x <= posx2; x++) { @@ -184,25 +184,25 @@ uint8_t *d; int y, bpp; - bpp = (ds->depth + 7) >> 3; - d = ds->data + ds->linesize * posy1 + bpp * posx; + bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3; + d = ds_get_data(ds) + ds_get_linesize(ds) * posy1 + bpp * posx; switch(bpp) { case 1: for (y = posy1; y <= posy2; y++) { *((uint8_t *)d) = color; - d += ds->linesize; + d += ds_get_linesize(ds); } break; case 2: for (y = posy1; y <= posy2; y++) { *((uint16_t *)d) = color; - d += ds->linesize; + d += ds_get_linesize(ds); } break; case 4: for (y = posy1; y <= posy2; y++) { *((uint32_t *)d) = color; - d += ds->linesize; + d += ds_get_linesize(ds); } break; } @@ -218,17 +218,17 @@ if (s->state & REDRAW_BACKGROUND) { /* clear screen */ - bpp = (ds->depth + 7) >> 3; - d1 = ds->data; - for (y = 0; y < ds->height; y++) { - memset(d1, 0x00, ds->width * bpp); - d1 += ds->linesize; + bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3; + d1 = ds_get_data(ds); + for (y = 0; y < ds_get_height(ds); y++) { + memset(d1, 0x00, ds_get_width(ds) * bpp); + d1 += ds_get_linesize(ds); } } if (s->state & REDRAW_SEGMENTS) { /* set colors according to bpp */ - switch (ds->depth) { + switch (ds_get_bits_per_pixel(ds)) { case 8: color_segment = rgb_to_pixel8(0xaa, 0xaa, 0xaa); color_led = rgb_to_pixel8(0x00, 0xff, 0x00); @@ -272,7 +272,7 @@ } s->state = REDRAW_NONE; - dpy_update(ds, 0, 0, ds->width, ds->height); + dpy_update(ds, 0, 0, ds_get_width(ds), ds_get_height(ds)); } static void jazz_led_invalidate_display(void *opaque) diff --git a/hw/musicpal.c b/hw/musicpal.c --- a/hw/musicpal.c +++ b/hw/musicpal.c @@ -801,7 +801,7 @@ (musicpal_lcd_state *s, int x, int y, type col) \ { \ int dx, dy; \ - type *pixel = &((type *) s->ds->data)[(y * 128 * 3 + x) * 3]; \ + type *pixel = &((type *) ds_get_data(s->ds))[(y * 128 * 3 + x) * 3]; \ \ for (dy = 0; dy < 3; dy++, pixel += 127 * 3) \ for (dx = 0; dx < 3; dx++, pixel++) \ @@ -818,7 +818,7 @@ musicpal_lcd_state *s = opaque; int x, y, col; - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 0: return; #define LCD_REFRESH(depth, func) \ @@ -838,7 +838,7 @@ LCD_REFRESH(32, (s->ds->bgr ? rgb_to_pixel32bgr : rgb_to_pixel32)) default: cpu_abort(cpu_single_env, "unsupported colour depth %i\n", - s->ds->depth); + ds_get_bits_per_pixel(s->ds)); } dpy_update(s->ds, 0, 0, 128*3, 64*3); diff --git a/hw/omap_lcdc.c b/hw/omap_lcdc.c --- a/hw/omap_lcdc.c +++ b/hw/omap_lcdc.c @@ -125,7 +125,7 @@ uint8_t *s, *d; if (!omap_lcd || omap_lcd->plm == 1 || - !omap_lcd->enable || !omap_lcd->state->depth) + !omap_lcd->enable || !ds_get_bits_per_pixel(omap_lcd->state)) return; frame_offset = 0; @@ -145,25 +145,25 @@ /* Colour depth */ switch ((omap_lcd->palette[0] >> 12) & 7) { case 1: - draw_line = draw_line_table2[omap_lcd->state->depth]; + draw_line = draw_line_table2[ds_get_bits_per_pixel(omap_lcd->state)]; bpp = 2; break; case 2: - draw_line = draw_line_table4[omap_lcd->state->depth]; + draw_line = draw_line_table4[ds_get_bits_per_pixel(omap_lcd->state)]; bpp = 4; break; case 3: - draw_line = draw_line_table8[omap_lcd->state->depth]; + draw_line = draw_line_table8[ds_get_bits_per_pixel(omap_lcd->state)]; bpp = 8; break; case 4 ... 7: if (!omap_lcd->tft) - draw_line = draw_line_table12[omap_lcd->state->depth]; + draw_line = draw_line_table12[ds_get_bits_per_pixel(omap_lcd->state)]; else - draw_line = draw_line_table16[omap_lcd->state->depth]; + draw_line = draw_line_table16[ds_get_bits_per_pixel(omap_lcd->state)]; bpp = 16; break; @@ -174,8 +174,8 @@ /* Resolution */ width = omap_lcd->width; - if (width != omap_lcd->state->width || - omap_lcd->height != omap_lcd->state->height) { + if (width != ds_get_width(omap_lcd->state) || + omap_lcd->height != ds_get_height(omap_lcd->state)) { qemu_console_resize(omap_lcd->console, omap_lcd->width, omap_lcd->height); omap_lcd->invalidate = 1; @@ -202,7 +202,7 @@ if (omap_lcd->dma->dual) omap_lcd->dma->current_frame ^= 1; - if (!omap_lcd->state->depth) + if (!ds_get_bits_per_pixel(omap_lcd->state)) return; line = 0; @@ -217,8 +217,8 @@ step = width * bpp >> 3; scanline = frame_base + step * line; s = (uint8_t *) (phys_ram_base + scanline); - d = omap_lcd->state->data; - linesize = omap_lcd->state->linesize; + d = ds_get_data(omap_lcd->state); + linesize = ds_get_linesize(omap_lcd->state); dirty[0] = dirty[1] cpu_physical_memory_get_dirty(scanline, VGA_DIRTY_FLAG); @@ -293,10 +293,10 @@ static void omap_screen_dump(void *opaque, const char *filename) { struct omap_lcd_panel_s *omap_lcd = opaque; omap_update_display(opaque); - if (omap_lcd && omap_lcd->state->data) - ppm_save(filename, omap_lcd->state->data, + if (omap_lcd && ds_get_data(omap_lcd->state)) + ppm_save(filename, ds_get_data(omap_lcd->state), omap_lcd->width, omap_lcd->height, - omap_lcd->state->linesize); + ds_get_linesize(omap_lcd->state)); } static void omap_invalidate_display(void *opaque) { diff --git a/hw/pl110.c b/hw/pl110.c --- a/hw/pl110.c +++ b/hw/pl110.c @@ -124,7 +124,7 @@ if (!pl110_enabled(s)) return; - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 0: return; case 8: @@ -190,7 +190,7 @@ if (base > 0x80000000) base -= 0x80000000; src = phys_ram_base + base; - dest = s->ds->data; + dest = ds_get_data(s->ds); first = -1; addr = base; @@ -249,7 +249,7 @@ b = (raw & 0x1f) << 3; /* The I bit is ignored. */ raw >>= 6; - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 8: s->pallette[n] = rgb_to_pixel8(r, g, b); break; diff --git a/hw/pxa2xx_lcd.c b/hw/pxa2xx_lcd.c --- a/hw/pxa2xx_lcd.c +++ b/hw/pxa2xx_lcd.c @@ -650,7 +650,7 @@ } break; } - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 8: *dest = rgb_to_pixel8(r, g, b) | alpha; break; @@ -693,7 +693,7 @@ else if (s->bpp > pxa_lcdc_8bpp) src_width *= 2; - dest = s->ds->data; + dest = ds_get_data(s->ds); dest_width = s->xres * s->dest_width; addr = (ram_addr_t) (fb - phys_ram_base); @@ -750,7 +750,7 @@ src_width *= 2; dest_width = s->yres * s->dest_width; - dest = s->ds->data + dest_width * (s->xres - 1); + dest = ds_get_data(s->ds) + dest_width * (s->xres - 1); addr = (ram_addr_t) (fb - phys_ram_base); start = addr + s->yres * src_width; @@ -1006,7 +1006,7 @@ pxa2xx_invalidate_display, pxa2xx_screen_dump, NULL, s); - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 0: s->dest_width = 0; break; diff --git a/hw/ssd0303.c b/hw/ssd0303.c --- a/hw/ssd0303.c +++ b/hw/ssd0303.c @@ -206,7 +206,7 @@ if (!s->redraw) return; - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 0: return; case 15: @@ -238,7 +238,7 @@ colors[0] = colortab + dest_width; colors[1] = colortab; } - dest = s->ds->data; + dest = ds_get_data(s->ds); for (y = 0; y < 16; y++) { line = (y + s->start_line) & 63; src = s->framebuffer + 132 * (line >> 3) + 36; diff --git a/hw/ssd0323.c b/hw/ssd0323.c --- a/hw/ssd0323.c +++ b/hw/ssd0323.c @@ -187,7 +187,7 @@ if (!s->redraw) return; - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 0: return; case 15: @@ -210,7 +210,7 @@ for (i = 0; i < 16; i++) { int n; colors[i] = p; - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 15: n = i * 2 + (i >> 3); p[0] = n | (n << 5); @@ -233,7 +233,7 @@ p += dest_width; } /* TODO: Implement row/column remapping. */ - dest = s->ds->data; + dest = ds_get_data(s->ds); for (y = 0; y < 64; y++) { line = y; src = s->framebuffer + 64 * line; diff --git a/hw/tcx.c b/hw/tcx.c --- a/hw/tcx.c +++ b/hw/tcx.c @@ -55,7 +55,7 @@ { int i; for(i = start; i < end; i++) { - switch(s->ds->depth) { + switch(ds_get_bits_per_pixel(s->ds)) { default: case 8: s->palette[i] = rgb_to_pixel8(s->r[i], s->g[i], s->b[i]); @@ -200,18 +200,18 @@ uint8_t *d, *s; void (*f)(TCXState *s1, uint8_t *dst, const uint8_t *src, int width); - if (ts->ds->depth == 0) + if (ds_get_bits_per_pixel(ts->ds) == 0) return; page = ts->vram_offset; y_start = -1; page_min = 0xffffffff; page_max = 0; - d = ts->ds->data; + d = ds_get_data(ts->ds); s = ts->vram; - dd = ts->ds->linesize; + dd = ds_get_linesize(ts->ds); ds = 1024; - switch (ts->ds->depth) { + switch (ds_get_bits_per_pixel(ts->ds)) { case 32: f = tcx_draw_line32; break; @@ -278,7 +278,7 @@ uint8_t *d, *s; uint32_t *cptr, *s24; - if (ts->ds->depth != 32) + if (ds_get_bits_per_pixel(ts->ds) != 32) return; page = ts->vram_offset; page24 = ts->vram24_offset; @@ -286,11 +286,11 @@ y_start = -1; page_min = 0xffffffff; page_max = 0; - d = ts->ds->data; + d = ds_get_data(ts->ds); s = ts->vram; s24 = ts->vram24; cptr = ts->cplane; - dd = ts->ds->linesize; + dd = ds_get_linesize(ts->ds); ds = 1024; for(y = 0; y < ts->height; y += 4, page += TARGET_PAGE_SIZE, diff --git a/hw/vga.c b/hw/vga.c --- a/hw/vga.c +++ b/hw/vga.c @@ -1164,7 +1164,7 @@ static inline int get_depth_index(DisplayState *s) { - switch(s->depth) { + switch(ds_get_bits_per_pixel(s)) { default: case 8: return 0; @@ -1326,7 +1326,7 @@ cw = 9; if (s->sr[1] & 0x08) cw = 16; /* NOTE: no 18 pixel wide */ - x_incr = cw * ((s->ds->depth + 7) >> 3); + x_incr = cw * ((ds_get_bits_per_pixel(s->ds) + 7) >> 3); width = (s->cr[0x01] + 1); if (s->cr[0x06] == 100) { /* ugly hack for CGA 160x100x16 - explain me the logic */ @@ -1376,8 +1376,8 @@ vga_draw_glyph8 = vga_draw_glyph8_table[depth_index]; vga_draw_glyph9 = vga_draw_glyph9_table[depth_index]; - dest = s->ds->data; - linesize = s->ds->linesize; + dest = ds_get_data(s->ds); + linesize = ds_get_linesize(s->ds); ch_attr_ptr = s->last_ch_attr; for(cy = 0; cy < height; cy++) { d1 = dest; @@ -1870,7 +1870,7 @@ VGAState *s = (VGAState *)opaque; int full_update, graphic_mode; - if (s->ds->depth == 0) { + if (ds_get_bits_per_pixel(s->ds) == 0) { /* nothing to do */ } else { full_update = 0; @@ -2755,10 +2755,10 @@ s->graphic_mode = -1; vga_update_display(s); - if (ds->data) { - ppm_save(filename, ds->data, vga_save_w, vga_save_h, - s->ds->linesize); - qemu_free(ds->data); + if (ds_get_data(ds)) { + ppm_save(filename, ds_get_data(ds), vga_save_w, vga_save_h, + ds_get_linesize(s->ds)); + qemu_free(ds_get_data(ds)); } s->ds = saved_ds; } diff --git a/hw/vmware_vga.c b/hw/vmware_vga.c --- a/hw/vmware_vga.c +++ b/hw/vmware_vga.c @@ -321,7 +321,7 @@ width = s->bypp * w; start = s->bypp * x + bypl * y; src = s->vram + start; - dst = s->ds->data + start; + dst = ds_get_data(s->ds) + start; for (; line > 0; line --, src += bypl, dst += bypl) memcpy(dst, src, width); @@ -333,7 +333,7 @@ static inline void vmsvga_update_screen(struct vmsvga_state_s *s) { #ifndef DIRECT_VRAM - memcpy(s->ds->data, s->vram, s->bypp * s->width * s->height); + memcpy(ds_get_data(s->ds), s->vram, s->bypp * s->width * s->height); #endif dpy_update(s->ds, 0, 0, s->width, s->height); @@ -375,7 +375,7 @@ int x0, int y0, int x1, int y1, int w, int h) { # ifdef DIRECT_VRAM - uint8_t *vram = s->ds->data; + uint8_t *vram = ds_get_data(s->ds); # else uint8_t *vram = s->vram; # endif @@ -412,7 +412,7 @@ uint32_t c, int x, int y, int w, int h) { # ifdef DIRECT_VRAM - uint8_t *vram = s->ds->data; + uint8_t *vram = ds_get_data(s->ds); # else uint8_t *vram = s->vram; # endif @@ -917,7 +917,7 @@ s->width = -1; s->height = -1; s->svgaid = SVGA_ID; - s->depth = s->ds->depth ? s->ds->depth : 24; + s->depth = ds_get_bits_per_pixel(s->ds) ? ds_get_bits_per_pixel(s->ds) : 24; s->bypp = (s->depth + 7) >> 3; s->cursor.on = 0; s->redraw_fifo_first = 0; @@ -978,7 +978,7 @@ } if (s->depth == 32) { - ppm_save(filename, s->vram, s->width, s->height, s->ds->linesize); + ppm_save(filename, s->vram, s->width, s->height, ds_get_linesize(s->ds)); } } @@ -996,7 +996,7 @@ struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque; addr -= s->vram_base; if (addr < s->fb_size) - return *(uint8_t *) (s->ds->data + addr); + return *(uint8_t *) (ds_get_data(s->ds) + addr); else return *(uint8_t *) (s->vram + addr); } @@ -1006,7 +1006,7 @@ struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque; addr -= s->vram_base; if (addr < s->fb_size) - return *(uint16_t *) (s->ds->data + addr); + return *(uint16_t *) (ds_get_data(s->ds) + addr); else return *(uint16_t *) (s->vram + addr); } @@ -1016,7 +1016,7 @@ struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque; addr -= s->vram_base; if (addr < s->fb_size) - return *(uint32_t *) (s->ds->data + addr); + return *(uint32_t *) (ds_get_data(s->ds) + addr); else return *(uint32_t *) (s->vram + addr); } @@ -1027,7 +1027,7 @@ struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque; addr -= s->vram_base; if (addr < s->fb_size) - *(uint8_t *) (s->ds->data + addr) = value; + *(uint8_t *) (ds_get_data(s->ds) + addr) = value; else *(uint8_t *) (s->vram + addr) = value; } @@ -1038,7 +1038,7 @@ struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque; addr -= s->vram_base; if (addr < s->fb_size) - *(uint16_t *) (s->ds->data + addr) = value; + *(uint16_t *) (ds_get_data(s->ds) + addr) = value; else *(uint16_t *) (s->vram + addr) = value; } @@ -1049,7 +1049,7 @@ struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque; addr -= s->vram_base; if (addr < s->fb_size) - *(uint32_t *) (s->ds->data + addr) = value; + *(uint32_t *) (ds_get_data(s->ds) + addr) = value; else *(uint32_t *) (s->vram + addr) = value; } diff --git a/hw/xenfb.c b/hw/xenfb.c --- a/hw/xenfb.c +++ b/hw/xenfb.c @@ -325,8 +325,8 @@ if (xenfb->abs_pointer_wanted) xenfb_send_position(xenfb, - dx * (xenfb->c.ds->width - 1) / 0x7fff, - dy * (xenfb->c.ds->height - 1) / 0x7fff, + dx * (ds_get_width(xenfb->c.ds) - 1) / 0x7fff, + dy * (ds_get_height(xenfb->c.ds) - 1) / 0x7fff, dz); else xenfb_send_motion(xenfb, dx, dy, dz); @@ -566,9 +566,9 @@ + xenfb->offset \ + (line * xenfb->row_stride) \ + (x * xenfb->depth / 8)); \ - DST_T *dst = (DST_T *)(xenfb->c.ds->data \ - + (line * xenfb->c.ds->linesize) \ - + (x * xenfb->c.ds->depth / 8)); \ + DST_T *dst = (DST_T *)(ds_get_data(xenfb->c.ds) \ + + (line * ds_get_linesize(xenfb->c.ds)) \ + + (x * ds_get_bytes_per_pixel(xenfb->c.ds))); \ int col; \ const int RSS = 32 - (RSB + GSB + BSB); \ const int GSS = 32 - (GSB + BSB); \ @@ -588,7 +588,7 @@ (((spix << GSS) & GSM & GDM) >> GDS) | \ (((spix << BSS) & BSM & BDM) >> BDS); \ src = (SRC_T *) ((unsigned long) src + xenfb->depth / 8); \ - dst = (DST_T *) ((unsigned long) dst + xenfb->c.ds->depth / 8); \ + dst = (DST_T *) ((unsigned long) dst + ds_get_bytes_per_pixel(xenfb->c.ds)); \ } \ } @@ -610,9 +610,9 @@ * - Put ds->shared_buf back into use then. */ if (1 /* !xenfb->c.ds->shared_buf */) { - if (xenfb->depth == xenfb->c.ds->depth) { /* Perfect match can use fast path */ + if (xenfb->depth == ds_get_bits_per_pixel(xenfb->c.ds)) { /* Perfect match can use fast path */ for (line = y ; line < (y+h) ; line++) { - memcpy(xenfb->c.ds->data + (line * xenfb->c.ds->linesize) + (x * xenfb->c.ds->depth / 8), + memcpy(ds_get_data(xenfb->c.ds) + (line * ds_get_linesize(xenfb->c.ds)) + (x * ds_get_bytes_per_pixel(xenfb->c.ds)), xenfb->pixels + xenfb->offset + (line * xenfb->row_stride) + (x * xenfb->depth / 8), w * xenfb->depth / 8); } @@ -622,23 +622,23 @@ /* 24 bit == r:8 g:8 b:8 */ /* 32 bit == r:8 g:8 b:8 (padding:8) */ if (xenfb->depth == 8) { - if (xenfb->c.ds->depth == 16) { + if (ds_get_bits_per_pixel(xenfb->c.ds) == 16) { BLT(uint8_t, uint16_t, 3, 3, 2, 5, 6, 5); - } else if (xenfb->c.ds->depth == 32) { + } else if (ds_get_bits_per_pixel(xenfb->c.ds) == 32) { BLT(uint8_t, uint32_t, 3, 3, 2, 8, 8, 8); } } else if (xenfb->depth == 16) { - if (xenfb->c.ds->depth == 8) { + if (ds_get_bits_per_pixel(xenfb->c.ds) == 8) { BLT(uint16_t, uint8_t, 5, 6, 5, 3, 3, 2); - } else if (xenfb->c.ds->depth == 32) { + } else if (ds_get_bits_per_pixel(xenfb->c.ds) == 32) { BLT(uint16_t, uint32_t, 5, 6, 5, 8, 8, 8); } } else if (xenfb->depth == 24 || xenfb->depth == 32) { - if (xenfb->c.ds->depth == 8) { + if (ds_get_bits_per_pixel(xenfb->c.ds) == 8) { BLT(uint32_t, uint8_t, 8, 8, 8, 3, 3, 2); - } else if (xenfb->c.ds->depth == 16) { + } else if (ds_get_bits_per_pixel(xenfb->c.ds) == 16) { BLT(uint32_t, uint16_t, 8, 8, 8, 5, 6, 5); - } else if (xenfb->c.ds->depth == 32) { + } else if (ds_get_bits_per_pixel(xenfb->c.ds) == 32) { BLT(uint32_t, uint32_t, 8, 8, 8, 8, 8, 8); } } @@ -730,7 +730,7 @@ } /* resize if needed */ - if (xenfb->width != xenfb->c.ds->width || xenfb->height != xenfb->c.ds->height) { + if (xenfb->width != ds_get_width(xenfb->c.ds) || xenfb->height != ds_get_height(xenfb->c.ds)) { xen_be_printf(&xenfb->c.xendev, 1, "update: resizing: %dx%d\n", xenfb->width, xenfb->height); dpy_resize(xenfb->c.ds, xenfb->width, xenfb->height); diff --git a/sdl.c b/sdl.c --- a/sdl.c +++ b/sdl.c @@ -88,7 +88,7 @@ glGenTextures(1, &texture_ref); glBindTexture(GL_TEXTURE_RECTANGLE_ARB, texture_ref); glPixelStorei(GL_UNPACK_LSB_FIRST, 1); - switch (ds->depth) { + switch (ds_get_bits_per_pixel(ds)) { case 8: if (ds->palette == NULL) { tex_format = GL_RGB; @@ -128,8 +128,8 @@ } break; } - glPixelStorei(GL_UNPACK_ROW_LENGTH, (ds->linesize * 8) / ds->depth); - glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, gl_format, ds->width, ds->height, 0, tex_format, tex_type, pixels); + glPixelStorei(GL_UNPACK_ROW_LENGTH, (ds_get_linesize(ds) / ds_get_bytes_per_pixel(ds))); + glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, gl_format, ds_get_width(ds), ds_get_height(ds), 0, tex_format, tex_type, pixels); glTexParameterf(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_PRIORITY, 1.0); glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR); @@ -140,10 +140,10 @@ static void opengl_update(DisplayState *ds, int x, int y, int w, int h) { - int bpp = ds->depth / 8; - GLvoid *pixels = ds->data + y * ds->linesize + x * bpp; + int bpp = ds_get_bytes_per_pixel(ds); + GLvoid *pixels = ds_get_data(ds) + y * ds_get_linesize(ds) + x * bpp; glBindTexture(GL_TEXTURE_RECTANGLE_ARB, texture_ref); - glPixelStorei(GL_UNPACK_ROW_LENGTH, ds->linesize / bpp); + glPixelStorei(GL_UNPACK_ROW_LENGTH, ds_get_linesize(ds) / bpp); glTexSubImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, x, y, w, h, tex_format, tex_type, pixels); glBegin(GL_QUADS); glTexCoord2d(0, 0); @@ -177,7 +177,7 @@ static void sdl_setdata(DisplayState *ds, void *pixels) { uint32_t rmask, gmask, bmask, amask = 0; - switch (ds->depth) { + switch (ds_get_bits_per_pixel(ds)) { case 8: rmask = 0x000000E0; gmask = 0x0000001C; @@ -201,8 +201,8 @@ default: return; } - shared = SDL_CreateRGBSurfaceFrom(pixels, width, height, ds->depth, ds->linesize, rmask , gmask, bmask, amask); - if (ds->depth == 8 && ds->palette != NULL) { + shared = SDL_CreateRGBSurfaceFrom(pixels, width, height, ds_get_bits_per_pixel(ds), ds_get_linesize(ds), rmask , gmask, bmask, amask); + if (ds_get_bits_per_pixel(ds) == 8 && ds->palette != NULL) { SDL_Color palette[256]; int i; for (i = 0; i < 256; i++) { @@ -309,7 +309,7 @@ static void sdl_resize(DisplayState *ds, int w, int h) { - sdl_resize_shared(ds, w, h, 0, w * (ds->depth / 8), NULL); + sdl_resize_shared(ds, w, h, 0, w * ds_get_bytes_per_pixel(ds), NULL); } static void sdl_colourdepth(DisplayState *ds, int depth) @@ -537,7 +537,7 @@ static void toggle_full_screen(DisplayState *ds) { gui_fullscreen = !gui_fullscreen; - sdl_resize_shared(ds, ds->width, ds->height, ds->depth, ds->linesize, ds->data); + sdl_resize_shared(ds, ds_get_width(ds), ds_get_height(ds), ds_get_bits_per_pixel(ds), ds_get_linesize(ds), ds_get_data(ds)); if (gui_fullscreen) { gui_saved_grab = gui_grab; sdl_grab_start(); diff --git a/vnc.c b/vnc.c --- a/vnc.c +++ b/vnc.c @@ -514,10 +514,10 @@ vnc_framebuffer_update(vs, x, y, w, h, 0); - row = vs->ds->data + y * vs->ds->linesize + x * vs->depth; + row = ds_get_data(vs->ds) + y * ds_get_linesize(vs->ds) + x * vs->depth; for (i = 0; i < h; i++) { vs->write_pixels(vs, row, w * vs->depth); - row += vs->ds->linesize; + row += ds_get_linesize(vs->ds); } } @@ -594,7 +594,7 @@ uint8_t *dst_row; uint8_t *old_row; int y = 0; - int pitch = ds->linesize; + int pitch = ds_get_linesize(ds); VncState *vs = ds->opaque; int updating_client = 1; @@ -620,11 +620,11 @@ pitch = -pitch; } - src = (ds->linesize * (src_y + y) + vs->depth * src_x); - dst = (ds->linesize * (dst_y + y) + vs->depth * dst_x); + src = (ds_get_linesize(ds) * (src_y + y) + vs->depth * src_x); + dst = (ds_get_linesize(ds) * (dst_y + y) + vs->depth * dst_x); - src_row = ds->data + src; - dst_row = ds->data + dst; + src_row = ds_get_data(ds) + src; + dst_row = ds_get_data(ds) + dst; old_row = vs->old_data + dst; for (y = 0; y < h; y++) { @@ -1916,10 +1916,10 @@ vga_hw_update(); - vs->width = vs->ds->width; - vs->height = vs->ds->height; - vnc_write_u16(vs, vs->ds->width); - vnc_write_u16(vs, vs->ds->height); + vs->width = ds_get_width(vs->ds); + vs->height = ds_get_height(vs->ds); + vnc_write_u16(vs, ds_get_width(vs->ds)); + vnc_write_u16(vs, ds_get_height(vs->ds)); pixel_format_message(vs); diff --git a/vnchextile.h b/vnchextile.h --- a/vnchextile.h +++ b/vnchextile.h @@ -13,7 +13,7 @@ void *last_fg_, int *has_bg, int *has_fg) { - uint8_t *row = (vs->ds->data + y * vs->ds->linesize + x * vs->depth); + uint8_t *row = (ds_get_data(vs->ds) + y * ds_get_linesize(vs->ds) + x * vs->depth); pixel_t *irow = (pixel_t *)row; int j, i; pixel_t *last_bg = (pixel_t *)last_bg_; @@ -57,7 +57,7 @@ } if (n_colors > 2) break; - irow += vs->ds->linesize / sizeof(pixel_t); + irow += ds_get_linesize(vs->ds) / sizeof(pixel_t); } if (n_colors > 1 && fg_count > bg_count) { @@ -105,7 +105,7 @@ n_data += 2; n_subtiles++; } - irow += vs->ds->linesize / sizeof(pixel_t); + irow += ds_get_linesize(vs->ds) / sizeof(pixel_t); } break; case 3: @@ -161,7 +161,7 @@ n_data += 2; n_subtiles++; } - irow += vs->ds->linesize / sizeof(pixel_t); + irow += ds_get_linesize(vs->ds) / sizeof(pixel_t); } /* A SubrectsColoured subtile invalidates the foreground color */ @@ -198,7 +198,7 @@ } else { for (j = 0; j < h; j++) { vs->write_pixels(vs, row, w * vs->depth); - row += vs->ds->linesize; + row += ds_get_linesize(vs->ds); } } } diff --git a/xenfbfront.c b/xenfbfront.c --- a/xenfbfront.c +++ b/xenfbfront.c @@ -73,10 +73,10 @@ if (ds->shared_buf) { offset = pixels - xs->vga_vram; ds->data = pixels; - fbfront_resize(fb_dev, ds->width, ds->height, ds->linesize, ds->depth, offset); + fbfront_resize(fb_dev, ds_get_width(ds), ds_get_height(ds), ds_get_linesize(ds), ds_get_bits_per_pixel(ds), offset); } else { ds->data = xs->nonshared_vram; - fbfront_resize(fb_dev, w, h, linesize, ds->depth, vga_ram_size); + fbfront_resize(fb_dev, w, h, linesize, ds_get_bits_per_pixel(ds), vga_ram_size); } } @@ -93,7 +93,7 @@ ds->data = pixels; if (!fb_dev) return; - fbfront_resize(fb_dev, ds->width, ds->height, ds->linesize, ds->depth, offset); + fbfront_resize(fb_dev, ds_get_width(ds), ds_get_height(ds), ds_get_linesize(ds), ds_get_bits_per_pixel(ds), offset); } static void xenfb_pv_refresh(DisplayState *ds) @@ -151,14 +151,14 @@ { int new_x = buf[i].pos.abs_x; int new_y = buf[i].pos.abs_y; - if (new_x >= s->width) - new_x = s->width - 1; - if (new_y >= s->height) - new_y = s->height - 1; + if (new_x >= ds_get_width(s)) + new_x = ds_get_width(s) - 1; + if (new_y >= ds_get_height(s)) + new_y = ds_get_height(s) - 1; if (kbd_mouse_is_absolute()) { kbd_mouse_event( - new_x * 0x7FFF / (s->width - 1), - new_y * 0x7FFF / (s->height - 1), + new_x * 0x7FFF / (ds_get_width(s) - 1), + new_y * 0x7FFF / (ds_get_height(s) - 1), buf[i].pos.rel_z, buttons); } else { @@ -192,8 +192,8 @@ buttons &= ~button; if (kbd_mouse_is_absolute()) kbd_mouse_event( - x * 0x7FFF / (s->width - 1), - y * 0x7FFF / (s->height - 1), + x * 0x7FFF / (ds_get_width(s) - 1), + y * 0x7FFF / (ds_get_height(s) - 1), 0, buttons); else @@ -287,7 +287,7 @@ for (i = 0; i < n; i++) mfns[n + i] = virtual_to_mfn(xs->nonshared_vram + i * PAGE_SIZE); - fb_dev = init_fbfront(fb_path, mfns, ds->width, ds->height, ds->depth, ds->linesize, 2 * n); + fb_dev = init_fbfront(fb_path, mfns, ds_get_width(ds), ds_get_height(ds), ds_get_bits_per_pixel(ds), ds_get_linesize(ds), 2 * n); free(mfns); if (!fb_dev) { fprintf(stderr,"can''t open frame buffer\n"); @@ -302,7 +302,7 @@ ds->data = xs->nonshared_vram; } if (offset) - fbfront_resize(fb_dev, ds->width, ds->height, ds->linesize, ds->depth, offset); + fbfront_resize(fb_dev, ds_get_width(ds), ds_get_height(ds), ds_get_linesize(ds), ds_get_bits_per_pixel(ds), offset); down(&xs->kbd_sem); free(kbd_path); _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Stefano Stabellini
2009-Mar-02 17:18 UTC
[Xen-devel] [PATCH 2 of 13] Introduce accessors for DisplayState
Import "Introduce accessors for DisplayState" from qemu mainstream, plus few following fixes. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5789 c046a42c-6fe2-441c-8c8c-71466251a162 Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> --- diff --git a/console.c b/console.c --- a/console.c +++ b/console.c @@ -184,7 +184,7 @@ { unsigned int r, g, b, color; - switch(ds->depth) { + switch(ds_get_bits_per_pixel(ds)) { case 8: r = (rgba >> 16) & 0xff; g = (rgba >> 8) & 0xff; @@ -217,9 +217,9 @@ uint8_t *d, *d1; int x, y, bpp; - bpp = (ds->depth + 7) >> 3; - d1 = ds->data + - ds->linesize * posy + bpp * posx; + bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3; + d1 = ds_get_data(ds) + + ds_get_linesize(ds) * posy + bpp * posx; for (y = 0; y < height; y++) { d = d1; switch(bpp) { @@ -242,7 +242,7 @@ } break; } - d1 += ds->linesize; + d1 += ds_get_linesize(ds); } } @@ -253,27 +253,27 @@ uint8_t *d; int wb, y, bpp; - bpp = (ds->depth + 7) >> 3; + bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3; wb = w * bpp; if (yd <= ys) { - s = ds->data + - ds->linesize * ys + bpp * xs; - d = ds->data + - ds->linesize * yd + bpp * xd; + s = ds_get_data(ds) + + ds_get_linesize(ds) * ys + bpp * xs; + d = ds_get_data(ds) + + ds_get_linesize(ds) * yd + bpp * xd; for (y = 0; y < h; y++) { memmove(d, s, wb); - d += ds->linesize; - s += ds->linesize; + d += ds_get_linesize(ds); + s += ds_get_linesize(ds); } } else { - s = ds->data + - ds->linesize * (ys + h - 1) + bpp * xs; - d = ds->data + - ds->linesize * (yd + h - 1) + bpp * xd; + s = ds_get_data(ds) + + ds_get_linesize(ds) * (ys + h - 1) + bpp * xs; + d = ds_get_data(ds) + + ds_get_linesize(ds) * (yd + h - 1) + bpp * xd; for (y = 0; y < h; y++) { memmove(d, s, wb); - d -= ds->linesize; - s -= ds->linesize; + d -= ds_get_linesize(ds); + s -= ds_get_linesize(ds); } } } @@ -363,7 +363,7 @@ static inline unsigned int col_expand(DisplayState *ds, unsigned int col) { - switch(ds->depth) { + switch(ds_get_bits_per_pixel(ds)) { case 8: col |= col << 8; col |= col << 16; @@ -433,13 +433,13 @@ bgcol = color_table[t_attrib->bold][t_attrib->bgcol]; } - bpp = (ds->depth + 7) >> 3; - d = ds->data + - ds->linesize * y * FONT_HEIGHT + bpp * x * FONT_WIDTH; - linesize = ds->linesize; + bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3; + d = ds_get_data(ds) + + ds_get_linesize(ds) * y * FONT_HEIGHT + bpp * x * FONT_WIDTH; + linesize = ds_get_linesize(ds); font_ptr = vgafont16 + FONT_HEIGHT * ch; xorcol = bgcol ^ fgcol; - switch(ds->depth) { + switch(ds_get_bits_per_pixel(ds)) { case 8: for(i = 0; i < FONT_HEIGHT; i++) { font_data = *font_ptr++; @@ -573,7 +573,7 @@ if (s != active_console) return; - vga_fill_rect(s->ds, 0, 0, s->ds->width, s->ds->height, + vga_fill_rect(s->ds, 0, 0, ds_get_width(s->ds), ds_get_height(s->ds), color_table[0][COLOR_BLACK]); y1 = s->y_displayed; for(y = 0; y < s->height; y++) { @@ -586,7 +586,7 @@ if (++y1 == s->total_height) y1 = 0; } - dpy_update(s->ds, 0, 0, s->ds->width, s->ds->height); + dpy_update(s->ds, 0, 0, ds_get_width(s->ds), ds_get_height(s->ds)); console_show_cursor(s, 1); } @@ -1121,12 +1121,12 @@ { TextConsole *s = (TextConsole *) opaque; - if (s->g_width != s->ds->width || s->g_height != s->ds->height) { + if (s->g_width != ds_get_width(s->ds) || s->g_height != ds_get_height(s->ds)) { if (s->console_type == TEXT_CONSOLE_FIXED_SIZE) dpy_resize(s->ds, s->g_width, s->g_height); else { - s->g_width = s->ds->width; - s->g_height = s->ds->height; + s->g_width = ds_get_width(s->ds); + s->g_height = ds_get_height(s->ds); text_console_resize(s); } } @@ -1287,7 +1287,7 @@ void qemu_console_resize(QEMUConsole *console, int width, int height) { if (console->g_width != width || console->g_height != height - || !console->ds->data) { + || !ds_get_data(console->ds)) { console->g_width = width; console->g_height = height; if (active_console == console) { diff --git a/console.h b/console.h --- a/console.h +++ b/console.h @@ -113,6 +113,36 @@ s->dpy_text_cursor(s, x, y); } +static inline int ds_get_linesize(DisplayState *ds) +{ + return ds->linesize; +} + +static inline uint8_t* ds_get_data(DisplayState *ds) +{ + return ds->data; +} + +static inline int ds_get_width(DisplayState *ds) +{ + return ds->width; +} + +static inline int ds_get_height(DisplayState *ds) +{ + return ds->height; +} + +static inline int ds_get_bits_per_pixel(DisplayState *ds) +{ + return ds->depth; +} + +static inline int ds_get_bytes_per_pixel(DisplayState *ds) +{ + return (ds->depth / 8); +} + typedef unsigned long console_ch_t; static inline void console_write_ch(console_ch_t *dest, uint32_t ch) { diff --git a/hw/blizzard.c b/hw/blizzard.c --- a/hw/blizzard.c +++ b/hw/blizzard.c @@ -166,7 +166,7 @@ s->my[1] = s->data.y + s->data.dy; bypp[0] = s->bpp; - bypp[1] = (s->state->depth + 7) >> 3; + bypp[1] = (ds_get_bits_per_pixel(s->state) + 7) >> 3; bypl[0] = bypp[0] * s->data.pitch; bypl[1] = bypp[1] * s->x; bypl[2] = bypp[0] * s->data.dx; @@ -895,7 +895,7 @@ if (!s->enable) return; - if (s->x != s->state->width || s->y != s->state->height) { + if (s->x != ds_get_width(s->state) || s->y != ds_get_height(s->state)) { s->invalidate = 1; qemu_console_resize(s->console, s->x, s->y); } @@ -904,8 +904,8 @@ s->invalidate = 0; if (s->blank) { - bypp = (s->state->depth + 7) >> 3; - memset(s->state->data, 0, bypp * s->x * s->y); + bypp = (ds_get_bits_per_pixel(s->state) + 7) >> 3; + memset(ds_get_data(s->state), 0, bypp * s->x * s->y); return; } @@ -918,12 +918,12 @@ if (s->mx[1] <= s->mx[0]) return; - bypp = (s->state->depth + 7) >> 3; + bypp = (ds_get_bits_per_pixel(s->state) + 7) >> 3; bypl = bypp * s->x; bwidth = bypp * (s->mx[1] - s->mx[0]); y = s->my[0]; src = s->fb + bypl * y + bypp * s->mx[0]; - dst = s->state->data + bypl * y + bypp * s->mx[0]; + dst = ds_get_data(s->state) + bypl * y + bypp * s->mx[0]; for (; y < s->my[1]; y ++, src += bypl, dst += bypl) memcpy(dst, src, bwidth); @@ -940,8 +940,8 @@ struct blizzard_s *s = (struct blizzard_s *) opaque; blizzard_update_display(opaque); - if (s && s->state->data) - ppm_save(filename, s->state->data, s->x, s->y, s->state->linesize); + if (s && ds_get_data(s->state)) + ppm_save(filename, ds_get_data(s->state), s->x, s->y, ds_get_linesize(s->state)); } #define DEPTH 8 @@ -962,7 +962,7 @@ s->state = ds; s->fb = qemu_malloc(0x180000); - switch (s->state->depth) { + switch (ds_get_bits_per_pixel(s->state)) { case 0: s->line_fn_tab[0] = s->line_fn_tab[1] qemu_mallocz(sizeof(blizzard_fn_t) * 0x10); diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c --- a/hw/cirrus_vga.c +++ b/hw/cirrus_vga.c @@ -2342,9 +2342,9 @@ color1 = s->rgb_to_pixel(c6_to_8(palette[0xf * 3]), c6_to_8(palette[0xf * 3 + 1]), c6_to_8(palette[0xf * 3 + 2])); - bpp = ((s->ds->depth + 7) >> 3); + bpp = ((ds_get_bits_per_pixel(s->ds) + 7) >> 3); d1 += x1 * bpp; - switch(s->ds->depth) { + switch(ds_get_bits_per_pixel(s->ds)) { default: break; case 8: diff --git a/hw/g364fb.c b/hw/g364fb.c --- a/hw/g364fb.c +++ b/hw/g364fb.c @@ -72,7 +72,7 @@ static void g364fb_draw_graphic(G364State *s, int full_update) { - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 8: g364fb_draw_graphic8(s, full_update); break; @@ -86,7 +86,7 @@ g364fb_draw_graphic32(s, full_update); break; default: - printf("g364fb: unknown depth %d\n", s->ds->depth); + printf("g364fb: unknown depth %d\n", ds_get_bits_per_pixel(s->ds)); return; } @@ -101,11 +101,11 @@ if (!full_update) return; - w = s->scr_width * ((s->ds->depth + 7) >> 3); - d = s->ds->data; + w = s->scr_width * ((ds_get_bits_per_pixel(s->ds) + 7) >> 3); + d = ds_get_data(s->ds); for(i = 0; i < s->scr_height; i++) { memset(d, 0, w); - d += s->ds->linesize; + d += ds_get_linesize(s->ds); } dpy_update(s->ds, 0, 0, s->scr_width, s->scr_height); @@ -131,7 +131,7 @@ s->graphic_mode = graphic_mode; full_update = 1; } - if (s->scr_width != s->ds->width || s->scr_height != s->ds->height) { + if (s->scr_width != ds_get_width(s->ds) || s->scr_height != ds_get_height(s->ds)) { qemu_console_resize(s->console, s->scr_width, s->scr_height); full_update = 1; } diff --git a/hw/g364fb_template.h b/hw/g364fb_template.h --- a/hw/g364fb_template.h +++ b/hw/g364fb_template.h @@ -28,7 +28,7 @@ data_buffer = s->vram_buffer; w_display = s->scr_width * PIXEL_WIDTH / 8; - data_display = s->ds->data; + data_display = ds_get_data(s->ds); for(i = 0; i < s->scr_height; i++) { dd = data_display; for (j = 0; j < s->scr_width; j++, dd += PIXEL_WIDTH / 8, data_buffer++) { @@ -38,6 +38,6 @@ s->palette[index][1], s->palette[index][2]); } - data_display += s->ds->linesize; + data_display += ds_get_linesize(s->ds); } } diff --git a/hw/jazz_led.c b/hw/jazz_led.c --- a/hw/jazz_led.c +++ b/hw/jazz_led.c @@ -155,8 +155,8 @@ uint8_t *d; int x, bpp; - bpp = (ds->depth + 7) >> 3; - d = ds->data + ds->linesize * posy + bpp * posx1; + bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3; + d = ds_get_data(ds) + ds_get_linesize(ds) * posy + bpp * posx1; switch(bpp) { case 1: for (x = posx1; x <= posx2; x++) { @@ -184,25 +184,25 @@ uint8_t *d; int y, bpp; - bpp = (ds->depth + 7) >> 3; - d = ds->data + ds->linesize * posy1 + bpp * posx; + bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3; + d = ds_get_data(ds) + ds_get_linesize(ds) * posy1 + bpp * posx; switch(bpp) { case 1: for (y = posy1; y <= posy2; y++) { *((uint8_t *)d) = color; - d += ds->linesize; + d += ds_get_linesize(ds); } break; case 2: for (y = posy1; y <= posy2; y++) { *((uint16_t *)d) = color; - d += ds->linesize; + d += ds_get_linesize(ds); } break; case 4: for (y = posy1; y <= posy2; y++) { *((uint32_t *)d) = color; - d += ds->linesize; + d += ds_get_linesize(ds); } break; } @@ -218,17 +218,17 @@ if (s->state & REDRAW_BACKGROUND) { /* clear screen */ - bpp = (ds->depth + 7) >> 3; - d1 = ds->data; - for (y = 0; y < ds->height; y++) { - memset(d1, 0x00, ds->width * bpp); - d1 += ds->linesize; + bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3; + d1 = ds_get_data(ds); + for (y = 0; y < ds_get_height(ds); y++) { + memset(d1, 0x00, ds_get_width(ds) * bpp); + d1 += ds_get_linesize(ds); } } if (s->state & REDRAW_SEGMENTS) { /* set colors according to bpp */ - switch (ds->depth) { + switch (ds_get_bits_per_pixel(ds)) { case 8: color_segment = rgb_to_pixel8(0xaa, 0xaa, 0xaa); color_led = rgb_to_pixel8(0x00, 0xff, 0x00); @@ -272,7 +272,7 @@ } s->state = REDRAW_NONE; - dpy_update(ds, 0, 0, ds->width, ds->height); + dpy_update(ds, 0, 0, ds_get_width(ds), ds_get_height(ds)); } static void jazz_led_invalidate_display(void *opaque) diff --git a/hw/musicpal.c b/hw/musicpal.c --- a/hw/musicpal.c +++ b/hw/musicpal.c @@ -801,7 +801,7 @@ (musicpal_lcd_state *s, int x, int y, type col) \ { \ int dx, dy; \ - type *pixel = &((type *) s->ds->data)[(y * 128 * 3 + x) * 3]; \ + type *pixel = &((type *) ds_get_data(s->ds))[(y * 128 * 3 + x) * 3]; \ \ for (dy = 0; dy < 3; dy++, pixel += 127 * 3) \ for (dx = 0; dx < 3; dx++, pixel++) \ @@ -818,7 +818,7 @@ musicpal_lcd_state *s = opaque; int x, y, col; - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 0: return; #define LCD_REFRESH(depth, func) \ @@ -838,7 +838,7 @@ LCD_REFRESH(32, (s->ds->bgr ? rgb_to_pixel32bgr : rgb_to_pixel32)) default: cpu_abort(cpu_single_env, "unsupported colour depth %i\n", - s->ds->depth); + ds_get_bits_per_pixel(s->ds)); } dpy_update(s->ds, 0, 0, 128*3, 64*3); diff --git a/hw/omap_lcdc.c b/hw/omap_lcdc.c --- a/hw/omap_lcdc.c +++ b/hw/omap_lcdc.c @@ -125,7 +125,7 @@ uint8_t *s, *d; if (!omap_lcd || omap_lcd->plm == 1 || - !omap_lcd->enable || !omap_lcd->state->depth) + !omap_lcd->enable || !ds_get_bits_per_pixel(omap_lcd->state)) return; frame_offset = 0; @@ -145,25 +145,25 @@ /* Colour depth */ switch ((omap_lcd->palette[0] >> 12) & 7) { case 1: - draw_line = draw_line_table2[omap_lcd->state->depth]; + draw_line = draw_line_table2[ds_get_bits_per_pixel(omap_lcd->state)]; bpp = 2; break; case 2: - draw_line = draw_line_table4[omap_lcd->state->depth]; + draw_line = draw_line_table4[ds_get_bits_per_pixel(omap_lcd->state)]; bpp = 4; break; case 3: - draw_line = draw_line_table8[omap_lcd->state->depth]; + draw_line = draw_line_table8[ds_get_bits_per_pixel(omap_lcd->state)]; bpp = 8; break; case 4 ... 7: if (!omap_lcd->tft) - draw_line = draw_line_table12[omap_lcd->state->depth]; + draw_line = draw_line_table12[ds_get_bits_per_pixel(omap_lcd->state)]; else - draw_line = draw_line_table16[omap_lcd->state->depth]; + draw_line = draw_line_table16[ds_get_bits_per_pixel(omap_lcd->state)]; bpp = 16; break; @@ -174,8 +174,8 @@ /* Resolution */ width = omap_lcd->width; - if (width != omap_lcd->state->width || - omap_lcd->height != omap_lcd->state->height) { + if (width != ds_get_width(omap_lcd->state) || + omap_lcd->height != ds_get_height(omap_lcd->state)) { qemu_console_resize(omap_lcd->console, omap_lcd->width, omap_lcd->height); omap_lcd->invalidate = 1; @@ -202,7 +202,7 @@ if (omap_lcd->dma->dual) omap_lcd->dma->current_frame ^= 1; - if (!omap_lcd->state->depth) + if (!ds_get_bits_per_pixel(omap_lcd->state)) return; line = 0; @@ -217,8 +217,8 @@ step = width * bpp >> 3; scanline = frame_base + step * line; s = (uint8_t *) (phys_ram_base + scanline); - d = omap_lcd->state->data; - linesize = omap_lcd->state->linesize; + d = ds_get_data(omap_lcd->state); + linesize = ds_get_linesize(omap_lcd->state); dirty[0] = dirty[1] cpu_physical_memory_get_dirty(scanline, VGA_DIRTY_FLAG); @@ -293,10 +293,10 @@ static void omap_screen_dump(void *opaque, const char *filename) { struct omap_lcd_panel_s *omap_lcd = opaque; omap_update_display(opaque); - if (omap_lcd && omap_lcd->state->data) - ppm_save(filename, omap_lcd->state->data, + if (omap_lcd && ds_get_data(omap_lcd->state)) + ppm_save(filename, ds_get_data(omap_lcd->state), omap_lcd->width, omap_lcd->height, - omap_lcd->state->linesize); + ds_get_linesize(omap_lcd->state)); } static void omap_invalidate_display(void *opaque) { diff --git a/hw/pl110.c b/hw/pl110.c --- a/hw/pl110.c +++ b/hw/pl110.c @@ -124,7 +124,7 @@ if (!pl110_enabled(s)) return; - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 0: return; case 8: @@ -190,7 +190,7 @@ if (base > 0x80000000) base -= 0x80000000; src = phys_ram_base + base; - dest = s->ds->data; + dest = ds_get_data(s->ds); first = -1; addr = base; @@ -249,7 +249,7 @@ b = (raw & 0x1f) << 3; /* The I bit is ignored. */ raw >>= 6; - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 8: s->pallette[n] = rgb_to_pixel8(r, g, b); break; diff --git a/hw/pxa2xx_lcd.c b/hw/pxa2xx_lcd.c --- a/hw/pxa2xx_lcd.c +++ b/hw/pxa2xx_lcd.c @@ -650,7 +650,7 @@ } break; } - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 8: *dest = rgb_to_pixel8(r, g, b) | alpha; break; @@ -693,7 +693,7 @@ else if (s->bpp > pxa_lcdc_8bpp) src_width *= 2; - dest = s->ds->data; + dest = ds_get_data(s->ds); dest_width = s->xres * s->dest_width; addr = (ram_addr_t) (fb - phys_ram_base); @@ -750,7 +750,7 @@ src_width *= 2; dest_width = s->yres * s->dest_width; - dest = s->ds->data + dest_width * (s->xres - 1); + dest = ds_get_data(s->ds) + dest_width * (s->xres - 1); addr = (ram_addr_t) (fb - phys_ram_base); start = addr + s->yres * src_width; @@ -1006,7 +1006,7 @@ pxa2xx_invalidate_display, pxa2xx_screen_dump, NULL, s); - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 0: s->dest_width = 0; break; diff --git a/hw/ssd0303.c b/hw/ssd0303.c --- a/hw/ssd0303.c +++ b/hw/ssd0303.c @@ -206,7 +206,7 @@ if (!s->redraw) return; - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 0: return; case 15: @@ -238,7 +238,7 @@ colors[0] = colortab + dest_width; colors[1] = colortab; } - dest = s->ds->data; + dest = ds_get_data(s->ds); for (y = 0; y < 16; y++) { line = (y + s->start_line) & 63; src = s->framebuffer + 132 * (line >> 3) + 36; diff --git a/hw/ssd0323.c b/hw/ssd0323.c --- a/hw/ssd0323.c +++ b/hw/ssd0323.c @@ -187,7 +187,7 @@ if (!s->redraw) return; - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 0: return; case 15: @@ -210,7 +210,7 @@ for (i = 0; i < 16; i++) { int n; colors[i] = p; - switch (s->ds->depth) { + switch (ds_get_bits_per_pixel(s->ds)) { case 15: n = i * 2 + (i >> 3); p[0] = n | (n << 5); @@ -233,7 +233,7 @@ p += dest_width; } /* TODO: Implement row/column remapping. */ - dest = s->ds->data; + dest = ds_get_data(s->ds); for (y = 0; y < 64; y++) { line = y; src = s->framebuffer + 64 * line; diff --git a/hw/tcx.c b/hw/tcx.c --- a/hw/tcx.c +++ b/hw/tcx.c @@ -55,7 +55,7 @@ { int i; for(i = start; i < end; i++) { - switch(s->ds->depth) { + switch(ds_get_bits_per_pixel(s->ds)) { default: case 8: s->palette[i] = rgb_to_pixel8(s->r[i], s->g[i], s->b[i]); @@ -200,18 +200,18 @@ uint8_t *d, *s; void (*f)(TCXState *s1, uint8_t *dst, const uint8_t *src, int width); - if (ts->ds->depth == 0) + if (ds_get_bits_per_pixel(ts->ds) == 0) return; page = ts->vram_offset; y_start = -1; page_min = 0xffffffff; page_max = 0; - d = ts->ds->data; + d = ds_get_data(ts->ds); s = ts->vram; - dd = ts->ds->linesize; + dd = ds_get_linesize(ts->ds); ds = 1024; - switch (ts->ds->depth) { + switch (ds_get_bits_per_pixel(ts->ds)) { case 32: f = tcx_draw_line32; break; @@ -278,7 +278,7 @@ uint8_t *d, *s; uint32_t *cptr, *s24; - if (ts->ds->depth != 32) + if (ds_get_bits_per_pixel(ts->ds) != 32) return; page = ts->vram_offset; page24 = ts->vram24_offset; @@ -286,11 +286,11 @@ y_start = -1; page_min = 0xffffffff; page_max = 0; - d = ts->ds->data; + d = ds_get_data(ts->ds); s = ts->vram; s24 = ts->vram24; cptr = ts->cplane; - dd = ts->ds->linesize; + dd = ds_get_linesize(ts->ds); ds = 1024; for(y = 0; y < ts->height; y += 4, page += TARGET_PAGE_SIZE, diff --git a/hw/vga.c b/hw/vga.c --- a/hw/vga.c +++ b/hw/vga.c @@ -1164,7 +1164,7 @@ static inline int get_depth_index(DisplayState *s) { - switch(s->depth) { + switch(ds_get_bits_per_pixel(s)) { default: case 8: return 0; @@ -1326,7 +1326,7 @@ cw = 9; if (s->sr[1] & 0x08) cw = 16; /* NOTE: no 18 pixel wide */ - x_incr = cw * ((s->ds->depth + 7) >> 3); + x_incr = cw * ((ds_get_bits_per_pixel(s->ds) + 7) >> 3); width = (s->cr[0x01] + 1); if (s->cr[0x06] == 100) { /* ugly hack for CGA 160x100x16 - explain me the logic */ @@ -1376,8 +1376,8 @@ vga_draw_glyph8 = vga_draw_glyph8_table[depth_index]; vga_draw_glyph9 = vga_draw_glyph9_table[depth_index]; - dest = s->ds->data; - linesize = s->ds->linesize; + dest = ds_get_data(s->ds); + linesize = ds_get_linesize(s->ds); ch_attr_ptr = s->last_ch_attr; for(cy = 0; cy < height; cy++) { d1 = dest; @@ -1870,7 +1870,7 @@ VGAState *s = (VGAState *)opaque; int full_update, graphic_mode; - if (s->ds->depth == 0) { + if (ds_get_bits_per_pixel(s->ds) == 0) { /* nothing to do */ } else { full_update = 0; @@ -2755,10 +2755,10 @@ s->graphic_mode = -1; vga_update_display(s); - if (ds->data) { - ppm_save(filename, ds->data, vga_save_w, vga_save_h, - s->ds->linesize); - qemu_free(ds->data); + if (ds_get_data(ds)) { + ppm_save(filename, ds_get_data(ds), vga_save_w, vga_save_h, + ds_get_linesize(s->ds)); + qemu_free(ds_get_data(ds)); } s->ds = saved_ds; } diff --git a/hw/vmware_vga.c b/hw/vmware_vga.c --- a/hw/vmware_vga.c +++ b/hw/vmware_vga.c @@ -321,7 +321,7 @@ width = s->bypp * w; start = s->bypp * x + bypl * y; src = s->vram + start; - dst = s->ds->data + start; + dst = ds_get_data(s->ds) + start; for (; line > 0; line --, src += bypl, dst += bypl) memcpy(dst, src, width); @@ -333,7 +333,7 @@ static inline void vmsvga_update_screen(struct vmsvga_state_s *s) { #ifndef DIRECT_VRAM - memcpy(s->ds->data, s->vram, s->bypp * s->width * s->height); + memcpy(ds_get_data(s->ds), s->vram, s->bypp * s->width * s->height); #endif dpy_update(s->ds, 0, 0, s->width, s->height); @@ -375,7 +375,7 @@ int x0, int y0, int x1, int y1, int w, int h) { # ifdef DIRECT_VRAM - uint8_t *vram = s->ds->data; + uint8_t *vram = ds_get_data(s->ds); # else uint8_t *vram = s->vram; # endif @@ -412,7 +412,7 @@ uint32_t c, int x, int y, int w, int h) { # ifdef DIRECT_VRAM - uint8_t *vram = s->ds->data; + uint8_t *vram = ds_get_data(s->ds); # else uint8_t *vram = s->vram; # endif @@ -917,7 +917,7 @@ s->width = -1; s->height = -1; s->svgaid = SVGA_ID; - s->depth = s->ds->depth ? s->ds->depth : 24; + s->depth = ds_get_bits_per_pixel(s->ds) ? ds_get_bits_per_pixel(s->ds) : 24; s->bypp = (s->depth + 7) >> 3; s->cursor.on = 0; s->redraw_fifo_first = 0; @@ -978,7 +978,7 @@ } if (s->depth == 32) { - ppm_save(filename, s->vram, s->width, s->height, s->ds->linesize); + ppm_save(filename, s->vram, s->width, s->height, ds_get_linesize(s->ds)); } } @@ -996,7 +996,7 @@ struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque; addr -= s->vram_base; if (addr < s->fb_size) - return *(uint8_t *) (s->ds->data + addr); + return *(uint8_t *) (ds_get_data(s->ds) + addr); else return *(uint8_t *) (s->vram + addr); } @@ -1006,7 +1006,7 @@ struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque; addr -= s->vram_base; if (addr < s->fb_size) - return *(uint16_t *) (s->ds->data + addr); + return *(uint16_t *) (ds_get_data(s->ds) + addr); else return *(uint16_t *) (s->vram + addr); } @@ -1016,7 +1016,7 @@ struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque; addr -= s->vram_base; if (addr < s->fb_size) - return *(uint32_t *) (s->ds->data + addr); + return *(uint32_t *) (ds_get_data(s->ds) + addr); else return *(uint32_t *) (s->vram + addr); } @@ -1027,7 +1027,7 @@ struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque; addr -= s->vram_base; if (addr < s->fb_size) - *(uint8_t *) (s->ds->data + addr) = value; + *(uint8_t *) (ds_get_data(s->ds) + addr) = value; else *(uint8_t *) (s->vram + addr) = value; } @@ -1038,7 +1038,7 @@ struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque; addr -= s->vram_base; if (addr < s->fb_size) - *(uint16_t *) (s->ds->data + addr) = value; + *(uint16_t *) (ds_get_data(s->ds) + addr) = value; else *(uint16_t *) (s->vram + addr) = value; } @@ -1049,7 +1049,7 @@ struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque; addr -= s->vram_base; if (addr < s->fb_size) - *(uint32_t *) (s->ds->data + addr) = value; + *(uint32_t *) (ds_get_data(s->ds) + addr) = value; else *(uint32_t *) (s->vram + addr) = value; } diff --git a/hw/xenfb.c b/hw/xenfb.c --- a/hw/xenfb.c +++ b/hw/xenfb.c @@ -325,8 +325,8 @@ if (xenfb->abs_pointer_wanted) xenfb_send_position(xenfb, - dx * (xenfb->c.ds->width - 1) / 0x7fff, - dy * (xenfb->c.ds->height - 1) / 0x7fff, + dx * (ds_get_width(xenfb->c.ds) - 1) / 0x7fff, + dy * (ds_get_height(xenfb->c.ds) - 1) / 0x7fff, dz); else xenfb_send_motion(xenfb, dx, dy, dz); @@ -566,9 +566,9 @@ + xenfb->offset \ + (line * xenfb->row_stride) \ + (x * xenfb->depth / 8)); \ - DST_T *dst = (DST_T *)(xenfb->c.ds->data \ - + (line * xenfb->c.ds->linesize) \ - + (x * xenfb->c.ds->depth / 8)); \ + DST_T *dst = (DST_T *)(ds_get_data(xenfb->c.ds) \ + + (line * ds_get_linesize(xenfb->c.ds)) \ + + (x * ds_get_bytes_per_pixel(xenfb->c.ds))); \ int col; \ const int RSS = 32 - (RSB + GSB + BSB); \ const int GSS = 32 - (GSB + BSB); \ @@ -588,7 +588,7 @@ (((spix << GSS) & GSM & GDM) >> GDS) | \ (((spix << BSS) & BSM & BDM) >> BDS); \ src = (SRC_T *) ((unsigned long) src + xenfb->depth / 8); \ - dst = (DST_T *) ((unsigned long) dst + xenfb->c.ds->depth / 8); \ + dst = (DST_T *) ((unsigned long) dst + ds_get_bytes_per_pixel(xenfb->c.ds)); \ } \ } @@ -610,9 +610,9 @@ * - Put ds->shared_buf back into use then. */ if (1 /* !xenfb->c.ds->shared_buf */) { - if (xenfb->depth == xenfb->c.ds->depth) { /* Perfect match can use fast path */ + if (xenfb->depth == ds_get_bits_per_pixel(xenfb->c.ds)) { /* Perfect match can use fast path */ for (line = y ; line < (y+h) ; line++) { - memcpy(xenfb->c.ds->data + (line * xenfb->c.ds->linesize) + (x * xenfb->c.ds->depth / 8), + memcpy(ds_get_data(xenfb->c.ds) + (line * ds_get_linesize(xenfb->c.ds)) + (x * ds_get_bytes_per_pixel(xenfb->c.ds)), xenfb->pixels + xenfb->offset + (line * xenfb->row_stride) + (x * xenfb->depth / 8), w * xenfb->depth / 8); } @@ -622,23 +622,23 @@ /* 24 bit == r:8 g:8 b:8 */ /* 32 bit == r:8 g:8 b:8 (padding:8) */ if (xenfb->depth == 8) { - if (xenfb->c.ds->depth == 16) { + if (ds_get_bits_per_pixel(xenfb->c.ds) == 16) { BLT(uint8_t, uint16_t, 3, 3, 2, 5, 6, 5); - } else if (xenfb->c.ds->depth == 32) { + } else if (ds_get_bits_per_pixel(xenfb->c.ds) == 32) { BLT(uint8_t, uint32_t, 3, 3, 2, 8, 8, 8); } } else if (xenfb->depth == 16) { - if (xenfb->c.ds->depth == 8) { + if (ds_get_bits_per_pixel(xenfb->c.ds) == 8) { BLT(uint16_t, uint8_t, 5, 6, 5, 3, 3, 2); - } else if (xenfb->c.ds->depth == 32) { + } else if (ds_get_bits_per_pixel(xenfb->c.ds) == 32) { BLT(uint16_t, uint32_t, 5, 6, 5, 8, 8, 8); } } else if (xenfb->depth == 24 || xenfb->depth == 32) { - if (xenfb->c.ds->depth == 8) { + if (ds_get_bits_per_pixel(xenfb->c.ds) == 8) { BLT(uint32_t, uint8_t, 8, 8, 8, 3, 3, 2); - } else if (xenfb->c.ds->depth == 16) { + } else if (ds_get_bits_per_pixel(xenfb->c.ds) == 16) { BLT(uint32_t, uint16_t, 8, 8, 8, 5, 6, 5); - } else if (xenfb->c.ds->depth == 32) { + } else if (ds_get_bits_per_pixel(xenfb->c.ds) == 32) { BLT(uint32_t, uint32_t, 8, 8, 8, 8, 8, 8); } } @@ -730,7 +730,7 @@ } /* resize if needed */ - if (xenfb->width != xenfb->c.ds->width || xenfb->height != xenfb->c.ds->height) { + if (xenfb->width != ds_get_width(xenfb->c.ds) || xenfb->height != ds_get_height(xenfb->c.ds)) { xen_be_printf(&xenfb->c.xendev, 1, "update: resizing: %dx%d\n", xenfb->width, xenfb->height); dpy_resize(xenfb->c.ds, xenfb->width, xenfb->height); diff --git a/sdl.c b/sdl.c --- a/sdl.c +++ b/sdl.c @@ -88,7 +88,7 @@ glGenTextures(1, &texture_ref); glBindTexture(GL_TEXTURE_RECTANGLE_ARB, texture_ref); glPixelStorei(GL_UNPACK_LSB_FIRST, 1); - switch (ds->depth) { + switch (ds_get_bits_per_pixel(ds)) { case 8: if (ds->palette == NULL) { tex_format = GL_RGB; @@ -128,8 +128,8 @@ } break; } - glPixelStorei(GL_UNPACK_ROW_LENGTH, (ds->linesize * 8) / ds->depth); - glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, gl_format, ds->width, ds->height, 0, tex_format, tex_type, pixels); + glPixelStorei(GL_UNPACK_ROW_LENGTH, (ds_get_linesize(ds) / ds_get_bytes_per_pixel(ds))); + glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, gl_format, ds_get_width(ds), ds_get_height(ds), 0, tex_format, tex_type, pixels); glTexParameterf(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_PRIORITY, 1.0); glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR); @@ -140,10 +140,10 @@ static void opengl_update(DisplayState *ds, int x, int y, int w, int h) { - int bpp = ds->depth / 8; - GLvoid *pixels = ds->data + y * ds->linesize + x * bpp; + int bpp = ds_get_bytes_per_pixel(ds); + GLvoid *pixels = ds_get_data(ds) + y * ds_get_linesize(ds) + x * bpp; glBindTexture(GL_TEXTURE_RECTANGLE_ARB, texture_ref); - glPixelStorei(GL_UNPACK_ROW_LENGTH, ds->linesize / bpp); + glPixelStorei(GL_UNPACK_ROW_LENGTH, ds_get_linesize(ds) / bpp); glTexSubImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, x, y, w, h, tex_format, tex_type, pixels); glBegin(GL_QUADS); glTexCoord2d(0, 0); @@ -177,7 +177,7 @@ static void sdl_setdata(DisplayState *ds, void *pixels) { uint32_t rmask, gmask, bmask, amask = 0; - switch (ds->depth) { + switch (ds_get_bits_per_pixel(ds)) { case 8: rmask = 0x000000E0; gmask = 0x0000001C; @@ -201,8 +201,8 @@ default: return; } - shared = SDL_CreateRGBSurfaceFrom(pixels, width, height, ds->depth, ds->linesize, rmask , gmask, bmask, amask); - if (ds->depth == 8 && ds->palette != NULL) { + shared = SDL_CreateRGBSurfaceFrom(pixels, width, height, ds_get_bits_per_pixel(ds), ds_get_linesize(ds), rmask , gmask, bmask, amask); + if (ds_get_bits_per_pixel(ds) == 8 && ds->palette != NULL) { SDL_Color palette[256]; int i; for (i = 0; i < 256; i++) { @@ -309,7 +309,7 @@ static void sdl_resize(DisplayState *ds, int w, int h) { - sdl_resize_shared(ds, w, h, 0, w * (ds->depth / 8), NULL); + sdl_resize_shared(ds, w, h, 0, w * ds_get_bytes_per_pixel(ds), NULL); } static void sdl_colourdepth(DisplayState *ds, int depth) @@ -537,7 +537,7 @@ static void toggle_full_screen(DisplayState *ds) { gui_fullscreen = !gui_fullscreen; - sdl_resize_shared(ds, ds->width, ds->height, ds->depth, ds->linesize, ds->data); + sdl_resize_shared(ds, ds_get_width(ds), ds_get_height(ds), ds_get_bits_per_pixel(ds), ds_get_linesize(ds), ds_get_data(ds)); if (gui_fullscreen) { gui_saved_grab = gui_grab; sdl_grab_start(); diff --git a/vnc.c b/vnc.c --- a/vnc.c +++ b/vnc.c @@ -514,10 +514,10 @@ vnc_framebuffer_update(vs, x, y, w, h, 0); - row = vs->ds->data + y * vs->ds->linesize + x * vs->depth; + row = ds_get_data(vs->ds) + y * ds_get_linesize(vs->ds) + x * vs->depth; for (i = 0; i < h; i++) { vs->write_pixels(vs, row, w * vs->depth); - row += vs->ds->linesize; + row += ds_get_linesize(vs->ds); } } @@ -594,7 +594,7 @@ uint8_t *dst_row; uint8_t *old_row; int y = 0; - int pitch = ds->linesize; + int pitch = ds_get_linesize(ds); VncState *vs = ds->opaque; int updating_client = 1; @@ -620,11 +620,11 @@ pitch = -pitch; } - src = (ds->linesize * (src_y + y) + vs->depth * src_x); - dst = (ds->linesize * (dst_y + y) + vs->depth * dst_x); + src = (ds_get_linesize(ds) * (src_y + y) + vs->depth * src_x); + dst = (ds_get_linesize(ds) * (dst_y + y) + vs->depth * dst_x); - src_row = ds->data + src; - dst_row = ds->data + dst; + src_row = ds_get_data(ds) + src; + dst_row = ds_get_data(ds) + dst; old_row = vs->old_data + dst; for (y = 0; y < h; y++) { @@ -1916,10 +1916,10 @@ vga_hw_update(); - vs->width = vs->ds->width; - vs->height = vs->ds->height; - vnc_write_u16(vs, vs->ds->width); - vnc_write_u16(vs, vs->ds->height); + vs->width = ds_get_width(vs->ds); + vs->height = ds_get_height(vs->ds); + vnc_write_u16(vs, ds_get_width(vs->ds)); + vnc_write_u16(vs, ds_get_height(vs->ds)); pixel_format_message(vs); diff --git a/vnchextile.h b/vnchextile.h --- a/vnchextile.h +++ b/vnchextile.h @@ -13,7 +13,7 @@ void *last_fg_, int *has_bg, int *has_fg) { - uint8_t *row = (vs->ds->data + y * vs->ds->linesize + x * vs->depth); + uint8_t *row = (ds_get_data(vs->ds) + y * ds_get_linesize(vs->ds) + x * vs->depth); pixel_t *irow = (pixel_t *)row; int j, i; pixel_t *last_bg = (pixel_t *)last_bg_; @@ -57,7 +57,7 @@ } if (n_colors > 2) break; - irow += vs->ds->linesize / sizeof(pixel_t); + irow += ds_get_linesize(vs->ds) / sizeof(pixel_t); } if (n_colors > 1 && fg_count > bg_count) { @@ -105,7 +105,7 @@ n_data += 2; n_subtiles++; } - irow += vs->ds->linesize / sizeof(pixel_t); + irow += ds_get_linesize(vs->ds) / sizeof(pixel_t); } break; case 3: @@ -161,7 +161,7 @@ n_data += 2; n_subtiles++; } - irow += vs->ds->linesize / sizeof(pixel_t); + irow += ds_get_linesize(vs->ds) / sizeof(pixel_t); } /* A SubrectsColoured subtile invalidates the foreground color */ @@ -198,7 +198,7 @@ } else { for (j = 0; j < h; j++) { vs->write_pixels(vs, row, w * vs->depth); - row += vs->ds->linesize; + row += ds_get_linesize(vs->ds); } } } diff --git a/xenfbfront.c b/xenfbfront.c --- a/xenfbfront.c +++ b/xenfbfront.c @@ -73,10 +73,10 @@ if (ds->shared_buf) { offset = pixels - xs->vga_vram; ds->data = pixels; - fbfront_resize(fb_dev, ds->width, ds->height, ds->linesize, ds->depth, offset); + fbfront_resize(fb_dev, ds_get_width(ds), ds_get_height(ds), ds_get_linesize(ds), ds_get_bits_per_pixel(ds), offset); } else { ds->data = xs->nonshared_vram; - fbfront_resize(fb_dev, w, h, linesize, ds->depth, vga_ram_size); + fbfront_resize(fb_dev, w, h, linesize, ds_get_bits_per_pixel(ds), vga_ram_size); } } @@ -93,7 +93,7 @@ ds->data = pixels; if (!fb_dev) return; - fbfront_resize(fb_dev, ds->width, ds->height, ds->linesize, ds->depth, offset); + fbfront_resize(fb_dev, ds_get_width(ds), ds_get_height(ds), ds_get_linesize(ds), ds_get_bits_per_pixel(ds), offset); } static void xenfb_pv_refresh(DisplayState *ds) @@ -151,14 +151,14 @@ { int new_x = buf[i].pos.abs_x; int new_y = buf[i].pos.abs_y; - if (new_x >= s->width) - new_x = s->width - 1; - if (new_y >= s->height) - new_y = s->height - 1; + if (new_x >= ds_get_width(s)) + new_x = ds_get_width(s) - 1; + if (new_y >= ds_get_height(s)) + new_y = ds_get_height(s) - 1; if (kbd_mouse_is_absolute()) { kbd_mouse_event( - new_x * 0x7FFF / (s->width - 1), - new_y * 0x7FFF / (s->height - 1), + new_x * 0x7FFF / (ds_get_width(s) - 1), + new_y * 0x7FFF / (ds_get_height(s) - 1), buf[i].pos.rel_z, buttons); } else { @@ -192,8 +192,8 @@ buttons &= ~button; if (kbd_mouse_is_absolute()) kbd_mouse_event( - x * 0x7FFF / (s->width - 1), - y * 0x7FFF / (s->height - 1), + x * 0x7FFF / (ds_get_width(s) - 1), + y * 0x7FFF / (ds_get_height(s) - 1), 0, buttons); else @@ -287,7 +287,7 @@ for (i = 0; i < n; i++) mfns[n + i] = virtual_to_mfn(xs->nonshared_vram + i * PAGE_SIZE); - fb_dev = init_fbfront(fb_path, mfns, ds->width, ds->height, ds->depth, ds->linesize, 2 * n); + fb_dev = init_fbfront(fb_path, mfns, ds_get_width(ds), ds_get_height(ds), ds_get_bits_per_pixel(ds), ds_get_linesize(ds), 2 * n); free(mfns); if (!fb_dev) { fprintf(stderr,"can''t open frame buffer\n"); @@ -302,7 +302,7 @@ ds->data = xs->nonshared_vram; } if (offset) - fbfront_resize(fb_dev, ds->width, ds->height, ds->linesize, ds->depth, offset); + fbfront_resize(fb_dev, ds_get_width(ds), ds_get_height(ds), ds_get_linesize(ds), ds_get_bits_per_pixel(ds), offset); down(&xs->kbd_sem); free(kbd_path); _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel