Used Queue instead of list for the queue
This commit is contained in:
1 parent
cdad90a93d
commit
f1ca307bc2
2 files changed
+17
-19
No files matched your search
@@ -39,6 +39,8 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
class CDirect3D : RenderForm, IDraw
|
class CDirect3D : RenderForm, IDraw
|
||||||
{
|
{
|
||||||
#region private vars
|
#region private vars
|
||||||
|
private const int _MaxID = 100000;
|
||||||
|
|
||||||
private readonly CKeys _Keys;
|
private readonly CKeys _Keys;
|
||||||
private readonly CMouse _Mouse;
|
private readonly CMouse _Mouse;
|
||||||
private bool _Run;
|
private bool _Run;
|
||||||
@@ -52,8 +54,8 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
private Size _SizeBeforeMinimize;
|
private Size _SizeBeforeMinimize;
|
||||||
|
|
||||||
private readonly Dictionary<int, Texture> _D3DTextures = new Dictionary<int, Texture>();
|
private readonly Dictionary<int, Texture> _D3DTextures = new Dictionary<int, Texture>();
|
||||||
private readonly List<STextureQueue> _Queue = new List<STextureQueue>();
|
private readonly Queue<STextureQueue> _TexturesToLoad = new Queue<STextureQueue>();
|
||||||
private readonly Queue<int> _IDs = new Queue<int>();
|
private readonly Queue<int> _IDs = new Queue<int>(_MaxID);
|
||||||
|
|
||||||
private readonly Object _MutexTexture = new Object();
|
private readonly Object _MutexTexture = new Object();
|
||||||
|
|
||||||
@@ -82,7 +84,7 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
Icon = new Icon(Path.Combine(Environment.CurrentDirectory, CSettings.Icon));
|
Icon = new Icon(Path.Combine(Environment.CurrentDirectory, CSettings.Icon));
|
||||||
|
|
||||||
//Fill Queue with 100000 IDs
|
//Fill Queue with 100000 IDs
|
||||||
for (int i = 0; i < 100000; i++)
|
for (int i = 0; i < _MaxID; i++)
|
||||||
_IDs.Enqueue(i);
|
_IDs.Enqueue(i);
|
||||||
|
|
||||||
_Keys = new CKeys();
|
_Keys = new CKeys();
|
||||||
@@ -938,7 +940,7 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
texture.ID = _IDs.Dequeue();
|
texture.ID = _IDs.Dequeue();
|
||||||
_D3DTextures.Add(texture.ID, null);
|
_D3DTextures.Add(texture.ID, null);
|
||||||
STextureQueue queue = new STextureQueue(texture.ID, texture.W2, texture.H2, w, h, data);
|
STextureQueue queue = new STextureQueue(texture.ID, texture.W2, texture.H2, w, h, data);
|
||||||
_Queue.Add(queue);
|
_TexturesToLoad.Enqueue(queue);
|
||||||
}
|
}
|
||||||
return texture;
|
return texture;
|
||||||
}
|
}
|
||||||
@@ -1269,10 +1271,9 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
{
|
{
|
||||||
lock (_MutexTexture)
|
lock (_MutexTexture)
|
||||||
{
|
{
|
||||||
while (_Queue.Count > 0)
|
while (_TexturesToLoad.Count > 0)
|
||||||
{
|
{
|
||||||
STextureQueue q = _Queue[0];
|
STextureQueue q = _TexturesToLoad.Dequeue();
|
||||||
_Queue.RemoveAt(0);
|
|
||||||
Texture t;
|
Texture t;
|
||||||
if (_D3DTextures.TryGetValue(q.ID, out t) && t != null)
|
if (_D3DTextures.TryGetValue(q.ID, out t) && t != null)
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -86,6 +86,8 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
class COpenGL : Form, IDraw
|
class COpenGL : Form, IDraw
|
||||||
{
|
{
|
||||||
#region private vars
|
#region private vars
|
||||||
|
private const int _MaxID = 100000;
|
||||||
|
|
||||||
private readonly CKeys _Keys;
|
private readonly CKeys _Keys;
|
||||||
private readonly CMouse _Mouse;
|
private readonly CMouse _Mouse;
|
||||||
private bool _Run;
|
private bool _Run;
|
||||||
@@ -95,9 +97,9 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
private SClientRect _Restore;
|
private SClientRect _Restore;
|
||||||
private bool _Fullscreen;
|
private bool _Fullscreen;
|
||||||
|
|
||||||
private readonly Dictionary<int, CTexture> _Textures;
|
private readonly Dictionary<int, CTexture> _Textures = new Dictionary<int, CTexture>();
|
||||||
private readonly Queue<int> _IDs;
|
private readonly Queue<int> _IDs = new Queue<int>(_MaxID);
|
||||||
private readonly List<STextureQueue> _Queue;
|
private readonly Queue<STextureQueue> _TexturesToLoad = new Queue<STextureQueue>();
|
||||||
|
|
||||||
private readonly Object _MutexTexture = new Object();
|
private readonly Object _MutexTexture = new Object();
|
||||||
|
|
||||||
@@ -113,11 +115,7 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
{
|
{
|
||||||
Icon = new Icon(Path.Combine(Environment.CurrentDirectory, CSettings.Icon));
|
Icon = new Icon(Path.Combine(Environment.CurrentDirectory, CSettings.Icon));
|
||||||
|
|
||||||
_Textures = new Dictionary<int, CTexture>();
|
for (int i = 1; i < _MaxID; i++)
|
||||||
_Queue = new List<STextureQueue>();
|
|
||||||
_IDs = new Queue<int>(1000000);
|
|
||||||
|
|
||||||
for (int i = 1; i < 1000000; i++)
|
|
||||||
_IDs.Enqueue(i);
|
_IDs.Enqueue(i);
|
||||||
|
|
||||||
//Check AA Mode
|
//Check AA Mode
|
||||||
@@ -816,7 +814,7 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
{
|
{
|
||||||
texture.ID = _IDs.Dequeue();
|
texture.ID = _IDs.Dequeue();
|
||||||
STextureQueue queue = new STextureQueue(texture.ID, texture.W2, texture.H2, w, h, data);
|
STextureQueue queue = new STextureQueue(texture.ID, texture.W2, texture.H2, w, h, data);
|
||||||
_Queue.Add(queue);
|
_TexturesToLoad.Enqueue(queue);
|
||||||
_Textures[texture.ID] = texture;
|
_Textures[texture.ID] = texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1171,10 +1169,9 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
{
|
{
|
||||||
lock (_MutexTexture)
|
lock (_MutexTexture)
|
||||||
{
|
{
|
||||||
while (_Queue.Count > 0)
|
while (_TexturesToLoad.Count > 0)
|
||||||
{
|
{
|
||||||
STextureQueue q = _Queue[0];
|
STextureQueue q = _TexturesToLoad.Dequeue();
|
||||||
_Queue.RemoveAt(0);
|
|
||||||
CTexture texture;
|
CTexture texture;
|
||||||
if (!_Textures.TryGetValue(q.ID, out texture))
|
if (!_Textures.TryGetValue(q.ID, out texture))
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
Reference in new issue
Block a user