diff options
Diffstat (limited to 'core/bind')
-rw-r--r-- | core/bind/core_bind.cpp | 24 | ||||
-rw-r--r-- | core/bind/core_bind.h | 10 |
2 files changed, 14 insertions, 20 deletions
diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp index b798d732d6..0d8b75bb63 100644 --- a/core/bind/core_bind.cpp +++ b/core/bind/core_bind.cpp @@ -2576,30 +2576,26 @@ void _Marshalls::_bind_methods() { //////////////// -Error _Semaphore::wait() { +void _Semaphore::wait() { - return semaphore->wait(); + semaphore.wait(); } -Error _Semaphore::post() { +Error _Semaphore::try_wait() { - return semaphore->post(); + return semaphore.try_wait() ? OK : ERR_BUSY; } -void _Semaphore::_bind_methods() { +void _Semaphore::post() { - ClassDB::bind_method(D_METHOD("wait"), &_Semaphore::wait); - ClassDB::bind_method(D_METHOD("post"), &_Semaphore::post); + semaphore.post(); } -_Semaphore::_Semaphore() { - - semaphore = SemaphoreOld::create(); -} - -_Semaphore::~_Semaphore() { +void _Semaphore::_bind_methods() { - memdelete(semaphore); + ClassDB::bind_method(D_METHOD("wait"), &_Semaphore::wait); + ClassDB::bind_method(D_METHOD("try_wait"), &_Semaphore::try_wait); + ClassDB::bind_method(D_METHOD("post"), &_Semaphore::post); } /////////////// diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h index ae7c3d02fd..3a5bd28ce8 100644 --- a/core/bind/core_bind.h +++ b/core/bind/core_bind.h @@ -635,16 +635,14 @@ public: class _Semaphore : public Reference { GDCLASS(_Semaphore, Reference); - SemaphoreOld *semaphore; + Semaphore semaphore; static void _bind_methods(); public: - Error wait(); - Error post(); - - _Semaphore(); - ~_Semaphore(); + void wait(); + Error try_wait(); + void post(); }; class _Thread : public Reference { |