aboutsummaryrefslogtreecommitdiff
path: root/host/matelight/queuemgr.py
diff options
context:
space:
mode:
authorjaseg <jaseg@jaseg.net>2014-01-03 00:10:20 +0100
committerjaseg <jaseg@jaseg.net>2014-01-03 00:10:20 +0100
commit916aced1bef07001ef4eee2a1cde6cd6e33b4bc3 (patch)
treea8af06f0dcc65645801a2e20db64ca877b288f98 /host/matelight/queuemgr.py
parent34def4f660108632a9526c9ad3195fdb883d206d (diff)
downloadmatelight-916aced1bef07001ef4eee2a1cde6cd6e33b4bc3.tar.gz
matelight-916aced1bef07001ef4eee2a1cde6cd6e33b4bc3.tar.bz2
matelight-916aced1bef07001ef4eee2a1cde6cd6e33b4bc3.zip
Now with even more abstract art.
Diffstat (limited to 'host/matelight/queuemgr.py')
-rw-r--r--host/matelight/queuemgr.py52
1 files changed, 0 insertions, 52 deletions
diff --git a/host/matelight/queuemgr.py b/host/matelight/queuemgr.py
deleted file mode 100644
index df75309..0000000
--- a/host/matelight/queuemgr.py
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/env python3
-
-from renderers import TextRenderer, ImageRenderer
-import host, config
-import time, math
-
-score = lambda now, last, lifetime, priority, item: priority*math.log(now-last)/(10.0+item.duration)
-
-class FuzzyQueue:
- def __init__(self, default):
- self._default = default
- self.put(default, 0.0, 0)
- self._l = []
-
- def put(self, item, priority=1.0, lifetime=0):
- lifetime += time.time()
- self._l.append((0, lifetime, priority, item))
-
- def pop(self):
- """ Get an item from the queue
-
- NOTE: This is *not* a regular pop, as it does not necessarily remove the item from the queue.
- """
- now = time.time()
- # Choose item based on last used and priority
- _, index, (_, lifetime, priority, item) = max(sorted([(score(now, *v), i, v) for i, v in self._l]))
- # If item's lifetime is exceeded, remove
- if lifetime < now and item is not self._default:
- del self._l[index]
- # Otherwise, set item's last played time
- self._l[index] = (now, lifetime, prioity, item)
- # Finally, return
- return item
-
-q = FuzzyQueue()
-
-def insert_text(text, priority=1.0, lifetime=0, escapes=True):
- q.put(TextRenderer(text, escapes), priority, lifetime)
-
-def insert_image(image, priority=1.0, lifetime=0):
- q.put(ImageRenderer(image), priority, lifetime)
-
-def render_thread():
- while True:
- start = time.time()
- for frame, delay in q.pop().frames(start):
- then = time.time()
- if then-start+delay > RENDERER_TIMEOUT:
- break
- sendframe(frame)
- now = time.time()
- time.sleep(min(RENDERER_TIMEOUT, delay - (now-then)))