Commit 38334f76300260480e3bd3b77cb5b86fd3d66038
1 parent
818220f5
Don't use ds->dpy_copy directly from hw/ (Jan Niehusmann).
I left a TODO in the code because this still doesn't definitely fix all issues. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5308 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
4 changed files
with
21 additions
and
6 deletions
console.c
| ... | ... | @@ -1343,3 +1343,16 @@ void qemu_console_resize(QEMUConsole *console, int width, int height) |
| 1343 | 1343 | } |
| 1344 | 1344 | } |
| 1345 | 1345 | } |
| 1346 | + | |
| 1347 | +void qemu_console_copy(QEMUConsole *console, int src_x, int src_y, | |
| 1348 | + int dst_x, int dst_y, int w, int h) { | |
| 1349 | + if (active_console == console) { | |
| 1350 | + if (console->ds->dpy_copy) | |
| 1351 | + console->ds->dpy_copy(console->ds, | |
| 1352 | + src_x, src_y, dst_x, dst_y, w, h); | |
| 1353 | + else { | |
| 1354 | + /* TODO */ | |
| 1355 | + console->ds->dpy_update(console->ds, dst_x, dst_y, w, h); | |
| 1356 | + } | |
| 1357 | + } | |
| 1358 | +} | ... | ... |
console.h
| ... | ... | @@ -140,6 +140,8 @@ CharDriverState *text_console_init(DisplayState *ds, const char *p); |
| 140 | 140 | void console_select(unsigned int index); |
| 141 | 141 | void console_color_init(DisplayState *ds); |
| 142 | 142 | void qemu_console_resize(QEMUConsole *console, int width, int height); |
| 143 | +void qemu_console_copy(QEMUConsole *console, int src_x, int src_y, | |
| 144 | + int dst_x, int dst_y, int w, int h); | |
| 143 | 145 | |
| 144 | 146 | /* sdl.c */ |
| 145 | 147 | void sdl_display_init(DisplayState *ds, int full_screen, int no_frame); | ... | ... |
hw/cirrus_vga.c
| ... | ... | @@ -769,13 +769,13 @@ static void cirrus_do_copy(CirrusVGAState *s, int dst, int src, int w, int h) |
| 769 | 769 | s->cirrus_blt_width, s->cirrus_blt_height); |
| 770 | 770 | |
| 771 | 771 | if (notify) |
| 772 | - s->ds->dpy_copy(s->ds, | |
| 773 | - sx, sy, dx, dy, | |
| 774 | - s->cirrus_blt_width / depth, | |
| 775 | - s->cirrus_blt_height); | |
| 772 | + qemu_console_copy(s->console, | |
| 773 | + sx, sy, dx, dy, | |
| 774 | + s->cirrus_blt_width / depth, | |
| 775 | + s->cirrus_blt_height); | |
| 776 | 776 | |
| 777 | 777 | /* we don't have to notify the display that this portion has |
| 778 | - changed since dpy_copy implies this */ | |
| 778 | + changed since qemu_console_copy implies this */ | |
| 779 | 779 | |
| 780 | 780 | if (!notify) |
| 781 | 781 | cirrus_invalidate_region(s, s->cirrus_blt_dstaddr, | ... | ... |
hw/vmware_vga.c
| ... | ... | @@ -384,7 +384,7 @@ static inline void vmsvga_copy_rect(struct vmsvga_state_s *s, |
| 384 | 384 | |
| 385 | 385 | # ifdef DIRECT_VRAM |
| 386 | 386 | if (s->ds->dpy_copy) |
| 387 | - s->ds->dpy_copy(s->ds, x0, y0, x1, y1, w, h); | |
| 387 | + qemu_console_copy(s->console, x0, y0, x1, y1, w, h); | |
| 388 | 388 | else |
| 389 | 389 | # endif |
| 390 | 390 | { | ... | ... |