commit 19ffcbb6
Defer commands so that they do not execute during the draw phase
Changed files
| M | src/saland/console/Console.cpp before |
| M | src/saland/console/Console.hpp before |
diff --git a/src/saland/console/Console.cpp b/src/saland/console/Console.cpp
index fa4c405..0688ecc 100644
--- a/src/saland/console/Console.cpp
+++ b/src/saland/console/Console.cpp
@@ -118,7 +118,7 @@ void Console::Draw(SDL_Renderer* target) {
if (ImGui::InputText("Input", inputBuffer, IM_ARRAYSIZE(inputBuffer), input_flags, &TextEditCallbackStub, (void*)this)) {
std::string command(inputBuffer);
if (!command.empty()) {
- ProcessCommand(command);
+ pendingCommand = command;
inputBuffer[0] = '\0';
reclaim_focus = true;
}
@@ -286,5 +286,8 @@ int Console::TextEditCallback(ImGuiInputTextCallbackData* data) {
}
void Console::Update() {
- return;
+ if (pendingCommand.length()) {
+ ProcessCommand(pendingCommand);
+ pendingCommand.clear();
+ }
}
diff --git a/src/saland/console/Console.hpp b/src/saland/console/Console.hpp
index 6954af6..7ce3715 100644
--- a/src/saland/console/Console.hpp
+++ b/src/saland/console/Console.hpp
@@ -76,6 +76,7 @@ private:
bool scrollToBottom;
std::vector<std::string> completionCandidates;
int completionIndex;
+ std::string pendingCommand;
};
#endif /* CONSOLE_HPP */