diff options
| author | Jonathan Gordon <rockbox@jdgordon.info> | 2010-03-06 00:29:46 +0000 |
|---|---|---|
| committer | Jonathan Gordon <rockbox@jdgordon.info> | 2010-03-06 00:29:46 +0000 |
| commit | a9b5f4d810903996d868b0fcdcf9859cf3f47d7d (patch) | |
| tree | 4acbdcace28f00451d5b5c9687cc53c6f997886c /apps/gui/statusbar.c | |
| parent | 43ed678b4645a48cf2072ab72c93e730f4d329ff (diff) | |
| download | rockbox-a9b5f4d810903996d868b0fcdcf9859cf3f47d7d.zip rockbox-a9b5f4d810903996d868b0fcdcf9859cf3f47d7d.tar.gz rockbox-a9b5f4d810903996d868b0fcdcf9859cf3f47d7d.tar.bz2 rockbox-a9b5f4d810903996d868b0fcdcf9859cf3f47d7d.tar.xz | |
cleanup statusbar+base skin relationship...
* remove the "custom" option from the statusbar setting. if a sbs file is set then statusbar setting is ignored, no other user visible change there.
* new tag, %wi - use to draw the inbuilt statusbar in the current viewport
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25038 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/gui/statusbar.c')
| -rw-r--r-- | apps/gui/statusbar.c | 39 |
1 files changed, 13 insertions, 26 deletions
diff --git a/apps/gui/statusbar.c b/apps/gui/statusbar.c index 4710eba..bc5570e 100644 --- a/apps/gui/statusbar.c +++ b/apps/gui/statusbar.c @@ -184,7 +184,7 @@ static void gui_statusbar_init(struct gui_statusbar * bar) (vp).y = (display)->lcdheight - STATUSBAR_HEIGHT; \ } while(0) -void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw) +void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw, struct viewport *vp) { struct screen * display = bar->display; @@ -194,6 +194,7 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw) #ifdef HAVE_LCD_CHARCELLS int val; (void)force_redraw; /* The Player always has "redraw" */ + (void)vp; #endif /* HAVE_LCD_CHARCELLS */ bar->info.battlevel = battery_level(); @@ -277,10 +278,16 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw) #endif memcmp(&(bar->info), &(bar->lastinfo), sizeof(struct status_info))) { - struct viewport vp; - - GET_RECT(vp,statusbar_position(display->screen_type),display); - display->set_viewport(&vp); + if (vp == NULL) + { + struct viewport viewport; + GET_RECT(viewport,statusbar_position(display->screen_type),display); + display->set_viewport(&viewport); + } + else + { + display->set_viewport(vp); + } display->set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); display->fillrect(0, 0, display->getwidth(), STATUSBAR_HEIGHT); display->set_drawmode(DRMODE_SOLID); @@ -823,30 +830,10 @@ void gui_syncstatusbar_draw(struct gui_syncstatusbar * bars, #endif /* HAVE_LCD_BITMAP */ int i; FOR_NB_SCREENS(i) { - gui_statusbar_draw( &(bars->statusbars[i]), force_redraw ); + gui_statusbar_draw( &(bars->statusbars[i]), force_redraw, NULL ); } } -#ifdef HAVE_LCD_BITMAP -void gui_statusbar_changed( enum screen_type screen, - enum statusbar_values old) -{ - /* clear and update the statusbar area to remove old parts */ - enum statusbar_values bar = statusbar_position(screen); - - struct screen *display = &screens[screen]; - struct viewport vp; - - if (old != STATUSBAR_OFF && old != bar) - { - GET_RECT(vp, old, display); - display->set_viewport(&vp); - display->clear_viewport(); - display->update_viewport(); - display->set_viewport(NULL); - } -} -#endif #ifdef HAVE_REMOTE_LCD enum statusbar_values statusbar_position(int screen) |