Apply deferred renderlayer observer changes all at once (1x deferred) and use maya.utils.executeDeferred

This commit is contained in:
Roy Nieterau 2023-06-30 22:53:21 +02:00
parent 4771e0f66c
commit 0b6f9dc8f2

View file

@ -563,21 +563,20 @@ def on_save():
lib.set_id(node, new_id, overwrite=False) lib.set_id(node, new_id, overwrite=False)
def _update_render_layer_observers():
# Helper to trigger update for all renderlayer observer logic
lib.remove_render_layer_observer()
lib.add_render_layer_observer()
lib.add_render_layer_change_observer()
def on_open(): def on_open():
"""On scene open let's assume the containers have changed.""" """On scene open let's assume the containers have changed."""
from qtpy import QtWidgets from qtpy import QtWidgets
from openpype.widgets import popup from openpype.widgets import popup
cmds.evalDeferred( utils.executeDeferred(_update_render_layer_observers)
"from openpype.hosts.maya.api import lib;"
"lib.remove_render_layer_observer()")
cmds.evalDeferred(
"from openpype.hosts.maya.api import lib;"
"lib.add_render_layer_observer()")
cmds.evalDeferred(
"from openpype.hosts.maya.api import lib;"
"lib.add_render_layer_change_observer()")
# # Update current task for the current scene # # Update current task for the current scene
# update_task_from_path(cmds.file(query=True, sceneName=True)) # update_task_from_path(cmds.file(query=True, sceneName=True))
@ -618,16 +617,9 @@ def on_new():
"""Set project resolution and fps when create a new file""" """Set project resolution and fps when create a new file"""
log.info("Running callback on new..") log.info("Running callback on new..")
with lib.suspended_refresh(): with lib.suspended_refresh():
cmds.evalDeferred(
"from openpype.hosts.maya.api import lib;"
"lib.remove_render_layer_observer()")
cmds.evalDeferred(
"from openpype.hosts.maya.api import lib;"
"lib.add_render_layer_observer()")
cmds.evalDeferred(
"from openpype.hosts.maya.api import lib;"
"lib.add_render_layer_change_observer()")
lib.set_context_settings() lib.set_context_settings()
utils.executeDeferred(_update_render_layer_observers)
_remove_workfile_lock() _remove_workfile_lock()