diff options
Diffstat (limited to 'curses.c')
-rw-r--r-- | curses.c | 38 |
1 files changed, 20 insertions, 18 deletions
@@ -97,13 +97,13 @@ static void curses_calc_pad(void) } } -static void curses_resize(DisplayState *ds, int w, int h) +static void curses_resize(DisplayState *ds) { - if (w == gwidth && h == gheight) + if (ds_get_width(ds) == gwidth && ds_get_height(ds) == gheight) return; - gwidth = w; - gheight = h; + gwidth = ds_get_width(ds); + gheight = ds_get_height(ds); curses_calc_pad(); } @@ -169,8 +169,8 @@ static void curses_refresh(DisplayState *ds) clear(); refresh(); curses_calc_pad(); - ds->width = FONT_WIDTH * width; - ds->height = FONT_HEIGHT * height; + ds->surface->width = FONT_WIDTH * width; + ds->surface->height = FONT_HEIGHT * height; vga_hw_invalidate(); invalidate = 0; } @@ -197,8 +197,8 @@ static void curses_refresh(DisplayState *ds) refresh(); curses_calc_pad(); curses_update(ds, 0, 0, width, height); - ds->width = FONT_WIDTH * width; - ds->height = FONT_HEIGHT * height; + ds->surface->width = FONT_WIDTH * width; + ds->surface->height = FONT_HEIGHT * height; continue; } #endif @@ -338,6 +338,7 @@ static void curses_keyboard_setup(void) void curses_display_init(DisplayState *ds, int full_screen) { + DisplayChangeListener *dcl; #ifndef _WIN32 if (!isatty(1)) { fprintf(stderr, "We need a terminal output\n"); @@ -357,18 +358,19 @@ void curses_display_init(DisplayState *ds, int full_screen) #endif #endif - ds->data = (void *) screen; - ds->linesize = 0; - ds->depth = 0; - ds->width = 640; - ds->height = 400; - ds->dpy_update = curses_update; - ds->dpy_resize = curses_resize; - ds->dpy_refresh = curses_refresh; - ds->dpy_text_cursor = curses_cursor_position; + dcl = (DisplayChangeListener *) qemu_mallocz(sizeof(DisplayChangeListener)); + if (!dcl) + exit(1); + dcl->dpy_update = curses_update; + dcl->dpy_resize = curses_resize; + dcl->dpy_refresh = curses_refresh; + dcl->dpy_text_cursor = curses_cursor_position; + register_displaychangelistener(ds, dcl); + qemu_free_displaysurface(ds->surface); + ds->surface = qemu_create_displaysurface_from(80, 25, 0, 0, (uint8_t*) screen); invalidate = 1; /* Standard VGA initial text mode dimensions */ - curses_resize(ds, 80, 25); + curses_resize(ds); } |