aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2011-09-30 12:31:14 +0200
committerBlue Swirl <blauwirbel@gmail.com>2011-10-15 17:39:59 +0000
commite9a07334fb6ee08ddd61787c102d36e7e781efef (patch)
treeea0c49743ea03e0fdf53bcc7f10dc11df1dfe7b0
parent2a22e6eb1b516a16ed2dd6c15da9a1e5b3455371 (diff)
Move graphic-related coalesced MMIO flushes to affected device models
This is conceptually cleaner and will allow us to drop the nographic timer. Moreover, it will be mandatory to fully exploit future per-device coalesced MMIO rings. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
-rw-r--r--hw/g364fb.c4
-rw-r--r--hw/vga.c4
-rw-r--r--vl.c2
3 files changed, 8 insertions, 2 deletions
diff --git a/hw/g364fb.c b/hw/g364fb.c
index b43341f8d7..f00ee27b17 100644
--- a/hw/g364fb.c
+++ b/hw/g364fb.c
@@ -245,6 +245,8 @@ static void g364fb_update_display(void *opaque)
{
G364State *s = opaque;
+ qemu_flush_coalesced_mmio_buffer();
+
if (s->width == 0 || s->height == 0)
return;
@@ -297,6 +299,8 @@ static void g364fb_screen_dump(void *opaque, const char *filename)
uint8_t *data_buffer;
FILE *f;
+ qemu_flush_coalesced_mmio_buffer();
+
if (s->depth != 8) {
error_report("g364: unknown guest depth %d", s->depth);
return;
diff --git a/hw/vga.c b/hw/vga.c
index 5beaa9992a..ca79aa157d 100644
--- a/hw/vga.c
+++ b/hw/vga.c
@@ -1838,6 +1838,8 @@ static void vga_update_display(void *opaque)
VGACommonState *s = opaque;
int full_update, graphic_mode;
+ qemu_flush_coalesced_mmio_buffer();
+
if (ds_get_bits_per_pixel(s->ds) == 0) {
/* nothing to do */
} else {
@@ -1958,6 +1960,8 @@ static void vga_update_text(void *opaque, console_ch_t *chardata)
char msg_buffer[80];
int full_update = 0;
+ qemu_flush_coalesced_mmio_buffer();
+
if (!(s->ar_index & 0x20)) {
graphic_mode = GMODE_BLANK;
} else {
diff --git a/vl.c b/vl.c
index dbf77781a7..dd85a41dcb 100644
--- a/vl.c
+++ b/vl.c
@@ -1196,7 +1196,6 @@ static void gui_update(void *opaque)
DisplayState *ds = opaque;
DisplayChangeListener *dcl = ds->listeners;
- qemu_flush_coalesced_mmio_buffer();
dpy_refresh(ds);
while (dcl != NULL) {
@@ -1212,7 +1211,6 @@ static void nographic_update(void *opaque)
{
uint64_t interval = GUI_REFRESH_INTERVAL;
- qemu_flush_coalesced_mmio_buffer();
qemu_mod_timer(nographic_timer, interval + qemu_get_clock_ms(rt_clock));
}