default to webcam off

This commit is contained in:
2025-02-27 04:24:01 -06:00
parent 810d5f580d
commit 3edb909866
3 changed files with 13 additions and 5 deletions

View File

@ -21,7 +21,7 @@ class HiddenField {
return dynamic_cast<T>(ptr);
}
template<typename T>
T AllocField()
T* AllocField()
{
auto v = new T();
SetField(v);

View File

@ -11,7 +11,7 @@
namespace Tesses::Framework::Threading
{
#if defined(TESSESFRAMEWORK_ENABLE_THREADING)
class MutexHiddenFieldData : public HiddenFieldData
{
public:
@ -35,10 +35,11 @@ namespace Tesses::Framework::Threading
#endif
}
};
#endif
Mutex::Mutex()
{
auto md=this->data.AllocField<MutexHiddenFieldData*>();
#if defined(TESSESFRAMEWORK_ENABLE_THREADING)
auto md=this->data.AllocField<MutexHiddenFieldData>();
#if defined(_WIN32)
md->mtx = CreateMutex(NULL,false,NULL);
#elif defined(GEKKO)
@ -50,9 +51,11 @@ namespace Tesses::Framework::Threading
pthread_mutex_init(&md->mtx,&md->attr);
#endif
#endif
}
void Mutex::Lock()
{
#if defined(TESSESFRAMEWORK_ENABLE_THREADING)
auto md = this->data.GetField<MutexHiddenFieldData*>();
#if defined(_WIN32)
WaitForSingleObject(md->mtx, INFINITE);
@ -61,9 +64,11 @@ namespace Tesses::Framework::Threading
#else
pthread_mutex_lock(&md->mtx);
#endif
#endif
}
void Mutex::Unlock()
{
#if defined(TESSESFRAMEWORK_ENABLE_THREADING)
auto md = this->data.GetField<MutexHiddenFieldData*>();
#if defined(_WIN32)
ReleaseMutex(md->mtx);
@ -72,9 +77,11 @@ namespace Tesses::Framework::Threading
#else
pthread_mutex_unlock(&md->mtx);
#endif
#endif
}
bool Mutex::TryLock()
{
#if defined(TESSESFRAMEWORK_ENABLE_THREADING)
auto md = this->data.GetField<MutexHiddenFieldData*>();
#if defined(_WIN32)
return WaitForSingleObject(md->mtx, 100) == WAIT_OBJECT_0;
@ -83,6 +90,7 @@ namespace Tesses::Framework::Threading
#else
return pthread_mutex_trylock(&md->mtx) == 0;
#endif
#endif
}
Mutex::~Mutex()
{

View File

@ -81,7 +81,7 @@ namespace Tesses::Framework::Threading
void Thread::Join()
{
#if defined(TESSESFRAMEWORK_ENABLE_THREADING)
auto data = this->data.AllocField<ThreadHiddenFieldData*>();
auto data = this->data.AllocField<ThreadHiddenFieldData>();
#if defined(_WIN32)
WaitForSingleObject(data->thrd, INFINITE);
#elif defined(GEKKO)