summaryrefslogtreecommitdiff
path: root/window.py
diff options
context:
space:
mode:
Diffstat (limited to 'window.py')
-rw-r--r--window.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/window.py b/window.py
index 8e04225..24320b9 100644
--- a/window.py
+++ b/window.py
@@ -2,6 +2,7 @@ from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *
from time import time
+from queue import Queue
from renderer import ImageRenderer, TransitionMix
from texture import ImageTexture
@@ -12,6 +13,7 @@ class PixDisplay:
self.last_time = 0
self.start_time = 0
self.image_time = 0
+ self.paused = False
self.textures = []
self.current_texture_index = 0
self.renderer = None
@@ -24,10 +26,11 @@ class PixDisplay:
self.auto_transition = True
self.transition_reverse = False
+ self.text_prev = None
self.tex = None
- self.text_next = None
self._force_redraw = False
+ self.queue = Queue()
@property
def max_framerate(self):
@@ -69,8 +72,14 @@ class PixDisplay:
glutSwapBuffers()
return
+ # Run queue events
+ while not self.queue.empty():
+ f = self.queue.get() # Get the task and its data
+ f()
+
# Progress image time
- self.image_time += delta_time
+ if not self.paused:
+ self.image_time += delta_time
# Get window size
old_win_w, old_win_h = self.win_w, self.win_h
@@ -102,16 +111,16 @@ class PixDisplay:
glutPostRedisplay()
glutTimerFunc(self.frame_time, self.timer, 0) # Schedule next frame
- def skip(self, increment):
+ def seek(self, increment):
self.auto_transition = False
self.increment_texture_index(increment)
self.image_time = self.image_duration
def handle_special_key(self, key, x, y):
if key == GLUT_KEY_LEFT:
- self.skip(-1)
+ self.seek(-1)
elif key == GLUT_KEY_RIGHT:
- self.skip(1)
+ self.seek(1)
def handle_visibility_change(self, state):
if state == GLUT_VISIBLE: