Commit 38334f76300260480e3bd3b77cb5b86fd3d66038

Authored by balrog
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
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 {
... ...