mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 16:03:29 +00: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:
parent
6ddfc8e718
commit
99fe462452
87 changed files with 385 additions and 1056 deletions
|
@ -424,26 +424,23 @@ void EditorResourcePreview::check_for_invalidation(const String &p_path) {
|
|||
}
|
||||
|
||||
void EditorResourcePreview::start() {
|
||||
ERR_FAIL_COND_MSG(thread, "Thread already started.");
|
||||
thread = Thread::create(_thread_func, this);
|
||||
ERR_FAIL_COND_MSG(thread.is_started(), "Thread already started.");
|
||||
thread.start(_thread_func, this);
|
||||
}
|
||||
|
||||
void EditorResourcePreview::stop() {
|
||||
if (thread) {
|
||||
if (thread.is_started()) {
|
||||
exit = true;
|
||||
preview_sem.post();
|
||||
while (!exited) {
|
||||
OS::get_singleton()->delay_usec(10000);
|
||||
RenderingServer::get_singleton()->sync(); //sync pending stuff, as thread may be blocked on visual server
|
||||
}
|
||||
Thread::wait_to_finish(thread);
|
||||
memdelete(thread);
|
||||
thread = nullptr;
|
||||
thread.wait_to_finish();
|
||||
}
|
||||
}
|
||||
|
||||
EditorResourcePreview::EditorResourcePreview() {
|
||||
thread = nullptr;
|
||||
singleton = this;
|
||||
order = 0;
|
||||
exit = false;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue