mirror of
https://github.com/aaru-dps/Aaru.Compression.Native.git
synced 2025-12-16 19:24:31 +00:00
Move placement of lzma.
This commit is contained in:
47
3rdparty/lzma/CPP/7zip/Common/VirtThread.cpp
vendored
Normal file
47
3rdparty/lzma/CPP/7zip/Common/VirtThread.cpp
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
// VirtThread.cpp
|
||||
|
||||
#include "StdAfx.h"
|
||||
|
||||
#include "VirtThread.h"
|
||||
|
||||
static THREAD_FUNC_DECL CoderThread(void *p)
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
CVirtThread *t = (CVirtThread *)p;
|
||||
t->StartEvent.Lock();
|
||||
if (t->Exit)
|
||||
return 0;
|
||||
t->Execute();
|
||||
t->FinishedEvent.Set();
|
||||
}
|
||||
}
|
||||
|
||||
WRes CVirtThread::Create()
|
||||
{
|
||||
RINOK_WRes(StartEvent.CreateIfNotCreated_Reset());
|
||||
RINOK_WRes(FinishedEvent.CreateIfNotCreated_Reset());
|
||||
// StartEvent.Reset();
|
||||
// FinishedEvent.Reset();
|
||||
Exit = false;
|
||||
if (Thread.IsCreated())
|
||||
return S_OK;
|
||||
return Thread.Create(CoderThread, this);
|
||||
}
|
||||
|
||||
WRes CVirtThread::Start()
|
||||
{
|
||||
Exit = false;
|
||||
return StartEvent.Set();
|
||||
}
|
||||
|
||||
void CVirtThread::WaitThreadFinish()
|
||||
{
|
||||
Exit = true;
|
||||
if (StartEvent.IsCreated())
|
||||
StartEvent.Set();
|
||||
if (Thread.IsCreated())
|
||||
{
|
||||
Thread.Wait_Close();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user