1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-10 13:00:37 +00:00

-Fix problem of order of import plugins, closes #26340

-Ensure resource previewer does not start until first import is done
This commit is contained in:
Juan Linietsky
2019-02-27 13:31:11 -03:00
parent ce615c1a82
commit a5370b1b1b
5 changed files with 15 additions and 5 deletions

View File

@@ -406,9 +406,14 @@ bool ResourceFormatImporter::are_import_settings_valid(const String &p_path) con
} }
String ResourceFormatImporter::get_import_settings_hash() const { String ResourceFormatImporter::get_import_settings_hash() const {
Vector<Ref<ResourceImporter> > sorted_importers = importers;
sorted_importers.sort_custom<SortImporterByName>();
String hash; String hash;
for (int i = 0; i < importers.size(); i++) { for (int i = 0; i < sorted_importers.size(); i++) {
hash += ":" + importers[i]->get_importer_name() + ":" + importers[i]->get_import_settings_string(); hash += ":" + sorted_importers[i]->get_importer_name() + ":" + sorted_importers[i]->get_import_settings_string();
} }
return hash.md5_text(); return hash.md5_text();
} }

View File

@@ -77,7 +77,6 @@ public:
void add_importer(const Ref<ResourceImporter> &p_importer) { void add_importer(const Ref<ResourceImporter> &p_importer) {
importers.push_back(p_importer); importers.push_back(p_importer);
importers.sort_custom<SortImporterByName>();
} }
void remove_importer(const Ref<ResourceImporter> &p_importer) { importers.erase(p_importer); } void remove_importer(const Ref<ResourceImporter> &p_importer) { importers.erase(p_importer); }
Ref<ResourceImporter> get_importer_by_name(const String &p_name) const; Ref<ResourceImporter> get_importer_by_name(const String &p_name) const;

View File

@@ -531,6 +531,8 @@ void EditorNode::_sources_changed(bool p_exist) {
if (waiting_for_first_scan) { if (waiting_for_first_scan) {
EditorResourcePreview::get_singleton()->start(); //start previes now that it's safe
_load_docks(); _load_docks();
if (defer_load_scene != "") { if (defer_load_scene != "") {

View File

@@ -417,6 +417,10 @@ void EditorResourcePreview::check_for_invalidation(const String &p_path) {
} }
} }
void EditorResourcePreview::start() {
ERR_FAIL_COND(thread);
thread = Thread::create(_thread_func, this);
}
void EditorResourcePreview::stop() { void EditorResourcePreview::stop() {
if (thread) { if (thread) {
exit = true; exit = true;
@@ -428,13 +432,12 @@ void EditorResourcePreview::stop() {
} }
EditorResourcePreview::EditorResourcePreview() { EditorResourcePreview::EditorResourcePreview() {
thread = NULL;
singleton = this; singleton = this;
preview_mutex = Mutex::create(); preview_mutex = Mutex::create();
preview_sem = Semaphore::create(); preview_sem = Semaphore::create();
order = 0; order = 0;
exit = false; exit = false;
thread = Thread::create(_thread_func, this);
} }
EditorResourcePreview::~EditorResourcePreview() { EditorResourcePreview::~EditorResourcePreview() {

View File

@@ -126,6 +126,7 @@ public:
void remove_preview_generator(const Ref<EditorResourcePreviewGenerator> &p_generator); void remove_preview_generator(const Ref<EditorResourcePreviewGenerator> &p_generator);
void check_for_invalidation(const String &p_path); void check_for_invalidation(const String &p_path);
void start();
void stop(); void stop();
EditorResourcePreview(); EditorResourcePreview();