From 21ef45d71221b4577330fe3aacfb06afad91ad46 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Thu, 28 Feb 2013 11:34:31 +0100 Subject: console: kill DisplayState->opaque It's broken by design. There can be multiple DisplayChangeListener instances, so they simply can't store state in the (single) DisplayState struct. Try 'qemu -display gtk -vnc :0', watch it crash & burn. With DisplayChangeListenerOps having a more sane interface now we can simply use the DisplayChangeListener pointer to get access to our private data instead. Signed-off-by: Gerd Hoffmann --- ui/gtk.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'ui/gtk.c') diff --git a/ui/gtk.c b/ui/gtk.c index 379107f0de..b21a94a335 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -230,7 +230,7 @@ static void gd_update_caption(GtkDisplayState *s) static void gd_update(DisplayChangeListener *dcl, DisplayState *ds, int x, int y, int w, int h) { - GtkDisplayState *s = ds->opaque; + GtkDisplayState *s = container_of(dcl, GtkDisplayState, dcl); int x1, x2, y1, y2; int mx, my; int fbw, fbh; @@ -269,7 +269,7 @@ static void gd_refresh(DisplayChangeListener *dcl, static void gd_resize(DisplayChangeListener *dcl, DisplayState *ds) { - GtkDisplayState *s = ds->opaque; + GtkDisplayState *s = container_of(dcl, GtkDisplayState, dcl); cairo_format_t kind; int stride; @@ -1297,7 +1297,6 @@ void gtk_display_init(DisplayState *ds) gtk_init(NULL, NULL); - ds->opaque = s; s->ds = ds; s->dcl.ops = &dcl_ops; -- cgit v1.2.1