public void UnlockDeviceAccess() { Contract.Requires(this._deviceAccessLockCount > 0); this._deviceAccessLockCount--; if (this._deviceAccessLockCount == 0) { // outermost recursive lock release, propagte unlock foreach (var it in this.Resources) { it.UnlockDeviceAccess(); } D3D9HardwarePixelBuffer.UnlockDeviceAccess(); #if AXIOM_THREAD_SUPPORT System.Threading.Monitor.Exit(_resourcesMutex); #endif } }