Преглед изворни кода

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;
             }
         }