浏览代码

C#: Fix NodePaths completion error for not calling from main thread

The node API we use for code completion changed and no longer allows
being called from threads other than the main one.
Ignacio Roldán Etcheverry 2 年之前
父节点
当前提交
22aad32c69
共有 1 个文件被更改,包括 5 次插入2 次删除
  1. 5 2
      modules/mono/editor/GodotTools/GodotTools/Ides/MessagingServer.cs

+ 5 - 2
modules/mono/editor/GodotTools/GodotTools/Ides/MessagingServer.cs

@@ -385,9 +385,12 @@ namespace GodotTools.Ides
                 // However, it doesn't fix resource loading if the rest of the path is also case insensitive.
                 string scriptFileLocalized = FsPathUtils.LocalizePathWithCaseChecked(request.ScriptFile);
 
+                // The node API can only be called from the main thread.
+                await Godot.Engine.GetMainLoop().ToSignal(Godot.Engine.GetMainLoop(), "process_frame");
+
                 var response = new CodeCompletionResponse { Kind = request.Kind, ScriptFile = request.ScriptFile };
-                response.Suggestions = await Task.Run(() =>
-                    Internal.CodeCompletionRequest(response.Kind, scriptFileLocalized ?? request.ScriptFile));
+                response.Suggestions = Internal.CodeCompletionRequest(response.Kind,
+                    scriptFileLocalized ?? request.ScriptFile);
                 return response;
             }
         }