Commit 167bc3d2fa100590b5a9d8fd9f19ae0207197447

Authored by balrog
1 parent ab7d9131

MusicPal: Restore display size after invalidation (Jan Kiszka).

Make sure that the MusicPal display is set to the correct size again
after some other console may have used a different size.

Signed-off-by: Jan Kiszka <jan.kiszka@web.de>


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4646 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 15 additions and 2 deletions
hw/musicpal.c
... ... @@ -759,6 +759,7 @@ typedef struct musicpal_lcd_state {
759 759 int page_off;
760 760 DisplayState *ds;
761 761 uint8_t video_ram[128*64/8];
  762 + int invalidate;
762 763 } musicpal_lcd_state;
763 764  
764 765 static uint32_t lcd_brightness;
... ... @@ -817,6 +818,11 @@ static void lcd_refresh(void *opaque)
817 818 musicpal_lcd_state *s = opaque;
818 819 int x, y, col;
819 820  
  821 + if (s->invalidate && (s->ds->width != 128*3 || s->ds->height != 64*3)) {
  822 + dpy_resize(s->ds, 128*3, 64*3);
  823 + s->invalidate = 0;
  824 + }
  825 +
820 826 switch (s->ds->depth) {
821 827 case 0:
822 828 return;
... ... @@ -843,6 +849,13 @@ static void lcd_refresh(void *opaque)
843 849 dpy_update(s->ds, 0, 0, 128*3, 64*3);
844 850 }
845 851  
  852 +static void lcd_invalidate(void *opaque)
  853 +{
  854 + musicpal_lcd_state *s = opaque;
  855 +
  856 + s->invalidate = 1;
  857 +}
  858 +
846 859 static uint32_t musicpal_lcd_read(void *opaque, target_phys_addr_t offset)
847 860 {
848 861 musicpal_lcd_state *s = opaque;
... ... @@ -919,12 +932,12 @@ static void musicpal_lcd_init(DisplayState *ds, uint32_t base)
919 932 return;
920 933 s->base = base;
921 934 s->ds = ds;
  935 + s->invalidate = 1;
922 936 iomemtype = cpu_register_io_memory(0, musicpal_lcd_readfn,
923 937 musicpal_lcd_writefn, s);
924 938 cpu_register_physical_memory(base, MP_LCD_SIZE, iomemtype);
925 939  
926   - graphic_console_init(ds, lcd_refresh, NULL, NULL, NULL, s);
927   - dpy_resize(ds, 128*3, 64*3);
  940 + graphic_console_init(ds, lcd_refresh, lcd_invalidate, NULL, NULL, s);
928 941 }
929 942  
930 943 /* PIC register offsets */
... ...