diff options
Diffstat (limited to 'blenderkit/tasks_queue.py')
-rw-r--r-- | blenderkit/tasks_queue.py | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/blenderkit/tasks_queue.py b/blenderkit/tasks_queue.py index 08ac90bf..55029753 100644 --- a/blenderkit/tasks_queue.py +++ b/blenderkit/tasks_queue.py @@ -2,19 +2,37 @@ import bpy import queue -import blenderkit +from blenderkit import utils + +def get_queue(): + if not hasattr(bpy.types.VIEW3D_PT_blenderkit_unified, 'task_queue'): + bpy.types.VIEW3D_PT_blenderkit_unified.task_queue = queue.Queue() + return bpy.types.VIEW3D_PT_blenderkit_unified.task_queue + + +def add_task(task): + q = get_queue() + q.put(task) -tasks_queue = queue.Queue() def every_2_seconds(): - while not tasks_queue.empty(): - print('as a task: ') - fstring = tasks_queue.get() - eval(fstring) + q = get_queue() + + while not q.empty(): + utils.p('as a task: ') + q = bpy.types.VIEW3D_PT_blenderkit_unified.task_queue + task = q.get() + try: + task[0](*task[1]) + except Exception as e: + utils.p('task failed:') + print(e) return 2.0 + def register(): bpy.app.timers.register(every_2_seconds) + def unregister(): - bpy.app.timers.unregister(every_2_seconds)
\ No newline at end of file + bpy.app.timers.unregister(every_2_seconds) |