Revision 0e1f5a0c

b/console.c
190 190
{
191 191
    unsigned int r, g, b, color;
192 192

  
193
    switch(ds->depth) {
193
    switch(ds_get_bits_per_pixel(ds)) {
194 194
#if 0
195 195
    case 8:
196 196
        r = (rgba >> 16) & 0xff;
......
227 227
    uint8_t *d, *d1;
228 228
    int x, y, bpp;
229 229

  
230
    bpp = (ds->depth + 7) >> 3;
231
    d1 = ds->data +
232
        ds->linesize * posy + bpp * posx;
230
    bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3;
231
    d1 = ds_get_data(ds) +
232
        ds_get_linesize(ds) * posy + bpp * posx;
233 233
    for (y = 0; y < height; y++) {
234 234
        d = d1;
235 235
        switch(bpp) {
......
252 252
            }
253 253
            break;
254 254
        }
255
        d1 += ds->linesize;
255
        d1 += ds_get_linesize(ds);
256 256
    }
257 257
}
258 258

  
......
263 263
    uint8_t *d;
264 264
    int wb, y, bpp;
265 265

  
266
    bpp = (ds->depth + 7) >> 3;
266
    bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3;
267 267
    wb = w * bpp;
268 268
    if (yd <= ys) {
269
        s = ds->data +
270
            ds->linesize * ys + bpp * xs;
271
        d = ds->data +
272
            ds->linesize * yd + bpp * xd;
269
        s = ds_get_data(ds) +
270
            ds_get_linesize(ds) * ys + bpp * xs;
271
        d = ds_get_data(ds) +
272
            ds_get_linesize(ds) * yd + bpp * xd;
273 273
        for (y = 0; y < h; y++) {
274 274
            memmove(d, s, wb);
275
            d += ds->linesize;
276
            s += ds->linesize;
275
            d += ds_get_linesize(ds);
276
            s += ds_get_linesize(ds);
277 277
        }
278 278
    } else {
279
        s = ds->data +
280
            ds->linesize * (ys + h - 1) + bpp * xs;
281
        d = ds->data +
282
            ds->linesize * (yd + h - 1) + bpp * xd;
279
        s = ds_get_data(ds) +
280
            ds_get_linesize(ds) * (ys + h - 1) + bpp * xs;
281
        d = ds_get_data(ds) +
282
            ds_get_linesize(ds) * (yd + h - 1) + bpp * xd;
283 283
       for (y = 0; y < h; y++) {
284 284
            memmove(d, s, wb);
285
            d -= ds->linesize;
286
            s -= ds->linesize;
285
            d -= ds_get_linesize(ds);
286
            s -= ds_get_linesize(ds);
287 287
        }
288 288
    }
289 289
}
......
373 373

  
374 374
static inline unsigned int col_expand(DisplayState *ds, unsigned int col)
375 375
{
376
    switch(ds->depth) {
376
    switch(ds_get_bits_per_pixel(ds)) {
377 377
    case 8:
378 378
        col |= col << 8;
379 379
        col |= col << 16;
......
443 443
        bgcol = color_table[t_attrib->bold][t_attrib->bgcol];
444 444
    }
445 445

  
446
    bpp = (ds->depth + 7) >> 3;
447
    d = ds->data +
448
        ds->linesize * y * FONT_HEIGHT + bpp * x * FONT_WIDTH;
449
    linesize = ds->linesize;
446
    bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3;
447
    d = ds_get_data(ds) +
448
        ds_get_linesize(ds) * y * FONT_HEIGHT + bpp * x * FONT_WIDTH;
449
    linesize = ds_get_linesize(ds);
450 450
    font_ptr = vgafont16 + FONT_HEIGHT * ch;
451 451
    xorcol = bgcol ^ fgcol;
452
    switch(ds->depth) {
452
    switch(ds_get_bits_per_pixel(ds)) {
453 453
    case 8:
454 454
        for(i = 0; i < FONT_HEIGHT; i++) {
455 455
            font_data = *font_ptr++;
......
543 543
    int y1, y2;
544 544

  
545 545
    if (s == active_console) {
546
        if (!s->ds->depth) {
546
        if (!ds_get_bits_per_pixel(s->ds)) {
547 547
            text_update_xy(s, x, y);
548 548
            return;
549 549
        }
......
570 570
    if (s == active_console) {
571 571
        int x = s->x;
572 572

  
573
        if (!s->ds->depth) {
573
        if (!ds_get_bits_per_pixel(s->ds)) {
574 574
            s->cursor_invalidate = 1;
575 575
            return;
576 576
        }
......
604 604

  
605 605
    if (s != active_console)
606 606
        return;
607
    if (!s->ds->depth) {
607
    if (!ds_get_bits_per_pixel(s->ds)) {
608 608
        s->text_x[0] = 0;
609 609
        s->text_y[0] = 0;
610 610
        s->text_x[1] = s->width - 1;
......
613 613
        return;
614 614
    }
615 615

  
616
    vga_fill_rect(s->ds, 0, 0, s->ds->width, s->ds->height,
616
    vga_fill_rect(s->ds, 0, 0, ds_get_width(s->ds), ds_get_height(s->ds),
617 617
                  color_table[0][COLOR_BLACK]);
618 618
    y1 = s->y_displayed;
619 619
    for(y = 0; y < s->height; y++) {
......
626 626
        if (++y1 == s->total_height)
627 627
            y1 = 0;
628 628
    }
629
    dpy_update(s->ds, 0, 0, s->ds->width, s->ds->height);
629
    dpy_update(s->ds, 0, 0, ds_get_width(s->ds), ds_get_height(s->ds));
630 630
    console_show_cursor(s, 1);
631 631
}
632 632

  
......
689 689
            c++;
690 690
        }
691 691
        if (s == active_console && s->y_displayed == s->y_base) {
692
            if (!s->ds->depth) {
692
            if (!ds_get_bits_per_pixel(s->ds)) {
693 693
                s->text_x[0] = 0;
694 694
                s->text_y[0] = 0;
695 695
                s->text_x[1] = s->width - 1;
......
1048 1048
    if (s) {
1049 1049
        active_console = s;
1050 1050
        if (s->console_type != TEXT_CONSOLE && s->g_width && s->g_height
1051
            && (s->g_width != s->ds->width || s->g_height != s->ds->height))
1051
            && (s->g_width != ds_get_width(s->ds) || s->g_height != ds_get_height(s->ds)))
1052 1052
            dpy_resize(s->ds, s->g_width, s->g_height);
1053 1053
        vga_hw_invalidate();
1054 1054
    }
......
1158 1158
{
1159 1159
    TextConsole *s = (TextConsole *) opaque;
1160 1160

  
1161
    if (s->g_width != s->ds->width || s->g_height != s->ds->height) {
1161
    if (s->g_width != ds_get_width(s->ds) || s->g_height != ds_get_height(s->ds)) {
1162 1162
        if (s->console_type == TEXT_CONSOLE_FIXED_SIZE)
1163 1163
            dpy_resize(s->ds, s->g_width, s->g_height);
1164 1164
        else {
1165
            s->g_width = s->ds->width;
1166
            s->g_height = s->ds->height;
1165
            s->g_width = ds_get_width(s->ds);
1166
            s->g_height = ds_get_height(s->ds);
1167 1167
            text_console_resize(s);
1168 1168
        }
1169 1169
    }
......
1302 1302
    s->total_height = DEFAULT_BACKSCROLL;
1303 1303
    s->x = 0;
1304 1304
    s->y = 0;
1305
    width = s->ds->width;
1306
    height = s->ds->height;
1305
    width = ds_get_width(s->ds);
1306
    height = ds_get_height(s->ds);
1307 1307
    if (p != 0) {
1308 1308
        width = strtoul(p, (char **)&p, 10);
1309 1309
        if (*p == 'C') {
......
1347 1347
void qemu_console_resize(QEMUConsole *console, int width, int height)
1348 1348
{
1349 1349
    if (console->g_width != width || console->g_height != height
1350
        || !console->ds->data) {
1350
        || !ds_get_data(console->ds)) {
1351 1351
        console->g_width = width;
1352 1352
        console->g_height = height;
1353 1353
        if (active_console == console) {
b/console.h
114 114
        s->dpy_text_cursor(s, x, y);
115 115
}
116 116

  
117
static inline int ds_get_linesize(DisplayState *ds)
118
{
119
    return ds->linesize;
120
}
121

  
122
static inline uint8_t* ds_get_data(DisplayState *ds)
123
{
124
    return ds->data;
125
}
126

  
127
static inline int ds_get_width(DisplayState *ds)
128
{
129
    return ds->width;
130
}
131

  
132
static inline int ds_get_height(DisplayState *ds)
133
{
134
    return ds->height;
135
}
136

  
137
static inline int ds_get_bits_per_pixel(DisplayState *ds)
138
{
139
    return ds->depth;
140
}
141

  
117 142
typedef unsigned long console_ch_t;
118 143
static inline void console_write_ch(console_ch_t *dest, uint32_t ch)
119 144
{
b/hw/blizzard.c
166 166
        s->my[1] = s->data.y + s->data.dy;
167 167

  
168 168
    bypp[0] = s->bpp;
169
    bypp[1] = (s->state->depth + 7) >> 3;
169
    bypp[1] = (ds_get_bits_per_pixel(s->state) + 7) >> 3;
170 170
    bypl[0] = bypp[0] * s->data.pitch;
171 171
    bypl[1] = bypp[1] * s->x;
172 172
    bypl[2] = bypp[0] * s->data.dx;
......
895 895
    if (!s->enable)
896 896
        return;
897 897

  
898
    if (s->x != s->state->width || s->y != s->state->height) {
898
    if (s->x != ds_get_width(s->state) || s->y != ds_get_height(s->state)) {
899 899
        s->invalidate = 1;
900 900
        qemu_console_resize(s->console, s->x, s->y);
901 901
    }
......
904 904
        s->invalidate = 0;
905 905

  
906 906
        if (s->blank) {
907
            bypp = (s->state->depth + 7) >> 3;
908
            memset(s->state->data, 0, bypp * s->x * s->y);
907
            bypp = (ds_get_bits_per_pixel(s->state) + 7) >> 3;
908
            memset(ds_get_data(s->state), 0, bypp * s->x * s->y);
909 909
            return;
910 910
        }
911 911

  
......
918 918
    if (s->mx[1] <= s->mx[0])
919 919
        return;
920 920

  
921
    bypp = (s->state->depth + 7) >> 3;
921
    bypp = (ds_get_bits_per_pixel(s->state) + 7) >> 3;
922 922
    bypl = bypp * s->x;
923 923
    bwidth = bypp * (s->mx[1] - s->mx[0]);
924 924
    y = s->my[0];
925 925
    src = s->fb + bypl * y + bypp * s->mx[0];
926
    dst = s->state->data + bypl * y + bypp * s->mx[0];
926
    dst = ds_get_data(s->state) + bypl * y + bypp * s->mx[0];
927 927
    for (; y < s->my[1]; y ++, src += bypl, dst += bypl)
928 928
        memcpy(dst, src, bwidth);
929 929

  
......
940 940
    struct blizzard_s *s = (struct blizzard_s *) opaque;
941 941

  
942 942
    blizzard_update_display(opaque);
943
    if (s && s->state->data)
944
        ppm_save(filename, s->state->data, s->x, s->y, s->state->linesize);
943
    if (s && ds_get_data(s->state))
944
        ppm_save(filename, ds_get_data(s->state), s->x, s->y, ds_get_linesize(s->state));
945 945
}
946 946

  
947 947
#define DEPTH 8
......
962 962
    s->state = ds;
963 963
    s->fb = qemu_malloc(0x180000);
964 964

  
965
    switch (s->state->depth) {
965
    switch (ds_get_bits_per_pixel(s->state)) {
966 966
    case 0:
967 967
        s->line_fn_tab[0] = s->line_fn_tab[1] =
968 968
                qemu_mallocz(sizeof(blizzard_fn_t) * 0x10);
b/hw/cirrus_vga.c
2321 2321
    color1 = s->rgb_to_pixel(c6_to_8(palette[0xf * 3]),
2322 2322
                             c6_to_8(palette[0xf * 3 + 1]),
2323 2323
                             c6_to_8(palette[0xf * 3 + 2]));
2324
    bpp = ((s->ds->depth + 7) >> 3);
2324
    bpp = ((ds_get_bits_per_pixel(s->ds) + 7) >> 3);
2325 2325
    d1 += x1 * bpp;
2326
    switch(s->ds->depth) {
2326
    switch(ds_get_bits_per_pixel(s->ds)) {
2327 2327
    default:
2328 2328
        break;
2329 2329
    case 8:
b/hw/g364fb.c
72 72

  
73 73
static void g364fb_draw_graphic(G364State *s, int full_update)
74 74
{
75
    switch (s->ds->depth) {
75
    switch (ds_get_bits_per_pixel(s->ds)) {
76 76
        case 8:
77 77
            g364fb_draw_graphic8(s, full_update);
78 78
            break;
......
86 86
            g364fb_draw_graphic32(s, full_update);
87 87
            break;
88 88
        default:
89
            printf("g364fb: unknown depth %d\n", s->ds->depth);
89
            printf("g364fb: unknown depth %d\n", ds_get_bits_per_pixel(s->ds));
90 90
            return;
91 91
    }
92 92

  
......
101 101
    if (!full_update)
102 102
        return;
103 103

  
104
    w = s->scr_width * ((s->ds->depth + 7) >> 3);
105
    d = s->ds->data;
104
    w = s->scr_width * ((ds_get_bits_per_pixel(s->ds) + 7) >> 3);
105
    d = ds_get_data(s->ds);
106 106
    for(i = 0; i < s->scr_height; i++) {
107 107
        memset(d, 0, w);
108
        d += s->ds->linesize;
108
        d += ds_get_linesize(s->ds);
109 109
    }
110 110

  
111 111
    dpy_update(s->ds, 0, 0, s->scr_width, s->scr_height);
......
131 131
        s->graphic_mode = graphic_mode;
132 132
        full_update = 1;
133 133
    }
134
    if (s->scr_width != s->ds->width || s->scr_height != s->ds->height) {
134
    if (s->scr_width != ds_get_width(s->ds) || s->scr_height != ds_get_height(s->ds)) {
135 135
        qemu_console_resize(s->console, s->scr_width, s->scr_height);
136 136
        full_update = 1;
137 137
    }
b/hw/g364fb_template.h
28 28

  
29 29
    data_buffer = s->vram_buffer;
30 30
    w_display = s->scr_width * PIXEL_WIDTH / 8;
31
    data_display = s->ds->data;
31
    data_display = ds_get_data(s->ds);
32 32
    for(i = 0; i < s->scr_height; i++) {
33 33
        dd = data_display;
34 34
        for (j = 0; j < s->scr_width; j++, dd += PIXEL_WIDTH / 8, data_buffer++) {
......
38 38
                s->palette[index][1],
39 39
                s->palette[index][2]);
40 40
        }
41
        data_display += s->ds->linesize;
41
        data_display += ds_get_linesize(s->ds);
42 42
    }
43 43
}
b/hw/jazz_led.c
155 155
    uint8_t *d;
156 156
    int x, bpp;
157 157

  
158
    bpp = (ds->depth + 7) >> 3;
159
    d = ds->data + ds->linesize * posy + bpp * posx1;
158
    bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3;
159
    d = ds_get_data(ds) + ds_get_linesize(ds) * posy + bpp * posx1;
160 160
    switch(bpp) {
161 161
        case 1:
162 162
            for (x = posx1; x <= posx2; x++) {
......
184 184
    uint8_t *d;
185 185
    int y, bpp;
186 186

  
187
    bpp = (ds->depth + 7) >> 3;
188
    d = ds->data + ds->linesize * posy1 + bpp * posx;
187
    bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3;
188
    d = ds_get_data(ds) + ds_get_linesize(ds) * posy1 + bpp * posx;
189 189
    switch(bpp) {
190 190
        case 1:
191 191
            for (y = posy1; y <= posy2; y++) {
192 192
                *((uint8_t *)d) = color;
193
                d += ds->linesize;
193
                d += ds_get_linesize(ds);
194 194
            }
195 195
            break;
196 196
        case 2:
197 197
            for (y = posy1; y <= posy2; y++) {
198 198
                *((uint16_t *)d) = color;
199
                d += ds->linesize;
199
                d += ds_get_linesize(ds);
200 200
            }
201 201
            break;
202 202
        case 4:
203 203
            for (y = posy1; y <= posy2; y++) {
204 204
                *((uint32_t *)d) = color;
205
                d += ds->linesize;
205
                d += ds_get_linesize(ds);
206 206
            }
207 207
            break;
208 208
    }
......
218 218

  
219 219
    if (s->state & REDRAW_BACKGROUND) {
220 220
        /* clear screen */
221
        bpp = (ds->depth + 7) >> 3;
222
        d1 = ds->data;
223
        for (y = 0; y < ds->height; y++) {
224
            memset(d1, 0x00, ds->width * bpp);
225
            d1 += ds->linesize;
221
        bpp = (ds_get_bits_per_pixel(ds) + 7) >> 3;
222
        d1 = ds_get_data(ds);
223
        for (y = 0; y < ds_get_height(ds); y++) {
224
            memset(d1, 0x00, ds_get_width(ds) * bpp);
225
            d1 += ds_get_linesize(ds);
226 226
        }
227 227
    }
228 228

  
229 229
    if (s->state & REDRAW_SEGMENTS) {
230 230
        /* set colors according to bpp */
231
        switch (ds->depth) {
231
        switch (ds_get_bits_per_pixel(ds)) {
232 232
            case 8:
233 233
                color_segment = rgb_to_pixel8(0xaa, 0xaa, 0xaa);
234 234
                color_led = rgb_to_pixel8(0x00, 0xff, 0x00);
......
272 272
    }
273 273

  
274 274
    s->state = REDRAW_NONE;
275
    dpy_update(ds, 0, 0, ds->width, ds->height);
275
    dpy_update(ds, 0, 0, ds_get_width(ds), ds_get_height(ds));
276 276
}
277 277

  
278 278
static void jazz_led_invalidate_display(void *opaque)
b/hw/musicpal.c
801 801
        (musicpal_lcd_state *s, int x, int y, type col) \
802 802
{ \
803 803
    int dx, dy; \
804
    type *pixel = &((type *) s->ds->data)[(y * 128 * 3 + x) * 3]; \
804
    type *pixel = &((type *) ds_get_data(s->ds))[(y * 128 * 3 + x) * 3]; \
805 805
\
806 806
    for (dy = 0; dy < 3; dy++, pixel += 127 * 3) \
807 807
        for (dx = 0; dx < 3; dx++, pixel++) \
......
818 818
    musicpal_lcd_state *s = opaque;
819 819
    int x, y, col;
820 820

  
821
    switch (s->ds->depth) {
821
    switch (ds_get_bits_per_pixel(s->ds)) {
822 822
    case 0:
823 823
        return;
824 824
#define LCD_REFRESH(depth, func) \
......
838 838
    LCD_REFRESH(32, (s->ds->bgr ? rgb_to_pixel32bgr : rgb_to_pixel32))
839 839
    default:
840 840
        cpu_abort(cpu_single_env, "unsupported colour depth %i\n",
841
                  s->ds->depth);
841
                  ds_get_bits_per_pixel(s->ds));
842 842
    }
843 843

  
844 844
    dpy_update(s->ds, 0, 0, 128*3, 64*3);
b/hw/omap_lcdc.c
125 125
    uint8_t *s, *d;
126 126

  
127 127
    if (!omap_lcd || omap_lcd->plm == 1 ||
128
                    !omap_lcd->enable || !omap_lcd->state->depth)
128
                    !omap_lcd->enable || !ds_get_bits_per_pixel(omap_lcd->state))
129 129
        return;
130 130

  
131 131
    frame_offset = 0;
......
145 145
    /* Colour depth */
146 146
    switch ((omap_lcd->palette[0] >> 12) & 7) {
147 147
    case 1:
148
        draw_line = draw_line_table2[omap_lcd->state->depth];
148
        draw_line = draw_line_table2[ds_get_bits_per_pixel(omap_lcd->state)];
149 149
        bpp = 2;
150 150
        break;
151 151

  
152 152
    case 2:
153
        draw_line = draw_line_table4[omap_lcd->state->depth];
153
        draw_line = draw_line_table4[ds_get_bits_per_pixel(omap_lcd->state)];
154 154
        bpp = 4;
155 155
        break;
156 156

  
157 157
    case 3:
158
        draw_line = draw_line_table8[omap_lcd->state->depth];
158
        draw_line = draw_line_table8[ds_get_bits_per_pixel(omap_lcd->state)];
159 159
        bpp = 8;
160 160
        break;
161 161

  
162 162
    case 4 ... 7:
163 163
        if (!omap_lcd->tft)
164
            draw_line = draw_line_table12[omap_lcd->state->depth];
164
            draw_line = draw_line_table12[ds_get_bits_per_pixel(omap_lcd->state)];
165 165
        else
166
            draw_line = draw_line_table16[omap_lcd->state->depth];
166
            draw_line = draw_line_table16[ds_get_bits_per_pixel(omap_lcd->state)];
167 167
        bpp = 16;
168 168
        break;
169 169

  
......
174 174

  
175 175
    /* Resolution */
176 176
    width = omap_lcd->width;
177
    if (width != omap_lcd->state->width ||
178
            omap_lcd->height != omap_lcd->state->height) {
177
    if (width != ds_get_width(omap_lcd->state) ||
178
            omap_lcd->height != ds_get_height(omap_lcd->state)) {
179 179
        qemu_console_resize(omap_lcd->console,
180 180
                            omap_lcd->width, omap_lcd->height);
181 181
        omap_lcd->invalidate = 1;
......
202 202
    if (omap_lcd->dma->dual)
203 203
        omap_lcd->dma->current_frame ^= 1;
204 204

  
205
    if (!omap_lcd->state->depth)
205
    if (!ds_get_bits_per_pixel(omap_lcd->state))
206 206
        return;
207 207

  
208 208
    line = 0;
......
217 217
    step = width * bpp >> 3;
218 218
    scanline = frame_base + step * line;
219 219
    s = (uint8_t *) (phys_ram_base + scanline);
220
    d = omap_lcd->state->data;
221
    linesize = omap_lcd->state->linesize;
220
    d = ds_get_data(omap_lcd->state);
221
    linesize = ds_get_linesize(omap_lcd->state);
222 222

  
223 223
    dirty[0] = dirty[1] =
224 224
            cpu_physical_memory_get_dirty(scanline, VGA_DIRTY_FLAG);
......
293 293
static void omap_screen_dump(void *opaque, const char *filename) {
294 294
    struct omap_lcd_panel_s *omap_lcd = opaque;
295 295
    omap_update_display(opaque);
296
    if (omap_lcd && omap_lcd->state->data)
297
        ppm_save(filename, omap_lcd->state->data,
296
    if (omap_lcd && ds_get_data(omap_lcd->state))
297
        ppm_save(filename, ds_get_data(omap_lcd->state),
298 298
                omap_lcd->width, omap_lcd->height,
299
                omap_lcd->state->linesize);
299
                ds_get_linesize(omap_lcd->state));
300 300
}
301 301

  
302 302
static void omap_invalidate_display(void *opaque) {
b/hw/pl110.c
124 124
    if (!pl110_enabled(s))
125 125
        return;
126 126

  
127
    switch (s->ds->depth) {
127
    switch (ds_get_bits_per_pixel(s->ds)) {
128 128
    case 0:
129 129
        return;
130 130
    case 8:
......
190 190
    if (base > 0x80000000)
191 191
        base -= 0x80000000;
192 192
    src = phys_ram_base + base;
193
    dest = s->ds->data;
193
    dest = ds_get_data(s->ds);
194 194
    first = -1;
195 195
    addr = base;
196 196

  
......
249 249
        b = (raw & 0x1f) << 3;
250 250
        /* The I bit is ignored.  */
251 251
        raw >>= 6;
252
        switch (s->ds->depth) {
252
        switch (ds_get_bits_per_pixel(s->ds)) {
253 253
        case 8:
254 254
            s->pallette[n] = rgb_to_pixel8(r, g, b);
255 255
            break;
b/hw/pxa2xx_lcd.c
650 650
            }
651 651
            break;
652 652
        }
653
        switch (s->ds->depth) {
653
        switch (ds_get_bits_per_pixel(s->ds)) {
654 654
        case 8:
655 655
            *dest = rgb_to_pixel8(r, g, b) | alpha;
656 656
            break;
......
693 693
    else if (s->bpp > pxa_lcdc_8bpp)
694 694
        src_width *= 2;
695 695

  
696
    dest = s->ds->data;
696
    dest = ds_get_data(s->ds);
697 697
    dest_width = s->xres * s->dest_width;
698 698

  
699 699
    addr = (ram_addr_t) (fb - phys_ram_base);
......
750 750
        src_width *= 2;
751 751

  
752 752
    dest_width = s->yres * s->dest_width;
753
    dest = s->ds->data + dest_width * (s->xres - 1);
753
    dest = ds_get_data(s->ds) + dest_width * (s->xres - 1);
754 754

  
755 755
    addr = (ram_addr_t) (fb - phys_ram_base);
756 756
    start = addr + s->yres * src_width;
......
1006 1006
                                      pxa2xx_invalidate_display,
1007 1007
                                      pxa2xx_screen_dump, NULL, s);
1008 1008

  
1009
    switch (s->ds->depth) {
1009
    switch (ds_get_bits_per_pixel(s->ds)) {
1010 1010
    case 0:
1011 1011
        s->dest_width = 0;
1012 1012
        break;
b/hw/ssd0303.c
206 206
    if (!s->redraw)
207 207
        return;
208 208

  
209
    switch (s->ds->depth) {
209
    switch (ds_get_bits_per_pixel(s->ds)) {
210 210
    case 0:
211 211
        return;
212 212
    case 15:
......
238 238
        colors[0] = colortab + dest_width;
239 239
        colors[1] = colortab;
240 240
    }
241
    dest = s->ds->data;
241
    dest = ds_get_data(s->ds);
242 242
    for (y = 0; y < 16; y++) {
243 243
        line = (y + s->start_line) & 63;
244 244
        src = s->framebuffer + 132 * (line >> 3) + 36;
b/hw/ssd0323.c
187 187
    if (!s->redraw)
188 188
        return;
189 189

  
190
    switch (s->ds->depth) {
190
    switch (ds_get_bits_per_pixel(s->ds)) {
191 191
    case 0:
192 192
        return;
193 193
    case 15:
......
210 210
    for (i = 0; i < 16; i++) {
211 211
        int n;
212 212
        colors[i] = p;
213
        switch (s->ds->depth) {
213
        switch (ds_get_bits_per_pixel(s->ds)) {
214 214
        case 15:
215 215
            n = i * 2 + (i >> 3);
216 216
            p[0] = n | (n << 5);
......
233 233
        p += dest_width;
234 234
    }
235 235
    /* TODO: Implement row/column remapping.  */
236
    dest = s->ds->data;
236
    dest = ds_get_data(s->ds);
237 237
    for (y = 0; y < 64; y++) {
238 238
        line = y;
239 239
        src = s->framebuffer + 64 * line;
b/hw/tc6393xb.c
430 430

  
431 431
static void tc6393xb_draw_graphic(struct tc6393xb_s *s, int full_update)
432 432
{
433
    switch (s->ds->depth) {
433
    switch (ds_get_bits_per_pixel(s->ds)) {
434 434
        case 8:
435 435
            tc6393xb_draw_graphic8(s);
436 436
            break;
......
447 447
            tc6393xb_draw_graphic32(s);
448 448
            break;
449 449
        default:
450
            printf("tc6393xb: unknown depth %d\n", s->ds->depth);
450
            printf("tc6393xb: unknown depth %d\n", ds_get_bits_per_pixel(s->ds));
451 451
            return;
452 452
    }
453 453

  
......
462 462
    if (!full_update)
463 463
        return;
464 464

  
465
    w = s->scr_width * ((s->ds->depth + 7) >> 3);
466
    d = s->ds->data;
465
    w = s->scr_width * ((ds_get_bits_per_pixel(s->ds) + 7) >> 3);
466
    d = ds_get_data(s->ds);
467 467
    for(i = 0; i < s->scr_height; i++) {
468 468
        memset(d, 0, w);
469
        d += s->ds->linesize;
469
        d += ds_get_linesize(s->ds);
470 470
    }
471 471

  
472 472
    dpy_update(s->ds, 0, 0, s->scr_width, s->scr_height);
......
485 485
        s->blanked = s->blank;
486 486
        full_update = 1;
487 487
    }
488
    if (s->scr_width != s->ds->width || s->scr_height != s->ds->height) {
488
    if (s->scr_width != ds_get_width(s->ds) || s->scr_height != ds_get_height(s->ds)) {
489 489
        qemu_console_resize(s->console, s->scr_width, s->scr_height);
490 490
        full_update = 1;
491 491
    }
b/hw/tc6393xb_template.h
46 46

  
47 47
    data_buffer = (uint16_t*)(phys_ram_base + s->vram_addr);
48 48
    w_display = s->scr_width * BITS / 8;
49
    data_display = s->ds->data;
49
    data_display = ds_get_data(s->ds);
50 50
    for(i = 0; i < s->scr_height; i++) {
51 51
#if (BITS == 16)
52 52
        memcpy(data_display, data_buffer, s->scr_width * 2);
53 53
        data_buffer += s->scr_width;
54
        data_display += s->ds->linesize;
54
        data_display += ds_get_linesize(s->ds);
55 55
#else
56 56
        int j;
57 57
        for (j = 0; j < s->scr_width; j++, data_display += BITS / 8, data_buffer++) {
b/hw/tcx.c
55 55
{
56 56
    int i;
57 57
    for(i = start; i < end; i++) {
58
        switch(s->ds->depth) {
58
        switch(ds_get_bits_per_pixel(s->ds)) {
59 59
        default:
60 60
        case 8:
61 61
            s->palette[i] = rgb_to_pixel8(s->r[i], s->g[i], s->b[i]);
......
200 200
    uint8_t *d, *s;
201 201
    void (*f)(TCXState *s1, uint8_t *dst, const uint8_t *src, int width);
202 202

  
203
    if (ts->ds->depth == 0)
203
    if (ds_get_bits_per_pixel(ts->ds) == 0)
204 204
        return;
205 205
    page = ts->vram_offset;
206 206
    y_start = -1;
207 207
    page_min = 0xffffffff;
208 208
    page_max = 0;
209
    d = ts->ds->data;
209
    d = ds_get_data(ts->ds);
210 210
    s = ts->vram;
211
    dd = ts->ds->linesize;
211
    dd = ds_get_linesize(ts->ds);
212 212
    ds = 1024;
213 213

  
214
    switch (ts->ds->depth) {
214
    switch (ds_get_bits_per_pixel(ts->ds)) {
215 215
    case 32:
216 216
        f = tcx_draw_line32;
217 217
        break;
......
278 278
    uint8_t *d, *s;
279 279
    uint32_t *cptr, *s24;
280 280

  
281
    if (ts->ds->depth != 32)
281
    if (ds_get_bits_per_pixel(ts->ds) != 32)
282 282
            return;
283 283
    page = ts->vram_offset;
284 284
    page24 = ts->vram24_offset;
......
286 286
    y_start = -1;
287 287
    page_min = 0xffffffff;
288 288
    page_max = 0;
289
    d = ts->ds->data;
289
    d = ds_get_data(ts->ds);
290 290
    s = ts->vram;
291 291
    s24 = ts->vram24;
292 292
    cptr = ts->cplane;
293
    dd = ts->ds->linesize;
293
    dd = ds_get_linesize(ts->ds);
294 294
    ds = 1024;
295 295

  
296 296
    for(y = 0; y < ts->height; y += 4, page += TARGET_PAGE_SIZE,
b/hw/vga.c
1151 1151

  
1152 1152
static inline int get_depth_index(DisplayState *s)
1153 1153
{
1154
    switch(s->depth) {
1154
    switch(ds_get_bits_per_pixel(s)) {
1155 1155
    default:
1156 1156
    case 8:
1157 1157
        return 0;
......
1279 1279
        cw = 9;
1280 1280
    if (s->sr[1] & 0x08)
1281 1281
        cw = 16; /* NOTE: no 18 pixel wide */
1282
    x_incr = cw * ((s->ds->depth + 7) >> 3);
1282
    x_incr = cw * ((ds_get_bits_per_pixel(s->ds) + 7) >> 3);
1283 1283
    width = (s->cr[0x01] + 1);
1284 1284
    if (s->cr[0x06] == 100) {
1285 1285
        /* ugly hack for CGA 160x100x16 - explain me the logic */
......
1329 1329
        vga_draw_glyph8 = vga_draw_glyph8_table[depth_index];
1330 1330
    vga_draw_glyph9 = vga_draw_glyph9_table[depth_index];
1331 1331

  
1332
    dest = s->ds->data;
1333
    linesize = s->ds->linesize;
1332
    dest = ds_get_data(s->ds);
1333
    linesize = ds_get_linesize(s->ds);
1334 1334
    ch_attr_ptr = s->last_ch_attr;
1335 1335
    for(cy = 0; cy < height; cy++) {
1336 1336
        d1 = dest;
......
1663 1663
    y_start = -1;
1664 1664
    page_min = 0x7fffffff;
1665 1665
    page_max = -1;
1666
    d = s->ds->data;
1667
    linesize = s->ds->linesize;
1666
    d = ds_get_data(s->ds);
1667
    linesize = ds_get_linesize(s->ds);
1668 1668
    y1 = 0;
1669 1669
    for(y = 0; y < height; y++) {
1670 1670
        addr = addr1;
......
1743 1743
        return;
1744 1744
    if (s->last_scr_width <= 0 || s->last_scr_height <= 0)
1745 1745
        return;
1746
    if (s->ds->depth == 8)
1746
    if (ds_get_bits_per_pixel(s->ds) == 8)
1747 1747
        val = s->rgb_to_pixel(0, 0, 0);
1748 1748
    else
1749 1749
        val = 0;
1750
    w = s->last_scr_width * ((s->ds->depth + 7) >> 3);
1751
    d = s->ds->data;
1750
    w = s->last_scr_width * ((ds_get_bits_per_pixel(s->ds) + 7) >> 3);
1751
    d = ds_get_data(s->ds);
1752 1752
    for(i = 0; i < s->last_scr_height; i++) {
1753 1753
        memset(d, val, w);
1754
        d += s->ds->linesize;
1754
        d += ds_get_linesize(s->ds);
1755 1755
    }
1756 1756
    dpy_update(s->ds, 0, 0,
1757 1757
               s->last_scr_width, s->last_scr_height);
......
1766 1766
    VGAState *s = (VGAState *)opaque;
1767 1767
    int full_update, graphic_mode;
1768 1768

  
1769
    if (s->ds->depth == 0) {
1769
    if (ds_get_bits_per_pixel(s->ds) == 0) {
1770 1770
        /* nothing to do */
1771 1771
    } else {
1772 1772
        s->rgb_to_pixel =
......
2455 2455
    s->graphic_mode = -1;
2456 2456
    vga_update_display(s);
2457 2457

  
2458
    if (ds->data) {
2459
        ppm_save(filename, ds->data, vga_save_w, vga_save_h,
2460
                 s->ds->linesize);
2461
        qemu_free(ds->data);
2458
    if (ds_get_data(ds)) {
2459
        ppm_save(filename, ds_get_data(ds), vga_save_w, vga_save_h,
2460
                 ds_get_linesize(s->ds));
2461
        qemu_free(ds_get_data(ds));
2462 2462
    }
2463 2463
    s->ds = saved_ds;
2464 2464
}
b/hw/vmware_vga.c
319 319
    width = s->bypp * w;
320 320
    start = s->bypp * x + bypl * y;
321 321
    src = s->vram + start;
322
    dst = s->ds->data + start;
322
    dst = ds_get_data(s->ds) + start;
323 323

  
324 324
    for (; line > 0; line --, src += bypl, dst += bypl)
325 325
        memcpy(dst, src, width);
......
331 331
static inline void vmsvga_update_screen(struct vmsvga_state_s *s)
332 332
{
333 333
#ifndef DIRECT_VRAM
334
    memcpy(s->ds->data, s->vram, s->bypp * s->width * s->height);
334
    memcpy(ds_get_data(s->ds), s->vram, s->bypp * s->width * s->height);
335 335
#endif
336 336

  
337 337
    dpy_update(s->ds, 0, 0, s->width, s->height);
......
373 373
                int x0, int y0, int x1, int y1, int w, int h)
374 374
{
375 375
# ifdef DIRECT_VRAM
376
    uint8_t *vram = s->ds->data;
376
    uint8_t *vram = ds_get_data(s->ds);
377 377
# else
378 378
    uint8_t *vram = s->vram;
379 379
# endif
......
410 410
                uint32_t c, int x, int y, int w, int h)
411 411
{
412 412
# ifdef DIRECT_VRAM
413
    uint8_t *vram = s->ds->data;
413
    uint8_t *vram = ds_get_data(s->ds);
414 414
# else
415 415
    uint8_t *vram = s->vram;
416 416
# endif
......
915 915
    s->width = -1;
916 916
    s->height = -1;
917 917
    s->svgaid = SVGA_ID;
918
    s->depth = s->ds->depth ? s->ds->depth : 24;
918
    s->depth = ds_get_bits_per_pixel(s->ds) ? ds_get_bits_per_pixel(s->ds) : 24;
919 919
    s->bypp = (s->depth + 7) >> 3;
920 920
    s->cursor.on = 0;
921 921
    s->redraw_fifo_first = 0;
......
976 976
    }
977 977

  
978 978
    if (s->depth == 32) {
979
        ppm_save(filename, s->vram, s->width, s->height, s->ds->linesize);
979
        ppm_save(filename, s->vram, s->width, s->height, ds_get_linesize(s->ds));
980 980
    }
981 981
}
982 982

  
......
994 994
    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;
995 995
    addr -= s->vram_base;
996 996
    if (addr < s->fb_size)
997
        return *(uint8_t *) (s->ds->data + addr);
997
        return *(uint8_t *) (ds_get_data(s->ds) + addr);
998 998
    else
999 999
        return *(uint8_t *) (s->vram + addr);
1000 1000
}
......
1004 1004
    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;
1005 1005
    addr -= s->vram_base;
1006 1006
    if (addr < s->fb_size)
1007
        return *(uint16_t *) (s->ds->data + addr);
1007
        return *(uint16_t *) (ds_get_data(s->ds) + addr);
1008 1008
    else
1009 1009
        return *(uint16_t *) (s->vram + addr);
1010 1010
}
......
1014 1014
    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;
1015 1015
    addr -= s->vram_base;
1016 1016
    if (addr < s->fb_size)
1017
        return *(uint32_t *) (s->ds->data + addr);
1017
        return *(uint32_t *) (ds_get_data(s->ds) + addr);
1018 1018
    else
1019 1019
        return *(uint32_t *) (s->vram + addr);
1020 1020
}
......
1025 1025
    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;
1026 1026
    addr -= s->vram_base;
1027 1027
    if (addr < s->fb_size)
1028
        *(uint8_t *) (s->ds->data + addr) = value;
1028
        *(uint8_t *) (ds_get_data(s->ds) + addr) = value;
1029 1029
    else
1030 1030
        *(uint8_t *) (s->vram + addr) = value;
1031 1031
}
......
1036 1036
    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;
1037 1037
    addr -= s->vram_base;
1038 1038
    if (addr < s->fb_size)
1039
        *(uint16_t *) (s->ds->data + addr) = value;
1039
        *(uint16_t *) (ds_get_data(s->ds) + addr) = value;
1040 1040
    else
1041 1041
        *(uint16_t *) (s->vram + addr) = value;
1042 1042
}
......
1047 1047
    struct vmsvga_state_s *s = (struct vmsvga_state_s *) opaque;
1048 1048
    addr -= s->vram_base;
1049 1049
    if (addr < s->fb_size)
1050
        *(uint32_t *) (s->ds->data + addr) = value;
1050
        *(uint32_t *) (ds_get_data(s->ds) + addr) = value;
1051 1051
    else
1052 1052
        *(uint32_t *) (s->vram + addr) = value;
1053 1053
}
b/vnc.c
321 321
    }
322 322

  
323 323
    memset(vs->dirty_row, 0xFF, sizeof(vs->dirty_row));
324
    memset(vs->old_data, 42, vs->ds->linesize * vs->ds->height);
324
    memset(vs->old_data, 42, ds_get_linesize(vs->ds) * ds_get_height(vs->ds));
325 325
}
326 326

  
327 327
/* fastest code */
......
414 414

  
415 415
    vnc_framebuffer_update(vs, x, y, w, h, 0);
416 416

  
417
    row = vs->ds->data + y * vs->ds->linesize + x * vs->depth;
417
    row = ds_get_data(vs->ds) + y * ds_get_linesize(vs->ds) + x * vs->depth;
418 418
    for (i = 0; i < h; i++) {
419 419
	vs->write_pixels(vs, row, w * vs->depth);
420
	row += vs->ds->linesize;
420
	row += ds_get_linesize(vs->ds);
421 421
    }
422 422
}
423 423

  
......
495 495
    uint8_t *dst_row;
496 496
    char *old_row;
497 497
    int y = 0;
498
    int pitch = ds->linesize;
498
    int pitch = ds_get_linesize(ds);
499 499
    VncState *vs = ds->opaque;
500 500

  
501 501
    vnc_update_client(vs);
......
505 505
	pitch = -pitch;
506 506
    }
507 507

  
508
    src = (ds->linesize * (src_y + y) + vs->depth * src_x);
509
    dst = (ds->linesize * (dst_y + y) + vs->depth * dst_x);
508
    src = (ds_get_linesize(ds) * (src_y + y) + vs->depth * src_x);
509
    dst = (ds_get_linesize(ds) * (dst_y + y) + vs->depth * dst_x);
510 510

  
511
    src_row = ds->data + src;
512
    dst_row = ds->data + dst;
511
    src_row = ds_get_data(ds) + src;
512
    dst_row = ds_get_data(ds) + dst;
513 513
    old_row = vs->old_data + dst;
514 514

  
515 515
    for (y = 0; y < h; y++) {
......
563 563

  
564 564
	/* Walk through the dirty map and eliminate tiles that
565 565
	   really aren't dirty */
566
	row = vs->ds->data;
566
	row = ds_get_data(vs->ds);
567 567
	old_row = vs->old_data;
568 568

  
569 569
	for (y = 0; y < vs->height; y++) {
......
575 575
		ptr = row;
576 576
		old_ptr = (char*)old_row;
577 577

  
578
		for (x = 0; x < vs->ds->width; x += 16) {
578
		for (x = 0; x < ds_get_width(vs->ds); x += 16) {
579 579
		    if (memcmp(old_ptr, ptr, 16 * vs->depth) == 0) {
580 580
			vnc_clear_bit(vs->dirty_row[y], (x / 16));
581 581
		    } else {
......
588 588
		}
589 589
	    }
590 590

  
591
	    row += vs->ds->linesize;
592
	    old_row += vs->ds->linesize;
591
	    row += ds_get_linesize(vs->ds);
592
	    old_row += ds_get_linesize(vs->ds);
593 593
	}
594 594

  
595 595
	if (!has_dirty) {
......
918 918
	vnc_write_u8(vs, 0);
919 919
	vnc_write_u16(vs, 1);
920 920
	vnc_framebuffer_update(vs, absolute, 0,
921
			       vs->ds->width, vs->ds->height, -257);
921
			       ds_get_width(vs->ds), ds_get_height(vs->ds), -257);
922 922
	vnc_flush(vs);
923 923
    }
924 924
    vs->absolute = absolute;
......
941 941
	dz = 1;
942 942

  
943 943
    if (vs->absolute) {
944
	kbd_mouse_event(x * 0x7FFF / (vs->ds->width - 1),
945
			y * 0x7FFF / (vs->ds->height - 1),
944
	kbd_mouse_event(x * 0x7FFF / (ds_get_width(vs->ds) - 1),
945
			y * 0x7FFF / (ds_get_height(vs->ds) - 1),
946 946
			dz, buttons);
947 947
    } else if (vs->has_pointer_type_change) {
948 948
	x -= 0x7FFF;
......
1106 1106
				       int x_position, int y_position,
1107 1107
				       int w, int h)
1108 1108
{
1109
    if (x_position > vs->ds->width)
1110
        x_position = vs->ds->width;
1111
    if (y_position > vs->ds->height)
1112
        y_position = vs->ds->height;
1113
    if (x_position + w >= vs->ds->width)
1114
        w = vs->ds->width  - x_position;
1115
    if (y_position + h >= vs->ds->height)
1116
        h = vs->ds->height - y_position;
1109
    if (x_position > ds_get_width(vs->ds))
1110
        x_position = ds_get_width(vs->ds);
1111
    if (y_position > ds_get_height(vs->ds))
1112
        y_position = ds_get_height(vs->ds);
1113
    if (x_position + w >= ds_get_width(vs->ds))
1114
        w = ds_get_width(vs->ds)  - x_position;
1115
    if (y_position + h >= ds_get_height(vs->ds))
1116
        h = ds_get_height(vs->ds) - y_position;
1117 1117

  
1118 1118
    int i;
1119 1119
    vs->need_update = 1;
1120 1120
    if (!incremental) {
1121
	char *old_row = vs->old_data + y_position * vs->ds->linesize;
1121
	char *old_row = vs->old_data + y_position * ds_get_linesize(vs->ds);
1122 1122

  
1123 1123
	for (i = 0; i < h; i++) {
1124 1124
            vnc_set_bits(vs->dirty_row[y_position + i],
1125
                         (vs->ds->width / 16), VNC_DIRTY_WORDS);
1126
	    memset(old_row, 42, vs->ds->width * vs->depth);
1127
	    old_row += vs->ds->linesize;
1125
                         (ds_get_width(vs->ds) / 16), VNC_DIRTY_WORDS);
1126
	    memset(old_row, 42, ds_get_width(vs->ds) * vs->depth);
1127
	    old_row += ds_get_linesize(vs->ds);
1128 1128
	}
1129 1129
    }
1130 1130
}
......
1134 1134
    vnc_write_u8(vs, 0);
1135 1135
    vnc_write_u8(vs, 0);
1136 1136
    vnc_write_u16(vs, 1);
1137
    vnc_framebuffer_update(vs, 0, 0, vs->ds->width, vs->ds->height, -258);
1137
    vnc_framebuffer_update(vs, 0, 0, ds_get_width(vs->ds), ds_get_height(vs->ds), -258);
1138 1138
    vnc_flush(vs);
1139 1139
}
1140 1140

  
......
1497 1497
    char buf[1024];
1498 1498
    int size;
1499 1499

  
1500
    vs->width = vs->ds->width;
1501
    vs->height = vs->ds->height;
1502
    vnc_write_u16(vs, vs->ds->width);
1503
    vnc_write_u16(vs, vs->ds->height);
1500
    vs->width = ds_get_width(vs->ds);
1501
    vs->height = ds_get_height(vs->ds);
1502
    vnc_write_u16(vs, ds_get_width(vs->ds));
1503
    vnc_write_u16(vs, ds_get_height(vs->ds));
1504 1504

  
1505 1505
    pixel_format_message(vs);
1506 1506

  
......
2116 2116
    vnc_write(vs, "RFB 003.008\n", 12);
2117 2117
    vnc_flush(vs);
2118 2118
    vnc_read_when(vs, protocol_version, 12);
2119
    memset(vs->old_data, 0, vs->ds->linesize * vs->ds->height);
2119
    memset(vs->old_data, 0, ds_get_linesize(vs->ds) * ds_get_height(vs->ds));
2120 2120
    memset(vs->dirty_row, 0xFF, sizeof(vs->dirty_row));
2121 2121
    vs->has_resize = 0;
2122 2122
    vs->has_hextile = 0;
b/vnchextile.h
13 13
                                             void *last_fg_,
14 14
                                             int *has_bg, int *has_fg)
15 15
{
16
    uint8_t *row = (vs->ds->data + y * vs->ds->linesize + x * vs->depth);
16
    uint8_t *row = (ds_get_data(vs->ds) + y * ds_get_linesize(vs->ds) + x * vs->depth);
17 17
    pixel_t *irow = (pixel_t *)row;
18 18
    int j, i;
19 19
    pixel_t *last_bg = (pixel_t *)last_bg_;
......
57 57
	}
58 58
	if (n_colors > 2)
59 59
	    break;
60
	irow += vs->ds->linesize / sizeof(pixel_t);
60
	irow += ds_get_linesize(vs->ds) / sizeof(pixel_t);
61 61
    }
62 62

  
63 63
    if (n_colors > 1 && fg_count > bg_count) {
......
105 105
		n_data += 2;
106 106
		n_subtiles++;
107 107
	    }
108
	    irow += vs->ds->linesize / sizeof(pixel_t);
108
	    irow += ds_get_linesize(vs->ds) / sizeof(pixel_t);
109 109
	}
110 110
	break;
111 111
    case 3:
......
161 161
		n_data += 2;
162 162
		n_subtiles++;
163 163
	    }
164
	    irow += vs->ds->linesize / sizeof(pixel_t);
164
	    irow += ds_get_linesize(vs->ds) / sizeof(pixel_t);
165 165
	}
166 166

  
167 167
	/* A SubrectsColoured subtile invalidates the foreground color */
......
198 198
    } else {
199 199
	for (j = 0; j < h; j++) {
200 200
	    vs->write_pixels(vs, row, w * vs->depth);
201
	    row += vs->ds->linesize;
201
	    row += ds_get_linesize(vs->ds);
202 202
	}
203 203
    }
204 204
}

Also available in: Unified diff