Files
open-wc/reference/blender-wow-studio-3.4-1.1.0_Experimental/io_scene_wmo/ui/locks.py
T

45 lines
997 B
Python

from ..utils.misc import singleton
class _BaseLock:
_update_lock: int
def __enter__(self):
self._update_lock += 1
def __exit__(self, exc_type, exc_val, exc_tb):
self._update_lock -= 1
def push(self):
""" Manually enter the locking scope. """
self._update_lock += 1
def pop(self):
""" Manually exit the locking scope. """
self._update_lock -= 1
@property
def status(self) -> bool:
"""
Test if depsgraph handlers are locked now.
:return: True if locked, else False.
"""
return bool(self._update_lock)
@singleton
class DepsgraphLock(_BaseLock):
"""
Locks all depsgraph handler operations. Ensures no automated UI takss are handled in enclosed code.
"""
_update_lock: int = 0
@singleton
class UIPropUpdateLock(_BaseLock):
"""
Locks all update() callback in bpy.props custom defined properties that support locking.
"""
_update_lock: int = 0