forked from len0rd/rockbox
Fix up statusbar drawing in the wps a bit, fixing most, if not all, (re-)draw issues.
a) remove the temporary work around in gui_wps_display b) let the wps-statusbars redraw if it's masked (i.e. WPS_REFRESH_ALL or WPS_REFRESH_STATUSBAR) c) fix a bug of mine, I attached re-fixing the bars to the wrong event d) unify the decision whether to draw bars at all e) some other style/code minor cleanups git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20400 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
ce6b116bc1
commit
ad59f6ed22
4 changed files with 33 additions and 35 deletions
|
|
@ -353,16 +353,6 @@ bool gui_wps_display(void)
|
|||
FOR_NB_SCREENS(i)
|
||||
{
|
||||
gui_wps_refresh(&gui_wps[i], 0, WPS_REFRESH_ALL);
|
||||
#ifdef HAVE_LCD_BITMAP
|
||||
/* temporary work around so the statusbar doesnt disappear when the WPS
|
||||
* is first entered. This should be removed when the
|
||||
* WPS-statusbar handling is fixed up a bit more */
|
||||
bool draw = global_settings.statusbar;
|
||||
if (gui_wps[i].data->wps_sb_tag)
|
||||
draw = gui_wps[i].data->show_sb_on_wps;
|
||||
if (draw)
|
||||
gui_statusbar_draw(&statusbars.statusbars[i], true);
|
||||
#endif
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
@ -2114,6 +2104,10 @@ bool gui_wps_refresh(struct gui_wps *gwps,
|
|||
data->peak_meter_enabled = enable_pm;
|
||||
#endif
|
||||
|
||||
if (refresh_mode & WPS_REFRESH_STATUSBAR)
|
||||
{
|
||||
gwps_draw_statusbars();
|
||||
}
|
||||
/* Restore the default viewport */
|
||||
display->set_viewport(NULL);
|
||||
|
||||
|
|
@ -2152,7 +2146,5 @@ bool gui_wps_refresh(struct gui_wps *gwps,
|
|||
remote_backlight_on();
|
||||
}
|
||||
#endif
|
||||
/* force a bars update if they are being displayed */
|
||||
viewportmanager_draw_statusbars(NULL);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ static void play_hop(int direction)
|
|||
#endif
|
||||
}
|
||||
|
||||
void gwps_fix_statusbars(void)
|
||||
static void gwps_fix_statusbars(void)
|
||||
{
|
||||
#ifdef HAVE_LCD_BITMAP
|
||||
int i;
|
||||
|
|
@ -161,9 +161,11 @@ void gwps_fix_statusbars(void)
|
|||
bool draw = false;
|
||||
if (gui_wps[i].data->wps_sb_tag)
|
||||
draw = gui_wps[i].data->show_sb_on_wps;
|
||||
else if (global_settings.statusbar)
|
||||
wpsbars |= VP_SB_ONSCREEN(i);
|
||||
if (draw)
|
||||
wpsbars |= (VP_SB_ONSCREEN(i) | VP_SB_IGNORE_SETTING(i));
|
||||
}
|
||||
}
|
||||
#else
|
||||
wpsbars = VP_SB_ALLSCREENS;
|
||||
#endif
|
||||
|
|
@ -188,6 +190,11 @@ static void gwps_leave_wps(void)
|
|||
viewportmanager_set_statusbar(oldbars);
|
||||
}
|
||||
|
||||
void gwps_draw_statusbars(void)
|
||||
{
|
||||
viewportmanager_set_statusbar(wpsbars);
|
||||
}
|
||||
|
||||
/* The WPS can be left in two ways:
|
||||
* a) call a function, which draws over the wps. In this case, the wps
|
||||
* will be still active (i.e. the below function didn't return)
|
||||
|
|
@ -207,7 +214,6 @@ long gui_wps_show(void)
|
|||
bool update_track = false;
|
||||
int i;
|
||||
long last_left = 0, last_right = 0;
|
||||
|
||||
wps_state_init();
|
||||
|
||||
#ifdef HAVE_LCD_CHARCELLS
|
||||
|
|
@ -685,7 +691,7 @@ long gui_wps_show(void)
|
|||
|
||||
if (restore &&
|
||||
((restoretimer == RESTORE_WPS_INSTANTLY) ||
|
||||
TIME_AFTER(restore, current_tick)))
|
||||
TIME_AFTER(current_tick, restoretimer)))
|
||||
{
|
||||
/* restore wps backrops and statusbars */
|
||||
#if LCD_DEPTH > 1
|
||||
|
|
@ -694,7 +700,6 @@ long gui_wps_show(void)
|
|||
#if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
|
||||
show_remote_wps_backdrop();
|
||||
#endif
|
||||
viewportmanager_set_statusbar(wpsbars);
|
||||
restore = false;
|
||||
restoretimer = RESTORE_WPS_INSTANTLY;
|
||||
if (gui_wps_display()) {
|
||||
|
|
@ -751,22 +756,21 @@ static void statusbar_toggle_handler(void *data)
|
|||
{
|
||||
(void)data;
|
||||
int i;
|
||||
bool draw = global_settings.statusbar;
|
||||
gwps_fix_statusbars();
|
||||
|
||||
FOR_NB_SCREENS(i)
|
||||
{
|
||||
struct wps_viewport *vp = &gui_wps[i].data->viewports[0];
|
||||
if (gui_wps[i].data->wps_sb_tag)
|
||||
draw = gui_wps[i].data->show_sb_on_wps;
|
||||
struct viewport *vp = &gui_wps[i].data->viewports[0].vp;
|
||||
bool draw = wpsbars & (VP_SB_ONSCREEN(i) | VP_SB_IGNORE_SETTING(i));
|
||||
if (!draw)
|
||||
{
|
||||
vp->vp.y = 0;
|
||||
vp->vp.height = screens[i].lcdheight;
|
||||
vp->y = 0;
|
||||
vp->height = screens[i].lcdheight;
|
||||
}
|
||||
else
|
||||
{
|
||||
vp->vp.y = STATUSBAR_HEIGHT;
|
||||
vp->vp.height = screens[i].lcdheight - STATUSBAR_HEIGHT;
|
||||
vp->y = STATUSBAR_HEIGHT;
|
||||
vp->height = screens[i].lcdheight - STATUSBAR_HEIGHT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,15 +26,18 @@
|
|||
#include "metadata.h"
|
||||
|
||||
/* constants used in line_type and as refresh_mode for wps_refresh */
|
||||
#define WPS_REFRESH_STATIC 1 /* line doesn't change over time */
|
||||
#define WPS_REFRESH_DYNAMIC 2 /* line may change (e.g. time flag) */
|
||||
#define WPS_REFRESH_SCROLL 4 /* line scrolls */
|
||||
#define WPS_REFRESH_PLAYER_PROGRESS 8 /* line contains a progress bar */
|
||||
#define WPS_REFRESH_PEAK_METER 16 /* line contains a peak meter */
|
||||
#define WPS_REFRESH_STATIC (1<<0) /* line doesn't change over time */
|
||||
#define WPS_REFRESH_DYNAMIC (1<<1) /* line may change (e.g. time flag) */
|
||||
#define WPS_REFRESH_SCROLL (1<<2) /* line scrolls */
|
||||
#define WPS_REFRESH_PLAYER_PROGRESS (1<<3) /* line contains a progress bar */
|
||||
#define WPS_REFRESH_PEAK_METER (1<<4) /* line contains a peak meter */
|
||||
#define WPS_REFRESH_STATUSBAR (1<<5) /* refresh statusbar */
|
||||
#define WPS_REFRESH_ALL 0xff /* to refresh all line types */
|
||||
/* to refresh only those lines that change over time */
|
||||
#define WPS_REFRESH_NON_STATIC (WPS_REFRESH_ALL & ~WPS_REFRESH_STATIC & ~WPS_REFRESH_SCROLL)
|
||||
|
||||
/* to refresh only those lines that change over time */
|
||||
#define WPS_REFRESH_NON_STATIC (WPS_REFRESH_DYNAMIC| \
|
||||
WPS_REFRESH_PLAYER_PROGRESS| \
|
||||
WPS_REFRESH_PEAK_METER)
|
||||
/* alignments */
|
||||
#define WPS_ALIGN_RIGHT 32
|
||||
#define WPS_ALIGN_CENTER 64
|
||||
|
|
@ -440,8 +443,8 @@ bool wps_data_load(struct wps_data *wps_data,
|
|||
const char *buf,
|
||||
bool isfile);
|
||||
|
||||
/* Sets up the statusbars for the wps and each screen */
|
||||
void gwps_fix_statusbars(void);
|
||||
/* Redraw statusbars if necessary */
|
||||
void gwps_draw_statusbars(void);
|
||||
|
||||
/* Returns the index of the subline in the subline array
|
||||
line - 0-based line number
|
||||
|
|
|
|||
|
|
@ -125,7 +125,6 @@ void viewportmanager_draw_statusbars(void* data)
|
|||
(void)data;
|
||||
int i;
|
||||
|
||||
gwps_fix_statusbars();
|
||||
FOR_NB_SCREENS(i)
|
||||
{
|
||||
if (showing_bars(i))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue