Drop old semaphore implementation
- Removed platform-specific implementations. - Now all semaphores are in-object, unless they need to be conditionally created. - Similarly to `Mutex`, provided a dummy implementation for when `NO_THREADS` is defined. - Similarly to `Mutex`, methods are made `const` for easy use in such contexts. - Language bindings updated: `wait()` and `post()` are now `void`. - Language bindings updated: `try_wait()` added. Bonus: - Rewritten the `#ifdef` in `mutex.h` to meet the code style.
This commit is contained in:
@ -217,7 +217,7 @@ void EditorResourcePreview::_thread() {
|
||||
exited = false;
|
||||
while (!exit) {
|
||||
|
||||
preview_sem->wait();
|
||||
preview_sem.wait();
|
||||
preview_mutex.lock();
|
||||
|
||||
if (queue.size()) {
|
||||
@ -379,7 +379,7 @@ void EditorResourcePreview::queue_edited_resource_preview(const Ref<Resource> &p
|
||||
|
||||
queue.push_back(item);
|
||||
}
|
||||
preview_sem->post();
|
||||
preview_sem.post();
|
||||
}
|
||||
|
||||
void EditorResourcePreview::queue_resource_preview(const String &p_path, Object *p_receiver, const StringName &p_receiver_func, const Variant &p_userdata) {
|
||||
@ -403,7 +403,7 @@ void EditorResourcePreview::queue_resource_preview(const String &p_path, Object
|
||||
|
||||
queue.push_back(item);
|
||||
}
|
||||
preview_sem->post();
|
||||
preview_sem.post();
|
||||
}
|
||||
|
||||
void EditorResourcePreview::add_preview_generator(const Ref<EditorResourcePreviewGenerator> &p_generator) {
|
||||
@ -462,7 +462,7 @@ void EditorResourcePreview::start() {
|
||||
void EditorResourcePreview::stop() {
|
||||
if (thread) {
|
||||
exit = true;
|
||||
preview_sem->post();
|
||||
preview_sem.post();
|
||||
while (!exited) {
|
||||
OS::get_singleton()->delay_usec(10000);
|
||||
VisualServer::get_singleton()->sync(); //sync pending stuff, as thread may be blocked on visual server
|
||||
@ -476,7 +476,6 @@ void EditorResourcePreview::stop() {
|
||||
EditorResourcePreview::EditorResourcePreview() {
|
||||
thread = NULL;
|
||||
singleton = this;
|
||||
preview_sem = SemaphoreOld::create();
|
||||
order = 0;
|
||||
exit = false;
|
||||
exited = false;
|
||||
@ -485,5 +484,4 @@ EditorResourcePreview::EditorResourcePreview() {
|
||||
EditorResourcePreview::~EditorResourcePreview() {
|
||||
|
||||
stop();
|
||||
memdelete(preview_sem);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user