Progress bar optimisation.
This commit is contained in:
parent
3abbf8e1b2
commit
e2f3a68c3b
2 changed files with 28 additions and 32 deletions
|
@ -79,13 +79,12 @@ GHandle gwinGProgressbarCreate(GDisplay *g, GProgressbarObject *gs, const GWidge
|
|||
gs->pos = 0;
|
||||
|
||||
#if GWIN_PROGRESSBAR_AUTO
|
||||
gs->delay = 0;
|
||||
gtimerInit(&gs->gt);
|
||||
#endif
|
||||
|
||||
ResetDisplayPos(gs);
|
||||
gwinSetVisible((GHandle)gs, pInit->g.show);
|
||||
|
||||
|
||||
return (GHandle)gs;
|
||||
}
|
||||
|
||||
|
@ -183,39 +182,37 @@ void gwinProgressbarDecrement(GHandle gh) {
|
|||
static void _progressbarCallback(void *param) {
|
||||
#define gsw ((GProgressbarObject *)gh)
|
||||
GHandle gh = (GHandle)param;
|
||||
|
||||
|
||||
if (gh->vmt != (gwinVMT *)&progressbarVMT)
|
||||
return;
|
||||
|
||||
|
||||
gwinProgressbarIncrement(gh);
|
||||
|
||||
if (gsw->pos < gsw->max)
|
||||
gtimerStart(&(gsw->gt), _progressbarCallback, gh, FALSE, gsw->delay);
|
||||
|
||||
#undef gsw
|
||||
}
|
||||
|
||||
void gwinProgressbarStart(GHandle gh, delaytime_t delay) {
|
||||
#define gsw ((GProgressbarObject *)gh)
|
||||
|
||||
if (gh->vmt != (gwinVMT *)&progressbarVMT)
|
||||
return;
|
||||
|
||||
gsw->delay = delay;
|
||||
|
||||
gtimerStart(&(gsw->gt), _progressbarCallback, gh, FALSE, gsw->delay);
|
||||
|
||||
|
||||
if (gsw->pos >= gsw->max)
|
||||
gtimerStop(&gsw->gt);
|
||||
|
||||
#undef gsw
|
||||
}
|
||||
|
||||
void gwinProgressbarStop(GHandle gh) {
|
||||
|
||||
void gwinProgressbarStart(GHandle gh, delaytime_t delay) {
|
||||
#define gsw ((GProgressbarObject *)gh)
|
||||
|
||||
|
||||
if (gh->vmt != (gwinVMT *)&progressbarVMT)
|
||||
return;
|
||||
|
||||
gtimerStop(&(gsw->gt));
|
||||
|
||||
|
||||
gtimerStart(&gsw->gt, _progressbarCallback, gh, TRUE, delay);
|
||||
|
||||
#undef gsw
|
||||
}
|
||||
|
||||
void gwinProgressbarStop(GHandle gh) {
|
||||
#define gsw ((GProgressbarObject *)gh)
|
||||
|
||||
if (gh->vmt != (gwinVMT *)&progressbarVMT)
|
||||
return;
|
||||
|
||||
gtimerStop(&gsw->gt);
|
||||
|
||||
#undef gsw
|
||||
}
|
||||
#endif /* GWIN_PROGRESSBAR_AUTO */
|
||||
|
@ -226,7 +223,7 @@ void gwinProgressbarDecrement(GHandle gh) {
|
|||
|
||||
void gwinProgressbarDraw_Std(GWidgetObject *gw, void *param) {
|
||||
#define gsw ((GProgressbarObject *)gw)
|
||||
|
||||
|
||||
const GColorSet * pcol;
|
||||
(void) param;
|
||||
|
||||
|
|
|
@ -33,7 +33,6 @@ typedef struct GProgressbarObject {
|
|||
int pos;
|
||||
#if GWIN_PROGRESSBAR_AUTO
|
||||
GTimer gt;
|
||||
delaytime_t delay;
|
||||
#endif
|
||||
} GProgressbarObject;
|
||||
|
||||
|
@ -59,7 +58,7 @@ extern "C" {
|
|||
* @note A progressbar does not take any GINPUT inputs.
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
*/
|
||||
GHandle gwinGProgressbarCreate(GDisplay *g, GProgressbarObject *gb, const GWidgetInit *pInit);
|
||||
#define gwinProgressbarCreate(w, pInit) gwinGProgressbarCreate(GDISP, w, pInit)
|
||||
|
||||
|
@ -165,14 +164,14 @@ void gwinProgressbarDecrement(GHandle gh);
|
|||
* @api
|
||||
*/
|
||||
void gwinProgressbarStart(GHandle gh, delaytime_t delay);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Stop the timer which is started by @p gwinProgressbarStart()
|
||||
*
|
||||
* @param[in] gh The window handle (must be a progressbar window)
|
||||
*
|
||||
* @api
|
||||
*/
|
||||
*/
|
||||
void gwinProgressbarStop(GHandle gh);
|
||||
#endif /* GWIN_PROGRESSBAR_AUTO */
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue