summaryrefslogtreecommitdiff
path: root/Plugins/utils/ContactAsyncQueue.cpp
diff options
context:
space:
mode:
authorpescuma <pescuma@c086bb3d-8645-0410-b8da-73a8550f86e7>2008-05-20 23:53:15 +0000
committerpescuma <pescuma@c086bb3d-8645-0410-b8da-73a8550f86e7>2008-05-20 23:53:15 +0000
commit9c700c5876acb50bbaf910049f6a9535bb6327f4 (patch)
tree69e5e8df88b4356a5413bd60d9735c1105327b7b /Plugins/utils/ContactAsyncQueue.cpp
parent043247600e4f3363887003433baffc36d832478a (diff)
Added some new methods to Buffer and ContactAsyncQueue
git-svn-id: http://pescuma.googlecode.com/svn/trunk/Miranda@107 c086bb3d-8645-0410-b8da-73a8550f86e7
Diffstat (limited to 'Plugins/utils/ContactAsyncQueue.cpp')
-rw-r--r--Plugins/utils/ContactAsyncQueue.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/Plugins/utils/ContactAsyncQueue.cpp b/Plugins/utils/ContactAsyncQueue.cpp
index 7be4cfe..ca6bf83 100644
--- a/Plugins/utils/ContactAsyncQueue.cpp
+++ b/Plugins/utils/ContactAsyncQueue.cpp
@@ -48,12 +48,11 @@ ContactAsyncQueue::ContactAsyncQueue(pfContactAsyncQueueCallback fContactAsyncQu
ContactAsyncQueue::~ContactAsyncQueue()
{
- if (finished == 0)
- finished = 1;
- SetEvent(hEvent);
+ Finish();
+
int count = 0;
while(finished != 2 && ++count < 50)
- Sleep(10);
+ Sleep(30);
for (int i = 0; i < queue.getCount(); i++)
if (queue[i] != NULL)
@@ -62,6 +61,13 @@ ContactAsyncQueue::~ContactAsyncQueue()
DeleteCriticalSection(&cs);
}
+void ContactAsyncQueue::Finish()
+{
+ if (finished == 0)
+ finished = 1;
+ SetEvent(hEvent);
+}
+
void ContactAsyncQueue::Lock()
{
EnterCriticalSection(&cs);
@@ -170,6 +176,9 @@ void ContactAsyncQueue::Thread()
{
ResetEvent(hEvent);
+ if (finished)
+ break;
+
Lock();
if (queue.getCount() <= 0)