Browse Source

Make thumbnail cache less tasking on the message queue

Fixes #23567
Bojidar Marinov 6 years ago
parent
commit
68e69fd45b
3 changed files with 6 additions and 5 deletions
  1. 1 1
      core/message_queue.cpp
  2. 3 2
      editor/editor_file_dialog.cpp
  3. 2 2
      editor/editor_resource_preview.cpp

+ 1 - 1
core/message_queue.cpp

@@ -209,9 +209,9 @@ void MessageQueue::statistics() {
 				} break;
 			}
 
+		} else {
 			//object was deleted
 			print_line("Object was deleted while awaiting a callback");
-		} else {
 
 			null_count++;
 		}

+ 3 - 2
editor/editor_file_dialog.cpp

@@ -830,11 +830,12 @@ void EditorFileDialog::update_file_list() {
 			d["name"] = files.front()->get();
 			d["dir"] = false;
 			String fullpath = cdir.plus_file(files.front()->get());
+			d["path"] = fullpath;
+			item_list->set_item_metadata(item_list->get_item_count() - 1, d);
+
 			if (display_mode == DISPLAY_THUMBNAILS) {
 				EditorResourcePreview::get_singleton()->queue_resource_preview(fullpath, this, "_thumbnail_result", fullpath);
 			}
-			d["path"] = fullpath;
-			item_list->set_item_metadata(item_list->get_item_count() - 1, d);
 
 			if (file->get_text() == files.front()->get())
 				item_list->set_current(item_list->get_item_count() - 1);

+ 2 - 2
editor/editor_resource_preview.cpp

@@ -326,7 +326,7 @@ void EditorResourcePreview::queue_edited_resource_preview(const Ref<Resource> &p
 	if (cache.has(path_id) && cache[path_id].last_hash == p_res->hash_edited_version()) {
 
 		cache[path_id].order = order++;
-		p_receiver->call_deferred(p_receiver_func, path_id, cache[path_id].preview, cache[path_id].small_preview, p_userdata);
+		p_receiver->call(p_receiver_func, path_id, cache[path_id].preview, cache[path_id].small_preview, p_userdata);
 		preview_mutex->unlock();
 		return;
 	}
@@ -351,7 +351,7 @@ void EditorResourcePreview::queue_resource_preview(const String &p_path, Object
 	preview_mutex->lock();
 	if (cache.has(p_path)) {
 		cache[p_path].order = order++;
-		p_receiver->call_deferred(p_receiver_func, p_path, cache[p_path].preview, cache[p_path].small_preview, p_userdata);
+		p_receiver->call(p_receiver_func, p_path, cache[p_path].preview, cache[p_path].small_preview, p_userdata);
 		preview_mutex->unlock();
 		return;
 	}