feat: use callbacks instead of timers to cleanup session states

refactor: move graph initialization to operators,py
This commit is contained in:
Swann
2020-07-17 16:33:39 +02:00
parent 6201c82392
commit 7ee9089087
3 changed files with 38 additions and 27 deletions

View File

@ -45,7 +45,7 @@ from . import environment, utils
# TODO: remove dependency as soon as replication will be installed as a module
DEPENDENCIES = {
("replication", '0.0.17'),
("replication", '0.0.18'),
("deepdiff", '5.0.1'),
}

View File

@ -314,15 +314,11 @@ class ClientUpdate(Timer):
new_key = ui_users.add()
new_key.name = user
new_key.username = user
elif session.state['STATE'] == STATE_QUITTING:
presence.refresh_sidebar_view()
self.handle_quit = True
elif session.state['STATE'] == STATE_INITIAL and self.handle_quit:
self.handle_quit = False
presence.refresh_sidebar_view()
operators.unregister_delayables()
presence.renderer.stop()
class SessionStatusUpdate(Timer):
def __init__(self, timout=.1):
super().__init__(timout)
presence.refresh_sidebar_view()
def execute(self):
presence.refresh_sidebar_view()

View File

@ -46,17 +46,6 @@ delayables = []
stop_modal_executor = False
def unregister_delayables():
global delayables, stop_modal_executor
for d in delayables:
try:
d.unregister()
except:
continue
stop_modal_executor = True
# OPERATORS
@ -161,13 +150,39 @@ class SessionStartOperator(bpy.types.Operator):
delayables.append(delayable.DrawClient())
delayables.append(delayable.DynamicRightSelectTimer())
# Launch drawing module
if runtime_settings.enable_presence:
presence.renderer.run()
session_update = delayable.SessionStatusUpdate()
session_update.register()
# Register blender main thread tools
for d in delayables:
d.register()
delayables.append(session_update)
@client.register('on_connection')
def initialize_session():
for node in client._graph.list_ordered():
node_ref = client.get(node)
if node_ref.state == FETCHED:
node_ref.resolve()
node_ref.apply()
# Launch drawing module
if runtime_settings.enable_presence:
presence.renderer.run()
# Register blender main thread tools
for d in delayables:
d.register()
@client.register('on_exit')
def desinitialize_session():
global delayables, stop_modal_executor
for d in delayables:
try:
d.unregister()
except:
continue
stop_modal_executor = True
presence.renderer.stop()
bpy.ops.session.apply_armature_operator()