| 591 | } |
| 592 | |
| 593 | void EditorResourcePreview::stop() { |
| 594 | if (is_threaded()) { |
| 595 | if (thread.is_started()) { |
| 596 | exiting.set(); |
| 597 | preview_sem.post(); |
| 598 | |
| 599 | for (int i = 0; i < preview_generators.size(); i++) { |
| 600 | preview_generators.write[i]->abort(); |
| 601 | } |
| 602 | |
| 603 | while (!exited.is_set()) { |
| 604 | // Sync pending work. |
| 605 | OS::get_singleton()->delay_usec(10000); |
| 606 | RenderingServer::get_singleton()->sync(); |
| 607 | MessageQueue::get_singleton()->flush(); |
| 608 | } |
| 609 | |
| 610 | thread.wait_to_finish(); |
| 611 | } |
| 612 | } |
| 613 | } |
| 614 | |
| 615 | EditorResourcePreview::EditorResourcePreview() { |
| 616 | singleton = this; |