diff --git a/Qwilight/Assets/UI/@Default/@Default.zip b/Qwilight/Assets/UI/@Default/@Default.zip index 559383e..3203014 100644 --- a/Qwilight/Assets/UI/@Default/@Default.zip +++ b/Qwilight/Assets/UI/@Default/@Default.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bbcf64c9bf0b94372c1a201b2c75426a8bfc3940790bf2fa724ffffd5f4540d0 -size 56624085 +oid sha256:b6a1511a0ac81e00fc862ea6e1a67d71b73724c5ce134e5b81d3eaa258726388 +size 76149924 diff --git a/Qwilight/System/DrawingSystem/DrawingContainer.cs b/Qwilight/System/DrawingSystem/DrawingContainer.cs new file mode 100644 index 0000000..fc7273d --- /dev/null +++ b/Qwilight/System/DrawingSystem/DrawingContainer.cs @@ -0,0 +1,6 @@ +namespace Qwilight +{ + public sealed class DrawingContainer : IDrawingContainer + { + } +} \ No newline at end of file diff --git a/Qwilight/System/DrawingSystem/DrawingSystem.cs b/Qwilight/System/DrawingSystem/DrawingSystem.cs index 3ec03ec..43ceb95 100644 --- a/Qwilight/System/DrawingSystem/DrawingSystem.cs +++ b/Qwilight/System/DrawingSystem/DrawingSystem.cs @@ -73,10 +73,12 @@ static readonly string FaultEntryPath = Path.Combine(QwilightComponent.FaultEntryPath, nameof(DrawingSystem)); + readonly DrawingContainer _defaultDrawingContainer = new(); + readonly DrawingContainer _veilDrawingContainer = new(); /// /// Direct2D™ 싱글 스레드 제어용 락 /// - readonly object d2D1CSX = new(); + readonly object _d2D1CSX = new(); readonly ConcurrentDictionary> _drawingMap = new(); readonly ConcurrentDictionary> _defaultDrawingMap = new(); readonly ConcurrentDictionary> _toCloseValues = new(); @@ -258,6 +260,7 @@ public void LoadDefaultDrawing() { + Close(_defaultDrawingContainer); try { var filePath = Configure.Instance.DefaultDrawingFilePath; @@ -265,8 +268,8 @@ { DefaultDrawing = new() { - Drawing = Load(filePath, null), - DefaultDrawing = LoadDefault(filePath, null) + Drawing = Load(filePath, _defaultDrawingContainer), + DefaultDrawing = LoadDefault(filePath, _defaultDrawingContainer) }; } else @@ -283,6 +286,7 @@ public void LoadVeilDrawing() { + Close(_veilDrawingContainer); try { var filePath = Configure.Instance.VeilDrawingFilePath; @@ -290,8 +294,8 @@ { VeilDrawing = new() { - Drawing = Load(filePath, null), - DefaultDrawing = LoadDefault(filePath, null) + Drawing = Load(filePath, _veilDrawingContainer), + DefaultDrawing = LoadDefault(filePath, _veilDrawingContainer) }; } else @@ -402,7 +406,7 @@ switch (mode) { case MainViewModel.Mode.NoteFile: - lock (d2D1CSX) + lock (_d2D1CSX) { using (targetSession = _rawTargetSystem.CreateDrawingSession(Colors.Black)) { @@ -420,7 +424,7 @@ case MainViewModel.Mode.Computing: defaultComputer = mainViewModel.Computer; modeComponentValue = defaultComputer.ModeComponentValue; - lock (d2D1CSX) + lock (_d2D1CSX) { using (targetSession = _targetSystem.CreateDrawingSession()) { @@ -2321,7 +2325,7 @@ defaultComputer = mainViewModel.Computer; modeComponentValue = defaultComputer.ModeComponentValue; var handlingComputer = mainViewModel.GetHandlingComputer(); - lock (d2D1CSX) + lock (_d2D1CSX) { using (targetSession = _targetSystem.CreateDrawingSession()) { @@ -3014,7 +3018,7 @@ var dataCount = Configure.Instance.DataCount; if (_rawTargetSystem == null) { - lock (d2D1CSX) + lock (_d2D1CSX) { _targetSystem?.Dispose(); _targetSystem = new(CanvasDevice.GetSharedDevice(), defaultLength, defaultHeight, targetWindowDPI, DirectXPixelFormat.B8G8R8A8UIntNormalized, CanvasAlphaMode.Ignore); @@ -3031,7 +3035,7 @@ } else if (_rawTargetSystem.Size.Width != defaultLength || _rawTargetSystem.Size.Height != defaultHeight || _drawingQuality != drawingQuality || _rawTargetSystem.BufferCount != dataCount) { - lock (d2D1CSX) + lock (_d2D1CSX) { _targetSystem?.Dispose(); _targetSystem = new(CanvasDevice.GetSharedDevice(), defaultLength, defaultHeight, targetWindowDPI, DirectXPixelFormat.B8G8R8A8UIntNormalized, CanvasAlphaMode.Ignore);