From f9329e4c9273f1b82aa5dbb36f243546ce55036d Mon Sep 17 00:00:00 2001 From: Jonathan Gordon Date: Wed, 7 Jan 2009 07:52:32 +0000 Subject: Fix some wierdness with the debug menus... Set the current viewport back to NULL after the list is finished drawing, Screens should be setting it before they start drawing so this probably only effects the debug menus. Also change how the statusbars are handled there to make things easier. (this change also forces the bars back on (if enabled) in the simple list widget.. hopefully this doesnt cause problems later) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19703 a1c6a512-1295-4272-9138-f99709370657 --- apps/debug_menu.c | 37 ++----------------------------------- apps/gui/bitmap/list.c | 1 + apps/gui/list.c | 11 ++++------- 3 files changed, 7 insertions(+), 42 deletions(-) diff --git a/apps/debug_menu.c b/apps/debug_menu.c index 1c53cf9678..7567c64a21 100644 --- a/apps/debug_menu.c +++ b/apps/debug_menu.c @@ -233,7 +233,6 @@ static bool dbg_audio_thread(void) struct audio_debug d; lcd_setfont(FONT_SYSFIXED); - viewportmanager_set_statusbar(false); while(1) { @@ -271,7 +270,6 @@ static bool dbg_audio_thread(void) lcd_update(); } - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; } @@ -308,7 +306,6 @@ static bool dbg_buffering_thread(void) tick_add_task(dbg_audio_task); lcd_setfont(FONT_SYSFIXED); - viewportmanager_set_statusbar(false); while(!done) { button = get_action(CONTEXT_STD,HZ/5); @@ -399,7 +396,6 @@ static bool dbg_buffering_thread(void) } tick_remove_task(dbg_audio_task); - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; @@ -533,7 +529,6 @@ static bool dbg_hw_info(void) lcd_setfont(FONT_SYSFIXED); lcd_clear_display(); - viewportmanager_set_statusbar(false); lcd_puts(0, 0, "[Hardware info]"); @@ -572,7 +567,6 @@ static bool dbg_hw_info(void) int got_id; /* flag if we managed to get the flash IDs */ int oldmode; /* saved memory guard mode */ int line = 0; - viewportmanager_set_statusbar(false); oldmode = system_memory_guard(MEMGUARD_NONE); /* disable memory guard */ @@ -635,7 +629,6 @@ static bool dbg_hw_info(void) lcd_setfont(FONT_SYSFIXED); lcd_clear_display(); - viewportmanager_set_statusbar(false); lcd_puts(0, line++, "[Hardware info]"); @@ -694,7 +687,6 @@ static bool dbg_hw_info(void) /* Define this function in your target tree */ return __dbg_hw_info(); #endif /* CONFIG_CPU */ - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; } @@ -837,7 +829,6 @@ static bool dbg_spdif(void) lcd_clear_display(); lcd_setfont(FONT_SYSFIXED); - viewportmanager_set_statusbar(false); #ifdef HAVE_SPDIF_POWER spdif_power_enable(true); /* We need SPDIF power for both sending & receiving */ @@ -990,7 +981,6 @@ static bool dbg_spdif(void) spdif_power_enable(global_settings.spdif_enable); #endif - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; } @@ -1049,7 +1039,6 @@ bool dbg_ports(void) lcd_setfont(FONT_SYSFIXED); lcd_clear_display(); - viewportmanager_set_statusbar(false); while(1) { @@ -1075,7 +1064,6 @@ bool dbg_ports(void) lcd_update(); if (button_get_w_tmo(HZ/10) == (DEBUG_CANCEL|BUTTON_REL)) { - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; } @@ -1096,7 +1084,6 @@ bool dbg_ports(void) lcd_clear_display(); lcd_setfont(FONT_SYSFIXED); - viewportmanager_set_statusbar(false); while(1) { @@ -1163,7 +1150,6 @@ bool dbg_ports(void) lcd_update(); if (button_get_w_tmo(HZ/10) == (DEBUG_CANCEL|BUTTON_REL)) { - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; } @@ -1176,7 +1162,6 @@ bool dbg_ports(void) lcd_clear_display(); lcd_setfont(FONT_SYSFIXED); - viewportmanager_set_statusbar(false); while(1) { @@ -1275,7 +1260,6 @@ extern unsigned char serbuf[]; lcd_update(); if (button_get_w_tmo(HZ/10) == (DEBUG_CANCEL|BUTTON_REL)) { - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; } @@ -1287,7 +1271,6 @@ extern unsigned char serbuf[]; lcd_clear_display(); lcd_setfont(FONT_SYSFIXED); - viewportmanager_set_statusbar(false); while(1) { @@ -1319,12 +1302,10 @@ extern unsigned char serbuf[]; lcd_update(); if (button_get_w_tmo(HZ/10) == (DEBUG_CANCEL|BUTTON_REL)) { - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; } } - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); #else return __dbg_ports(); @@ -1340,7 +1321,6 @@ bool dbg_ports(void) int currval = 0; lcd_clear_display(); - viewportmanager_set_statusbar(false); while(1) { @@ -1405,7 +1385,6 @@ bool dbg_ports(void) break; } } - viewportmanager_set_statusbar(true); return false; } #endif /* !HAVE_LCD_BITMAP */ @@ -1421,7 +1400,6 @@ static bool dbg_pcf(void) lcd_setfont(FONT_SYSFIXED); #endif lcd_clear_display(); - viewportmanager_set_statusbar(false); while(1) { @@ -1457,13 +1435,11 @@ static bool dbg_pcf(void) lcd_update(); if (button_get_w_tmo(HZ/10) == (DEBUG_CANCEL|BUTTON_REL)) { - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; } } - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; } @@ -1480,7 +1456,6 @@ static bool dbg_cpufreq(void) lcd_setfont(FONT_SYSFIXED); #endif lcd_clear_display(); - viewportmanager_set_statusbar(false); while(1) { @@ -1512,12 +1487,10 @@ static bool dbg_cpufreq(void) break; case ACTION_STD_CANCEL: - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; } } - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; } @@ -1611,7 +1584,6 @@ static bool view_battery(void) char buf[32]; lcd_setfont(FONT_SYSFIXED); - viewportmanager_set_statusbar(false); while(1) { @@ -1852,12 +1824,10 @@ static bool view_battery(void) break; case ACTION_STD_CANCEL: - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; } } - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; } @@ -2487,7 +2457,6 @@ static bool cpu_boost_log(void) bool done; lcd_setfont(FONT_SYSFIXED); str = cpu_boost_log_getlog_first(); - viewportmanager_set_statusbar(false); while (i < count) { lcd_clear_display(); @@ -2520,7 +2489,6 @@ static bool cpu_boost_log(void) } } get_action(CONTEXT_STD,TIMEOUT_BLOCK); - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; } @@ -2540,7 +2508,6 @@ static bool dbg_scrollwheel(void) unsigned int speed; lcd_setfont(FONT_SYSFIXED); - viewportmanager_set_statusbar(false); while (1) { @@ -2570,7 +2537,6 @@ static bool dbg_scrollwheel(void) lcd_update(); } - viewportmanager_set_statusbar(true); lcd_setfont(FONT_UI); return false; } @@ -2746,8 +2712,10 @@ static int menu_action_callback(int btn, struct gui_synclist *lists) { if (btn == ACTION_STD_OK) { + bool oldbars = viewportmanager_set_statusbar(false); menuitems[gui_synclist_get_sel_pos(lists)].function(); btn = ACTION_REDRAW; + viewportmanager_set_statusbar(oldbars); } return btn; } @@ -2764,6 +2732,5 @@ bool debug_menu(void) simplelist_info_init(&info, "Debug Menu", ARRAYLEN(menuitems), NULL); info.action_callback = menu_action_callback; info.get_name = dbg_menu_getname; - return simplelist_show_list(&info); } diff --git a/apps/gui/bitmap/list.c b/apps/gui/bitmap/list.c index 074f72a179..6e1876912e 100644 --- a/apps/gui/bitmap/list.c +++ b/apps/gui/bitmap/list.c @@ -280,6 +280,7 @@ void list_draw(struct screen *display, struct gui_synclist *list) } display->set_viewport(parent); display->update_viewport(); + display->set_viewport(NULL); } diff --git a/apps/gui/list.c b/apps/gui/list.c index 04bd7e4c3f..2107d3a593 100644 --- a/apps/gui/list.c +++ b/apps/gui/list.c @@ -844,20 +844,16 @@ static char* simplelist_static_getname(int item, bool simplelist_show_list(struct simplelist_info *info) { struct gui_synclist lists; - struct viewport vp[NB_SCREENS]; - int action, old_line_count = simplelist_line_count,i; + int action, old_line_count = simplelist_line_count; + bool oldbars = viewportmanager_set_statusbar(true); char* (*getname)(int item, void * data, char *buffer, size_t buffer_len); int wrap = LIST_WRAP_UNLESS_HELD; if (info->get_name) getname = info->get_name; else getname = simplelist_static_getname; - FOR_NB_SCREENS(i) - { - viewport_set_defaults(&vp[i], i); - } gui_synclist_init(&lists, getname, info->callback_data, - info->scroll_all, info->selection_size, vp); + info->scroll_all, info->selection_size, NULL); if (info->title) gui_synclist_set_title(&lists, info->title, NOICON); @@ -929,6 +925,7 @@ bool simplelist_show_list(struct simplelist_info *info) return true; } talk_shutup(); + viewportmanager_set_statusbar(oldbars); return false; } -- cgit v1.2.3