瀏覽代碼

Merge pull request #94079 from RandomShaper/editor_main_mq

Let EditorLog use the right call queue for thread safety
Rémi Verschelde 1 年之前
父節點
當前提交
16f98cd707
共有 2 個文件被更改,包括 2 次插入6 次删除
  1. 2 4
      editor/editor_log.cpp
  2. 0 2
      editor/editor_log.h

+ 2 - 4
editor/editor_log.cpp

@@ -58,8 +58,8 @@ void EditorLog::_error_handler(void *p_self, const char *p_func, const char *p_f
 
 	MessageType message_type = p_type == ERR_HANDLER_WARNING ? MSG_TYPE_WARNING : MSG_TYPE_ERROR;
 
-	if (self->current != Thread::get_caller_id()) {
-		callable_mp(self, &EditorLog::add_message).call_deferred(err_str, message_type);
+	if (!Thread::is_main_thread()) {
+		MessageQueue::get_main_singleton()->push_callable(callable_mp(self, &EditorLog::add_message), err_str, message_type);
 	} else {
 		self->add_message(err_str, message_type);
 	}
@@ -557,8 +557,6 @@ EditorLog::EditorLog() {
 	eh.errfunc = _error_handler;
 	eh.userdata = this;
 	add_error_handler(&eh);
-
-	current = Thread::get_caller_id();
 }
 
 void EditorLog::deinit() {

+ 0 - 2
editor/editor_log.h

@@ -156,8 +156,6 @@ private:
 
 	ErrorHandlerList eh;
 
-	Thread::ID current;
-
 	//void _dragged(const Point2& p_ofs);
 	void _meta_clicked(const String &p_meta);
 	void _clear_request();