From b00a62450fe649025a8156ec9107c169001ed3d4 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Wed, 10 Mar 2021 12:34:02 +0100 Subject: [PATCH] replaced `override_event` function with specific function replacement in maya implementation --- pype/hosts/maya/__init__.py | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/pype/hosts/maya/__init__.py b/pype/hosts/maya/__init__.py index afd2e399eb4..6eeed8cef01 100644 --- a/pype/hosts/maya/__init__.py +++ b/pype/hosts/maya/__init__.py @@ -45,7 +45,7 @@ def install(): avalon.before("save", on_before_save) log.info("Overriding existing event 'taskChanged'") - override_event("taskChanged", on_task_changed) + override_task_change_event() log.info("Setting default family states for loader..") avalon.data["familiesStateToggled"] = ["imagesequence"] @@ -59,22 +59,19 @@ def uninstall(): menu.uninstall() -def override_event(event, callback): - """ - Override existing event callback - Args: - event (str): name of the event - callback (function): callback to be triggered - - Returns: - None - - """ +def override_task_change_event(): + """Override taskChanged event callback in avalon's maya implementation.""" - ref = weakref.WeakSet() - ref.add(callback) + event_name = "taskChanged" + callbacks = pipeline._registered_event_handlers.get(event_name) + if callbacks: + # Remove callback from `avalon.maya.pipeline` + from avalon.maya.pipeline import _on_task_changed - pipeline._registered_event_handlers[event] = ref + if _on_task_changed in callbacks: + callbacks.remove(_on_task_changed) + # Register pype's callback + avalon.on(event_name, on_task_changed) def on_init(_):