File Coverage

pl_eventloop.c
Criterion Covered Total %
statement 14 16 87.5
branch 2 4 50.0
condition n/a
subroutine n/a
pod n/a
total 16 20 80.0


line stmt bran cond sub pod time code
1             #include
2             #include "pl_eventloop.h"
3             #include "c_eventloop.h"
4              
5 262           int pl_register_eventloop(Duk* duk)
6             {
7             /* Register our event loop dispatcher, otherwise calls to */
8             /* dispatch_function_in_event_loop will not work. */
9 262           eventloop_register(duk->ctx);
10 262           return 0;
11             }
12              
13 3           int pl_run_function_in_event_loop(Duk* duk, const char* func)
14             {
15 3           duk_context* ctx = duk->ctx;
16 3           duk_int_t rc = 0;
17              
18             /* Start a zero timer which will call our function from the event loop. */
19 3           duk_push_sprintf(ctx, "setTimeout(function() { %s(); }, 0);", func);
20 3           rc = duk_peval(ctx);
21 3 50         if (rc != DUK_EXEC_SUCCESS) {
22 0           croak("Could not eval JS event loop dispatcher for %s: %d - %s\n",
23             func, rc, duk_safe_to_string(ctx, -1));
24             }
25 3           duk_pop(ctx); /* pop result / error */
26              
27             /* Launch eventloop; this call only returns after the eventloop terminates. */
28 3           rc = duk_safe_call(ctx, eventloop_run, duk, 0 /*nargs*/, 1 /*nrets*/);
29 3 50         if (rc != DUK_EXEC_SUCCESS) {
30 0           croak("JS event loop run failed: %d - %s\n",
31             rc, duk_safe_to_string(ctx, -1));
32             }
33 3           duk_pop(ctx);
34              
35 3           return 0;
36             }