mirror of
https://github.com/Redot-Engine/redot-engine.git
synced 2025-12-06 07:17:42 -05:00
Modernize Thread
- Based on C++11's `thread` and `thread_local` - No more need to allocate-deallocate or check for null - No pointer anymore, just a member variable - Platform-specific implementations no longer needed (except for the few cases of non-portable functions) - Simpler for `NO_THREADS` - Thread ids are now the same across platforms (main is 1; others follow)
This commit is contained in:
@@ -153,7 +153,7 @@ Error AudioDriverALSA::init() {
|
||||
|
||||
Error err = init_device();
|
||||
if (err == OK) {
|
||||
thread = Thread::create(AudioDriverALSA::thread_func, this);
|
||||
thread.start(AudioDriverALSA::thread_func, this);
|
||||
}
|
||||
|
||||
return err;
|
||||
@@ -291,16 +291,10 @@ void AudioDriverALSA::set_device(String device) {
|
||||
}
|
||||
|
||||
void AudioDriverALSA::lock() {
|
||||
if (!thread) {
|
||||
return;
|
||||
}
|
||||
mutex.lock();
|
||||
}
|
||||
|
||||
void AudioDriverALSA::unlock() {
|
||||
if (!thread) {
|
||||
return;
|
||||
}
|
||||
mutex.unlock();
|
||||
}
|
||||
|
||||
@@ -312,13 +306,8 @@ void AudioDriverALSA::finish_device() {
|
||||
}
|
||||
|
||||
void AudioDriverALSA::finish() {
|
||||
if (thread) {
|
||||
exit_thread = true;
|
||||
Thread::wait_to_finish(thread);
|
||||
|
||||
memdelete(thread);
|
||||
thread = nullptr;
|
||||
}
|
||||
exit_thread = true;
|
||||
thread.wait_to_finish();
|
||||
|
||||
finish_device();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user