Sfoglia il codice sorgente

Make editor toasts threadsafe

Brian Semrau 3 anni fa
parent
commit
3d9c5648df
1 ha cambiato i file con 4 aggiunte e 3 eliminazioni
  1. 4 3
      editor/editor_toaster.cpp

+ 4 - 3
editor/editor_toaster.cpp

@@ -172,10 +172,11 @@ void EditorToaster::_error_handler(void *p_self, const char *p_func, const char
 			}
 		}
 
-		if (p_type == ERR_HANDLER_WARNING) {
-			EditorToaster::get_singleton()->popup_str(err_str, SEVERITY_WARNING, tooltip_str);
+		Severity severity = (p_type == ERR_HANDLER_WARNING) ? SEVERITY_WARNING : SEVERITY_ERROR;
+		if (Thread::get_caller_id() != Thread::get_main_id()) {
+			EditorToaster::get_singleton()->call_deferred(SNAME("popup_str"), err_str, severity, tooltip_str);
 		} else {
-			EditorToaster::get_singleton()->popup_str(err_str, SEVERITY_ERROR, tooltip_str);
+			EditorToaster::get_singleton()->popup_str(err_str, severity, tooltip_str);
 		}
 	}
 }