blob: d347ed461b3100d79cd0b64ab9e89f72291d6f9a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
import bpy
from bpy.app.handlers import persistent
import queue
from blenderkit import utils
@persistent
def scene_load(context):
if not (bpy.app.timers.is_registered(queue_worker)):
bpy.app.timers.register(queue_worker)
def get_queue():
# we pick just a random one of blender types, to try to get a persistent queue
t = bpy.types.Scene
if not hasattr(t, 'task_queue'):
t.task_queue = queue.Queue()
return t.task_queue
def add_task(task):
q = get_queue()
q.put(task)
def queue_worker():
q = get_queue()
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)
return 2.0
def register():
bpy.app.handlers.load_post.append(scene_load)
def unregister():
bpy.app.handlers.load_post.remove(scene_load)
|