Implementing optional parameter `restart` to tmr:start() (#3111)
This commit is contained in:
parent
87030a87ea
commit
d72ea91ed0
|
@ -125,16 +125,23 @@ static int tmr_register(lua_State* L) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
// Lua: t:start()
|
||||
// Lua: t:start( [restart] )
|
||||
static int tmr_start(lua_State* L){
|
||||
tmr_t *tmr = (tmr_t *) luaL_checkudata(L, 1, "tmr.timer");
|
||||
int idle = tmr->mode & TIMER_IDLE_FLAG;
|
||||
lua_settop(L, 2);
|
||||
luaL_argcheck(L, lua_isboolean(L, 2) || lua_isnil(L, 2), 2, "boolean expected");
|
||||
int restart = lua_toboolean(L, 2);
|
||||
|
||||
lua_settop(L, 1); /* ignore any args after the userdata */
|
||||
if (tmr->self_ref == LUA_NOREF)
|
||||
tmr->self_ref = luaL_ref(L, LUA_REGISTRYINDEX);
|
||||
|
||||
if(idle) {
|
||||
//we return false if the timer is not idle
|
||||
int idle = tmr->mode&TIMER_IDLE_FLAG;
|
||||
if(!(idle || restart)){
|
||||
lua_pushboolean(L, 0);
|
||||
}else{
|
||||
if (!idle) {os_timer_disarm(&tmr->os);}
|
||||
tmr->mode &= ~TIMER_IDLE_FLAG;
|
||||
os_timer_arm(&tmr->os, tmr->interval, tmr->mode==TIMER_MODE_AUTO);
|
||||
}
|
||||
|
|
|
@ -273,13 +273,13 @@ mytimer:start()
|
|||
|
||||
### tobj:start()
|
||||
|
||||
Starts or restarts a previously configured timer.
|
||||
Starts or restarts a previously configured timer. If the timer is running the timer is restarted only when `restart` parameter is `true`. Otherwise `false` is returned signaling error.
|
||||
|
||||
#### Syntax
|
||||
`tobj:start()`
|
||||
`tobj:start([restart])`
|
||||
|
||||
#### Parameters
|
||||
None
|
||||
- `restart` optional boolean parameter forcing to restart already running timer
|
||||
|
||||
#### Returns
|
||||
`true` if the timer was started, `false` on error
|
||||
|
|
Loading…
Reference in New Issue