default to webcam off
This commit is contained in:
@ -21,7 +21,7 @@ class HiddenField {
|
|||||||
return dynamic_cast<T>(ptr);
|
return dynamic_cast<T>(ptr);
|
||||||
}
|
}
|
||||||
template<typename T>
|
template<typename T>
|
||||||
T AllocField()
|
T* AllocField()
|
||||||
{
|
{
|
||||||
auto v = new T();
|
auto v = new T();
|
||||||
SetField(v);
|
SetField(v);
|
||||||
|
|||||||
@ -11,7 +11,7 @@
|
|||||||
namespace Tesses::Framework::Threading
|
namespace Tesses::Framework::Threading
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#if defined(TESSESFRAMEWORK_ENABLE_THREADING)
|
||||||
class MutexHiddenFieldData : public HiddenFieldData
|
class MutexHiddenFieldData : public HiddenFieldData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -35,10 +35,11 @@ namespace Tesses::Framework::Threading
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
Mutex::Mutex()
|
Mutex::Mutex()
|
||||||
{
|
{
|
||||||
auto md=this->data.AllocField<MutexHiddenFieldData*>();
|
#if defined(TESSESFRAMEWORK_ENABLE_THREADING)
|
||||||
|
auto md=this->data.AllocField<MutexHiddenFieldData>();
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
md->mtx = CreateMutex(NULL,false,NULL);
|
md->mtx = CreateMutex(NULL,false,NULL);
|
||||||
#elif defined(GEKKO)
|
#elif defined(GEKKO)
|
||||||
@ -50,9 +51,11 @@ namespace Tesses::Framework::Threading
|
|||||||
pthread_mutex_init(&md->mtx,&md->attr);
|
pthread_mutex_init(&md->mtx,&md->attr);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
void Mutex::Lock()
|
void Mutex::Lock()
|
||||||
{
|
{
|
||||||
|
#if defined(TESSESFRAMEWORK_ENABLE_THREADING)
|
||||||
auto md = this->data.GetField<MutexHiddenFieldData*>();
|
auto md = this->data.GetField<MutexHiddenFieldData*>();
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
WaitForSingleObject(md->mtx, INFINITE);
|
WaitForSingleObject(md->mtx, INFINITE);
|
||||||
@ -61,9 +64,11 @@ namespace Tesses::Framework::Threading
|
|||||||
#else
|
#else
|
||||||
pthread_mutex_lock(&md->mtx);
|
pthread_mutex_lock(&md->mtx);
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
void Mutex::Unlock()
|
void Mutex::Unlock()
|
||||||
{
|
{
|
||||||
|
#if defined(TESSESFRAMEWORK_ENABLE_THREADING)
|
||||||
auto md = this->data.GetField<MutexHiddenFieldData*>();
|
auto md = this->data.GetField<MutexHiddenFieldData*>();
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
ReleaseMutex(md->mtx);
|
ReleaseMutex(md->mtx);
|
||||||
@ -72,9 +77,11 @@ namespace Tesses::Framework::Threading
|
|||||||
#else
|
#else
|
||||||
pthread_mutex_unlock(&md->mtx);
|
pthread_mutex_unlock(&md->mtx);
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
bool Mutex::TryLock()
|
bool Mutex::TryLock()
|
||||||
{
|
{
|
||||||
|
#if defined(TESSESFRAMEWORK_ENABLE_THREADING)
|
||||||
auto md = this->data.GetField<MutexHiddenFieldData*>();
|
auto md = this->data.GetField<MutexHiddenFieldData*>();
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
return WaitForSingleObject(md->mtx, 100) == WAIT_OBJECT_0;
|
return WaitForSingleObject(md->mtx, 100) == WAIT_OBJECT_0;
|
||||||
@ -83,6 +90,7 @@ namespace Tesses::Framework::Threading
|
|||||||
#else
|
#else
|
||||||
return pthread_mutex_trylock(&md->mtx) == 0;
|
return pthread_mutex_trylock(&md->mtx) == 0;
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
Mutex::~Mutex()
|
Mutex::~Mutex()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -81,7 +81,7 @@ namespace Tesses::Framework::Threading
|
|||||||
void Thread::Join()
|
void Thread::Join()
|
||||||
{
|
{
|
||||||
#if defined(TESSESFRAMEWORK_ENABLE_THREADING)
|
#if defined(TESSESFRAMEWORK_ENABLE_THREADING)
|
||||||
auto data = this->data.AllocField<ThreadHiddenFieldData*>();
|
auto data = this->data.AllocField<ThreadHiddenFieldData>();
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
WaitForSingleObject(data->thrd, INFINITE);
|
WaitForSingleObject(data->thrd, INFINITE);
|
||||||
#elif defined(GEKKO)
|
#elif defined(GEKKO)
|
||||||
|
|||||||
Reference in New Issue
Block a user