From f1ca307bc2a7c801e237e298a073c94ecf04daab Mon Sep 17 00:00:00 2001 From: Flamefire Date: Mon, 13 May 2013 19:02:58 +0200 Subject: [PATCH] Used Queue instead of list for the queue --- Vocaluxe/Lib/Draw/CDirect3D.cs | 15 ++++++++------- Vocaluxe/Lib/Draw/COpenGL.cs | 21 +++++++++------------ 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/Vocaluxe/Lib/Draw/CDirect3D.cs b/Vocaluxe/Lib/Draw/CDirect3D.cs index 83df21fc..b595511f 100644 --- a/Vocaluxe/Lib/Draw/CDirect3D.cs +++ b/Vocaluxe/Lib/Draw/CDirect3D.cs @@ -39,6 +39,8 @@ namespace Vocaluxe.Lib.Draw class CDirect3D : RenderForm, IDraw { #region private vars + private const int _MaxID = 100000; + private readonly CKeys _Keys; private readonly CMouse _Mouse; private bool _Run; @@ -52,8 +54,8 @@ namespace Vocaluxe.Lib.Draw private Size _SizeBeforeMinimize; private readonly Dictionary _D3DTextures = new Dictionary(); - private readonly List _Queue = new List(); - private readonly Queue _IDs = new Queue(); + private readonly Queue _TexturesToLoad = new Queue(); + private readonly Queue _IDs = new Queue(_MaxID); private readonly Object _MutexTexture = new Object(); @@ -82,7 +84,7 @@ namespace Vocaluxe.Lib.Draw Icon = new Icon(Path.Combine(Environment.CurrentDirectory, CSettings.Icon)); //Fill Queue with 100000 IDs - for (int i = 0; i < 100000; i++) + for (int i = 0; i < _MaxID; i++) _IDs.Enqueue(i); _Keys = new CKeys(); @@ -938,7 +940,7 @@ namespace Vocaluxe.Lib.Draw texture.ID = _IDs.Dequeue(); _D3DTextures.Add(texture.ID, null); STextureQueue queue = new STextureQueue(texture.ID, texture.W2, texture.H2, w, h, data); - _Queue.Add(queue); + _TexturesToLoad.Enqueue(queue); } return texture; } @@ -1269,10 +1271,9 @@ namespace Vocaluxe.Lib.Draw { lock (_MutexTexture) { - while (_Queue.Count > 0) + while (_TexturesToLoad.Count > 0) { - STextureQueue q = _Queue[0]; - _Queue.RemoveAt(0); + STextureQueue q = _TexturesToLoad.Dequeue(); Texture t; if (_D3DTextures.TryGetValue(q.ID, out t) && t != null) continue; diff --git a/Vocaluxe/Lib/Draw/COpenGL.cs b/Vocaluxe/Lib/Draw/COpenGL.cs index c46c5f27..92ce0a0a 100644 --- a/Vocaluxe/Lib/Draw/COpenGL.cs +++ b/Vocaluxe/Lib/Draw/COpenGL.cs @@ -86,6 +86,8 @@ namespace Vocaluxe.Lib.Draw class COpenGL : Form, IDraw { #region private vars + private const int _MaxID = 100000; + private readonly CKeys _Keys; private readonly CMouse _Mouse; private bool _Run; @@ -95,9 +97,9 @@ namespace Vocaluxe.Lib.Draw private SClientRect _Restore; private bool _Fullscreen; - private readonly Dictionary _Textures; - private readonly Queue _IDs; - private readonly List _Queue; + private readonly Dictionary _Textures = new Dictionary(); + private readonly Queue _IDs = new Queue(_MaxID); + private readonly Queue _TexturesToLoad = new Queue(); private readonly Object _MutexTexture = new Object(); @@ -113,11 +115,7 @@ namespace Vocaluxe.Lib.Draw { Icon = new Icon(Path.Combine(Environment.CurrentDirectory, CSettings.Icon)); - _Textures = new Dictionary(); - _Queue = new List(); - _IDs = new Queue(1000000); - - for (int i = 1; i < 1000000; i++) + for (int i = 1; i < _MaxID; i++) _IDs.Enqueue(i); //Check AA Mode @@ -816,7 +814,7 @@ namespace Vocaluxe.Lib.Draw { texture.ID = _IDs.Dequeue(); STextureQueue queue = new STextureQueue(texture.ID, texture.W2, texture.H2, w, h, data); - _Queue.Add(queue); + _TexturesToLoad.Enqueue(queue); _Textures[texture.ID] = texture; } @@ -1171,10 +1169,9 @@ namespace Vocaluxe.Lib.Draw { lock (_MutexTexture) { - while (_Queue.Count > 0) + while (_TexturesToLoad.Count > 0) { - STextureQueue q = _Queue[0]; - _Queue.RemoveAt(0); + STextureQueue q = _TexturesToLoad.Dequeue(); CTexture texture; if (!_Textures.TryGetValue(q.ID, out texture)) continue;