Line | Branch | Exec | Source |
---|---|---|---|
1 | #include <time.h> | ||
2 | #include "gwion_util.h" | ||
3 | #include "gwion_ast.h" | ||
4 | #include "gwion_env.h" | ||
5 | #include "vm.h" | ||
6 | #include "gwion.h" | ||
7 | #include "driver.h" | ||
8 | |||
9 | 712 | ANN Driver *new_driver(MemPool p) { | |
10 | 712 | Driver *di = (Driver *)mp_calloc(p, BBQ); | |
11 | 712 | di->func = dummy_driver; | |
12 | 712 | di->driver = (DriverData *)mp_calloc(p, DriverData); | |
13 | 712 | di->is_running = true; | |
14 | 712 | return di; | |
15 | } | ||
16 | |||
17 | 707 | ANN void free_driver(Driver *d, VM *vm) { | |
18 |
2/2✓ Branch 0 taken 638 times.
✓ Branch 1 taken 69 times.
|
707 | if (d->in) xfree(d->in); |
19 |
2/2✓ Branch 0 taken 638 times.
✓ Branch 1 taken 69 times.
|
707 | if (d->out) xfree(d->out); |
20 | 707 | mp_free(vm->gwion->mp, SoundInfo, d->si); | |
21 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 707 times.
|
707 | if (d->driver->del) d->driver->del(vm, d); |
22 | 707 | mp_free(vm->gwion->mp, DriverData, d->driver); | |
23 | 707 | mp_free(vm->gwion->mp, BBQ, d); | |
24 | 707 | } | |
25 | |||
26 | 638 | ANN void driver_alloc(Driver *d) { | |
27 | 638 | d->out = (m_float *)xcalloc(d->si->out, SZ_FLOAT); | |
28 | 638 | d->in = (m_float *)xcalloc(d->si->in, SZ_FLOAT); | |
29 | 638 | } | |
30 | |||
31 | 638 | static DRVRUN(dummy_run) { | |
32 |
2/2✓ Branch 0 taken 3287132 times.
✓ Branch 1 taken 638 times.
|
3287770 | while (di->is_running) { |
33 | 3287132 | di->run(vm); | |
34 | 3287132 | next_bbq_pos(vm); | |
35 | } | ||
36 | 638 | } | |
37 | |||
38 | 638 | static DRVINI(dummy_ini) { | |
39 | 638 | gw_err("{-/}using dummy driver{0}\n"); | |
40 | 638 | return GW_OK; | |
41 | } | ||
42 | |||
43 | 643 | void dummy_driver(DriverData *dd) { | |
44 | 643 | dd->ini = dummy_ini; | |
45 | 643 | dd->run = dummy_run; | |
46 | 643 | } | |
47 |