def _set_handlers(cls, connect: bool): try: if connect: bpy.app.handlers.frame_change_post.append( handler_send_frame_changed) bpy.app.handlers.depsgraph_update_post.append( handler_send_scene_data_to_server) bpy.app.handlers.undo_pre.append(handler_on_undo_redo_pre) bpy.app.handlers.redo_pre.append(handler_on_undo_redo_pre) bpy.app.handlers.undo_post.append(handler_on_undo_redo_post) bpy.app.handlers.redo_post.append(handler_on_undo_redo_post) bpy.app.handlers.load_post.append(handler_on_load) else: bpy.app.handlers.load_post.remove(handler_on_load) bpy.app.handlers.frame_change_post.remove( handler_send_frame_changed) bpy.app.handlers.depsgraph_update_post.remove( handler_send_scene_data_to_server) bpy.app.handlers.undo_pre.remove(handler_on_undo_redo_pre) bpy.app.handlers.redo_pre.remove(handler_on_undo_redo_pre) bpy.app.handlers.undo_post.remove(handler_on_undo_redo_post) bpy.app.handlers.redo_post.remove(handler_on_undo_redo_post) remove_draw_handlers() except Exception as e: logger.error("Exception during set_handlers(%s) : %s", connect, e)
def disconnect(): from mixer.bl_panels import update_ui_lists logger.info("disconnect") leave_current_room() remove_draw_handlers() if bpy.app.timers.is_registered(network_consumer_timer): bpy.app.timers.unregister(network_consumer_timer) # the socket has already been disconnected if share_data.client is not None: if share_data.client.is_connected(): share_data.client.disconnect() share_data.client = None update_ui_lists()