summaryrefslogtreecommitdiff
path: root/interface/render.py
diff options
context:
space:
mode:
Diffstat (limited to 'interface/render.py')
-rw-r--r--interface/render.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/interface/render.py b/interface/render.py
index be7d770..7f8d3f1 100644
--- a/interface/render.py
+++ b/interface/render.py
@@ -44,11 +44,11 @@ class Renderer:
with self._lock:
self._running = False
- def set_functions(self, f):
+ def set_functions(self, *args):
with self._lock:
if self._running:
raise ValueError("Can't change while running")
- self._functions, self._data = [i[0] for i in f], [i[1] for i in f]
+ self._functions, self._data = [i[0] for i in args], [i[1] for i in args]
@property
def time(self):
@@ -74,7 +74,7 @@ class Renderer:
next_ap = []
if self._callback is not None:
- self._callback(t, self._values)
+ self._callback(self._current, self._values)
## FIXME: Cleanup finished audio players?
## FIXME: Handle audio fades and jumps
@@ -118,6 +118,20 @@ class Renderer:
## END locked block
time.sleep(max(0, next_t - time.monotonic()))
+ def advance(self, *args):
+ with self._lock:
+ if self._run_thread is None:
+ raise ValueError("Not running")
+ for a in args:
+ if isinstance(a, int):
+ p = None
+ else:
+ a, p = a
+ f = self._functions[a]
+ t = int(1000*self._current)
+ d = f.advance(t, self._data[a], n=p)
+ _, _, self._data[a] = f.render(t, d)
+
def __init__(self, w: Workspace, w_lock: threading.RLock, output, callback=None):
self.output = output
self.w = w