[Bf-extensions-cvs] [da478ff2] master: BlenderKit: update task_queue with possibility of delayed tasks.
Vilém Duha
noreply at git.blender.org
Tue Jan 7 11:43:57 CET 2020
Commit: da478ff254d2962b92e355451ae0955013c0232a
Author: Vilém Duha
Date: Sat Jan 4 18:33:44 2020 +0100
Branches: master
https://developer.blender.org/rBAda478ff254d2962b92e355451ae0955013c0232a
BlenderKit: update task_queue with possibility of delayed tasks.
===================================================================
M blenderkit/tasks_queue.py
===================================================================
diff --git a/blenderkit/tasks_queue.py b/blenderkit/tasks_queue.py
index eaa3bfa4..3bf20181 100644
--- a/blenderkit/tasks_queue.py
+++ b/blenderkit/tasks_queue.py
@@ -28,8 +28,6 @@ from bpy.app.handlers import persistent
import queue
-
-
@persistent
def scene_load(context):
if not (bpy.app.timers.is_registered(queue_worker)):
@@ -44,24 +42,41 @@ def get_queue():
t.task_queue = queue.Queue()
return t.task_queue
+class task_object:
+ def __init__(self, command = '', arguments = (), wait = 0):
+ self.command = command
+ self.arguments = arguments
+ self.wait = wait
+
-def add_task(task):
+def add_task(task, wait = 0):
q = get_queue()
- q.put(task)
+ taskob = task_object(task[0],task[1], wait = wait)
+ q.put(taskob)
def queue_worker():
+ time_step = 2.0
q = get_queue()
+
+ back_to_queue = [] #delayed events
while not q.empty():
- utils.p('as a task: ')
# print('window manager', bpy.context.window_manager)
task = q.get()
- utils.p(task)
- try:
- task[0](*task[1])
- except Exception as e:
- utils.p('task failed:')
- print(e)
+
+ if task.wait>0:
+ task.wait-=time_step
+ back_to_queue.append(task)
+ else:
+ utils.p('as a task: ')
+ utils.p(task.command, task.arguments)
+ try:
+ task.command(*task.arguments)
+ except Exception as e:
+ utils.p('task failed:')
+ print(e)
+ for task in back_to_queue:
+ q.put(task)
return 2.0
More information about the Bf-extensions-cvs
mailing list