Commit 167bc3d2fa100590b5a9d8fd9f19ae0207197447
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 */ | ... | ... |