aboutsummaryrefslogtreecommitdiffstats
path: root/console.c
diff options
context:
space:
mode:
Diffstat (limited to 'console.c')
-rw-r--r--console.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/console.c b/console.c
index 6cadb73..5c9a16b 100644
--- a/console.c
+++ b/console.c
@@ -1734,11 +1734,27 @@ PixelFormat qemu_default_pixelformat(int bpp)
#ifdef CONFIG_ANDROID
void
-android_display_init_from(int width, int height, int rotation, int bpp)
+android_display_reset(DisplayState* ds, int width, int height, int bitspp)
{
- DisplayState *ds = qemu_mallocz(sizeof(DisplayState));
- ds->allocator = &default_allocator;
- ds->surface = qemu_create_displaysurface(ds, width, height);
- register_displaystate(ds);
+ DisplaySurface* surface;
+ int bytespp = (bitspp+7)/8;
+ int pitch = (bytespp*width + 3) & ~3;
+
+ qemu_free_displaysurface(ds);
+
+ surface = (DisplaySurface*) qemu_mallocz(sizeof(DisplaySurface));
+
+ surface->width = width;
+ surface->height = height;
+ surface->linesize = pitch;
+ surface->pf = qemu_default_pixelformat(bitspp);
+ surface->data = (uint8_t*) qemu_malloc(surface->linesize * surface->height);
+#ifdef HOST_WORDS_BIGENDIAN
+ surface->flags = QEMU_ALLOCATED_FLAG | QEMU_BIG_ENDIAN_FLAG;
+#else
+ surface->flags = QEMU_ALLOCATED_FLAG;
+#endif
+
+ ds->surface = surface;
}
#endif