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 <kraxel@redhat.com>
This commit is contained in:
Gerd Hoffmann 2013-02-28 11:34:31 +01:00
parent 7c20b4a374
commit 21ef45d712
4 changed files with 20 additions and 25 deletions

View file

@ -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;