1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2025-12-21 18:53:32 +00:00

Added timer metadata for setInterval() elapsed/reset

This commit is contained in:
Bryan Roe
2020-12-10 09:52:59 -08:00
parent 8d4a222d47
commit a60c35d161
3 changed files with 10 additions and 2 deletions

View File

@@ -984,7 +984,8 @@ void ILibDuktape_Polyfills_timer_elapsed(void *obj)
if (ptrs->timerType == ILibDuktape_Timer_Type_INTERVAL)
{
ILibLifeTime_AddEx(ILibGetBaseTimer(Duktape_GetChain(ctx)), ptrs, ptrs->timeout, ILibDuktape_Polyfills_timer_elapsed, NULL);
char *metadata = ILibLifeTime_GetCurrentTriggeredMetadata(ILibGetBaseTimer(duk_ctx_chain(ctx)));
ILibLifeTime_AddEx3(ILibGetBaseTimer(Duktape_GetChain(ctx)), ptrs, ptrs->timeout, ILibDuktape_Polyfills_timer_elapsed, NULL, metadata);
}
else
{

View File

@@ -917,6 +917,7 @@ struct ILibLifeTime
long long NextTriggerTick;
void *Reserved;
char *CurrentTriggeredMetaData;
void *ObjectList;
int ObjectCount;
@@ -7456,7 +7457,10 @@ void ILibLifeTime_SetMetadata(ILibLifeTime_Token obj, char *metadata, size_t met
sprintf_s(val + oldLen, ILibMemory_Size(val) - oldLen, "%s%s", oldLen>0?", ":"", metadata);
data->metadata = val;
}
char *ILibLifeTime_GetCurrentTriggeredMetadata(void* LifeTimeMonitorObject)
{
return(((struct ILibLifeTime*)LifeTimeMonitorObject)->CurrentTriggeredMetaData);
}
//
// An internal method used by the ILibLifeTime methods
@@ -7538,7 +7542,9 @@ void ILibLifeTime_Check(void *LifeTimeMonitorObject, fd_set *readset, fd_set *wr
if (removed == 0)
{
// Trigger the callback
LifeTimeMonitor->CurrentTriggeredMetaData = EVT->metadata;
EVT->CallbackPtr(EVT->data);
LifeTimeMonitor->CurrentTriggeredMetaData = NULL;
}
else
{

View File

@@ -1373,6 +1373,7 @@ int ILibIsRunningOnChainThread(void* chain);
#define ILibLifeTime_Add(LifetimeMonitorObject, data, seconds, Callback, Destroy) ILibLifeTime_AddEx(LifetimeMonitorObject, data, seconds * 1000, Callback, Destroy)
#define ILibLifeTime_AddEx(LifetimeMonitorObject, data, milliseconds, Callback, Destroy) ILibLifeTime_AddEx2(LifetimeMonitorObject, data, milliseconds, Callback, Destroy, __FILE__, __LINE__)
void ILibLifeTime_SetMetadata(ILibLifeTime_Token obj, char *metadata, size_t metadataLen);
char *ILibLifeTime_GetCurrentTriggeredMetadata(void* LifeTimeMonitorObject);
//
// Removes all event triggers that contain the specified data object.