fix: Python.exe sometimes dont shut down in task manager processes

fix: disconnect attempt when the session is not running

Related to slumber/multi-user#94
This commit is contained in:
Swann
2020-07-07 10:58:34 +02:00
parent e2cdd26b7c
commit 25f3e27b7f
3 changed files with 16 additions and 14 deletions

View File

@ -47,7 +47,8 @@ from . import environment, utils
DEPENDENCIES = { DEPENDENCIES = {
("zmq","zmq"), ("zmq","zmq"),
("jsondiff","jsondiff"), ("jsondiff","jsondiff"),
("deepdiff", "deepdiff") ("deepdiff", "deepdiff"),
("psutil","psutil")
} }

View File

@ -198,7 +198,7 @@ class SessionInitOperator(bpy.types.Operator):
@classmethod @classmethod
def poll(cls, context): def poll(cls, context):
return True return True
def draw(self, context): def draw(self, context):
layout = self.layout layout = self.layout
col = layout.column() col = layout.column()
@ -210,18 +210,18 @@ class SessionInitOperator(bpy.types.Operator):
def execute(self, context): def execute(self, context):
global client global client
if self.init_method == 'EMPTY': if self.init_method == 'EMPTY':
utils.clean_scene() utils.clean_scene()
for scene in bpy.data.scenes: for scene in bpy.data.scenes:
client.add(scene) client.add(scene)
client.init() client.init()
return {"FINISHED"} return {"FINISHED"}
class SessionStopOperator(bpy.types.Operator): class SessionStopOperator(bpy.types.Operator):
bl_idname = "session.stop" bl_idname = "session.stop"
bl_label = "close" bl_label = "close"
@ -234,12 +234,15 @@ class SessionStopOperator(bpy.types.Operator):
def execute(self, context): def execute(self, context):
global client, delayables, stop_modal_executor global client, delayables, stop_modal_executor
assert(client)
try: if client:
client.disconnect() try:
except Exception as e: client.disconnect()
self.report({'ERROR'}, repr(e)) except Exception as e:
self.report({'ERROR'}, repr(e))
else:
self.report({'WARNING'}, "No session to quit.")
return {"FINISHED"}
return {"FINISHED"} return {"FINISHED"}
@ -558,6 +561,7 @@ classes = (
) )
@persistent @persistent
def sanitize_deps_graph(dummy): def sanitize_deps_graph(dummy):
"""sanitize deps graph """sanitize deps graph
@ -594,7 +598,6 @@ def register():
for cls in classes: for cls in classes:
register_class(cls) register_class(cls)
bpy.app.handlers.undo_post.append(sanitize_deps_graph) bpy.app.handlers.undo_post.append(sanitize_deps_graph)
bpy.app.handlers.redo_post.append(sanitize_deps_graph) bpy.app.handlers.redo_post.append(sanitize_deps_graph)
@ -602,7 +605,6 @@ def register():
bpy.app.handlers.frame_change_pre.append(update_client_frame) bpy.app.handlers.frame_change_pre.append(update_client_frame)
def unregister(): def unregister():
global client global client
@ -617,7 +619,6 @@ def unregister():
bpy.app.handlers.undo_post.remove(sanitize_deps_graph) bpy.app.handlers.undo_post.remove(sanitize_deps_graph)
bpy.app.handlers.redo_post.remove(sanitize_deps_graph) bpy.app.handlers.redo_post.remove(sanitize_deps_graph)
bpy.app.handlers.load_pre.remove(load_pre_handler) bpy.app.handlers.load_pre.remove(load_pre_handler)
bpy.app.handlers.frame_change_pre.remove(update_client_frame) bpy.app.handlers.frame_change_pre.remove(update_client_frame)