Browse Source

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 years ago
parent
commit
22aad32c69

+ 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.
                 // However, it doesn't fix resource loading if the rest of the path is also case insensitive.
                 string scriptFileLocalized = FsPathUtils.LocalizePathWithCaseChecked(request.ScriptFile);
                 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 };
                 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;
                 return response;
             }
             }
         }
         }