feat: use callbacks instead of timers to cleanup session states
refactor: move graph initialization to operators,py
This commit is contained in:
@ -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'),
|
||||
}
|
||||
|
||||
|
@ -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()
|
@ -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()
|
||||
|
||||
|
Reference in New Issue
Block a user