int main(int argc, char **args) { JX_Initialize(args[0], callback); JX_InitializeNewEngine(); JX_DefineMainFile(contents); JX_DefineExtension("sampleMethod", sampleMethod); JX_StartEngine(); while (JX_LoopOnce() != 0) usleep(1); JXValue *params[2] = {param1, param2}; JXValue out; // call fnc -> JS side function // we had made this variable persistent inside sampleMethod JX_CallFunction(fnc, *params, 2, &out); // we need to clear persistent and then free whenever we // are done with persistent values to not to leak JX_ClearPersistent(fnc); JX_Free(fnc); JX_ClearPersistent(param1); JX_Free(param1); JX_ClearPersistent(param2); JX_Free(param2); assert(JX_GetDataLength(&out) == 11 && "Expected return value was 'test{\"a\":3}"); JX_Free(&out); assert(out.data_ == NULL && out.size_ == 0 && "JX_FreeResultData leaks?"); JX_StopEngine(); }
JNIEXPORT void JNICALL Java_io_jxcore_node_jxcore_stopEngine(JNIEnv *env, jobject thiz) { JX_ClearPersistent(&eventCB); JX_Free(&eventCB); JX_StopEngine(); }