diff options
Diffstat (limited to 'hw/display/goldfish_fb.c')
-rw-r--r-- | hw/display/goldfish_fb.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/hw/display/goldfish_fb.c b/hw/display/goldfish_fb.c index f590bc1fd..9083dd5f0 100644 --- a/hw/display/goldfish_fb.c +++ b/hw/display/goldfish_fb.c @@ -15,6 +15,7 @@ #include "ui/console.h" #include "ui/pixel_ops.h" #include "trace.h" +#include "hw/display/goldfish_fb.h" #define BITS 8 #include "goldfish_fb_template.h" @@ -65,6 +66,21 @@ struct goldfish_fb_state { #define GOLDFISH_FB_SAVE_VERSION 3 +/* Console hooks */ +void goldfish_fb_set_rotation(int rotation) +{ + DeviceState *dev = qdev_find_recursive(sysbus_get_default(), TYPE_GOLDFISH_FB); + if (dev) { + struct goldfish_fb_state *s = GOLDFISH_FB(dev); + DisplaySurface *ds = qemu_console_surface(s->con); + s->rotation = rotation; + s->need_update = 1; + qemu_console_resize(s->con, surface_height(ds), surface_width(ds)); + } else { + fprintf(stderr,"%s: unable to find FB dev\n", __func__); + } +} + static void goldfish_fb_save(QEMUFile* f, void* opaque) { struct goldfish_fb_state* s = opaque; @@ -395,6 +411,8 @@ static int goldfish_fb_init(SysBusDevice *sbdev) DeviceState *dev = DEVICE(sbdev); struct goldfish_fb_state *s = GOLDFISH_FB(dev); + dev->id = g_strdup(TYPE_GOLDFISH_FB); + sysbus_init_irq(sbdev, &s->irq); s->con = graphic_console_init(dev, 0, &goldfish_fb_ops, s); |