Browse Source

Removed duplicated code

pull/3386/head
Nikita Tsukanov 6 years ago
parent
commit
d3cde7cc82
  1. 42
      src/Avalonia.Visuals/Rendering/ManagedDeferredRendererLock.cs

42
src/Avalonia.Visuals/Rendering/ManagedDeferredRendererLock.cs

@ -6,46 +6,6 @@ namespace Avalonia.Rendering
{
public class ManagedDeferredRendererLock : DisposableLock, IDeferredRendererLock
{
private readonly object _lock = new object();
/// <summary>
/// Tries to lock the target surface or window
/// </summary>
/// <returns>IDisposable if succeeded to obtain the lock</returns>
public IDisposable TryLock()
{
if (Monitor.TryEnter(_lock))
return new UnlockDisposable(_lock);
return null;
}
/// <summary>
/// Enters a waiting lock, only use from platform code, not from the renderer
/// </summary>
public IDisposable Lock()
{
Monitor.Enter(_lock);
return new UnlockDisposable(_lock);
}
private sealed class UnlockDisposable : IDisposable
{
private object _lock;
public UnlockDisposable(object @lock)
{
_lock = @lock;
}
public void Dispose()
{
object @lock = Interlocked.Exchange(ref _lock, null);
if (@lock != null)
{
Monitor.Exit(@lock);
}
}
}
}
}

Loading…
Cancel
Save