From 0da3cabbfd5bfef3e8a5d7857971f6efe0164842 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Fri, 2 Apr 2010 23:56:25 +0000 Subject: [PATCH] Add a function which triggers an OperationCallback() in every context of every runtime. --- src/sbbs3/js_rtpool.c | 19 +++++++++++++++++++ src/sbbs3/js_rtpool.h | 1 + 2 files changed, 20 insertions(+) diff --git a/src/sbbs3/js_rtpool.c b/src/sbbs3/js_rtpool.c index 29da99172c..8e375500f3 100644 --- a/src/sbbs3/js_rtpool.c +++ b/src/sbbs3/js_rtpool.c @@ -126,3 +126,22 @@ void DLLCALL jsrt_Release(JSRuntime *rt) } #endif } + +void DLLCALL jsrt_TriggerAll(void) +{ +#ifdef USE_JS_OPERATION_CALLBACK + int i; + int j; + JSContext *iterp,*cx; + + for(i=0; i<JSRT_QUEUE_SIZE; i++) { + pthread_mutex_lock(&jsrt_mutex); + if(jsrt_queue[i].used) { + iterp=NULL; + while((cx = JS_ContextIterator(jsrt_queue[i].rt, &iterp)) != NULL) + JS_TriggerOperationCallback(cx); + } + pthread_mutex_unlock(&jsrt_mutex); + } +#endif +} diff --git a/src/sbbs3/js_rtpool.h b/src/sbbs3/js_rtpool.h index 22a48a6b6f..e320071ca2 100644 --- a/src/sbbs3/js_rtpool.h +++ b/src/sbbs3/js_rtpool.h @@ -38,6 +38,7 @@ extern "C" { #endif DLLEXPORT JSRuntime * DLLCALL jsrt_GetNew(int maxbytes, unsigned long timeout, const char *filename, long line); DLLEXPORT void DLLCALL jsrt_Release(JSRuntime *); +DLLEXPORT void DLLCALL jsrt_TriggerAll(void); #if defined(__cplusplus) } #endif -- GitLab