summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/io/resource_importer.cpp9
-rw-r--r--core/io/resource_importer.h1
-rw-r--r--editor/editor_node.cpp2
-rw-r--r--editor/editor_resource_preview.cpp7
-rw-r--r--editor/editor_resource_preview.h1
5 files changed, 15 insertions, 5 deletions
diff --git a/core/io/resource_importer.cpp b/core/io/resource_importer.cpp
index 427ce2c2cd..69907a710a 100644
--- a/core/io/resource_importer.cpp
+++ b/core/io/resource_importer.cpp
@@ -406,9 +406,14 @@ bool ResourceFormatImporter::are_import_settings_valid(const String &p_path) con
}
String ResourceFormatImporter::get_import_settings_hash() const {
+
+ Vector<Ref<ResourceImporter> > sorted_importers = importers;
+
+ sorted_importers.sort_custom<SortImporterByName>();
+
String hash;
- for (int i = 0; i < importers.size(); i++) {
- hash += ":" + importers[i]->get_importer_name() + ":" + importers[i]->get_import_settings_string();
+ for (int i = 0; i < sorted_importers.size(); i++) {
+ hash += ":" + sorted_importers[i]->get_importer_name() + ":" + sorted_importers[i]->get_import_settings_string();
}
return hash.md5_text();
}
diff --git a/core/io/resource_importer.h b/core/io/resource_importer.h
index db1befb51e..1d27d4dec3 100644
--- a/core/io/resource_importer.h
+++ b/core/io/resource_importer.h
@@ -77,7 +77,6 @@ public:
void add_importer(const Ref<ResourceImporter> &p_importer) {
importers.push_back(p_importer);
- importers.sort_custom<SortImporterByName>();
}
void remove_importer(const Ref<ResourceImporter> &p_importer) { importers.erase(p_importer); }
Ref<ResourceImporter> get_importer_by_name(const String &p_name) const;
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index 754e8956a1..67fba4f278 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -531,6 +531,8 @@ void EditorNode::_sources_changed(bool p_exist) {
if (waiting_for_first_scan) {
+ EditorResourcePreview::get_singleton()->start(); //start previes now that it's safe
+
_load_docks();
if (defer_load_scene != "") {
diff --git a/editor/editor_resource_preview.cpp b/editor/editor_resource_preview.cpp
index 1fa1fe9070..e0c292dc87 100644
--- a/editor/editor_resource_preview.cpp
+++ b/editor/editor_resource_preview.cpp
@@ -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() {
if (thread) {
exit = true;
@@ -428,13 +432,12 @@ void EditorResourcePreview::stop() {
}
EditorResourcePreview::EditorResourcePreview() {
+ thread = NULL;
singleton = this;
preview_mutex = Mutex::create();
preview_sem = Semaphore::create();
order = 0;
exit = false;
-
- thread = Thread::create(_thread_func, this);
}
EditorResourcePreview::~EditorResourcePreview() {
diff --git a/editor/editor_resource_preview.h b/editor/editor_resource_preview.h
index 85ac78d58f..c958bfbb74 100644
--- a/editor/editor_resource_preview.h
+++ b/editor/editor_resource_preview.h
@@ -126,6 +126,7 @@ public:
void remove_preview_generator(const Ref<EditorResourcePreviewGenerator> &p_generator);
void check_for_invalidation(const String &p_path);
+ void start();
void stop();
EditorResourcePreview();