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);