This patch here fixes the issue, but is likely introducing inefficiency. There are two if statements above the patch that should set full_update = 1 due to 'some change', but none of them triggers it. So I think the surface is wrong and needs to be recreated.
diff --git a/hw/display/vga.c b/hw/display/vga.c
index ed476e4e80..71b5684994 100644
--- a/hw/display/vga.c
+++ b/hw/display/vga.c
@@ -1571,6 +1571,7 @@ static void vga_draw_graphic(VGACommonState *s, int full_update)
* must be updated with the new base address */ full_update = 1;
}
+ full_update = 1;
if (full_update) {
if (share_surface) {
A better solution may be this one here:
diff --git a/hw/display/vga.c b/hw/display/vga.c
index ed476e4e80..4f365b6d43 100644
--- a/hw/display/vga.c
+++ b/hw/display/vga.c
@@ -1566,7 +1566,7 @@ static void vga_draw_graphic(VGACommonState *s, int full_update) full_update = 1;
}
if (surface_data(surface) != s->vram_ptr + (s->start_addr * 4)
- && is_buffer_shared(surface)) {
+ /*&& is_buffer_shared(surface)*/) {
/* base address changed (page flip) -> shared display surfaces
* must be updated with the new base address */ full_update = 1;
This patch here fixes the issue, but is likely introducing inefficiency. There are two if statements above the patch that should set full_update = 1 due to 'some change', but none of them triggers it. So I think the surface is wrong and needs to be recreated.
diff --git a/hw/display/vga.c b/hw/display/vga.c .71b5684994 100644 graphic( VGACommonState *s, int full_update)
full_ update = 1;
index ed476e4e80.
--- a/hw/display/vga.c
+++ b/hw/display/vga.c
@@ -1571,6 +1571,7 @@ static void vga_draw_
* must be updated with the new base address */
}
+ full_update = 1;
if (full_update) {
if (share_surface) {
A better solution may be this one here:
diff --git a/hw/display/vga.c b/hw/display/vga.c .4f365b6d43 100644 graphic( VGACommonState *s, int full_update)
full_ update = 1; data(surface) != s->vram_ptr + (s->start_addr * 4) shared( surface) ) { shared( surface) */) {
full_ update = 1;
index ed476e4e80.
--- a/hw/display/vga.c
+++ b/hw/display/vga.c
@@ -1566,7 +1566,7 @@ static void vga_draw_
}
if (surface_
- && is_buffer_
+ /*&& is_buffer_
/* base address changed (page flip) -> shared display surfaces
* must be updated with the new base address */