Fix ImGui input processing
PiperOrigin-RevId: 808555760 Change-Id: Ie443143d9c058058b99786e44f27715b05c9f8ed
This commit is contained in:
committed by
Copybara-Service
parent
d7500e0dec
commit
f9f3dd3c1d
@@ -130,7 +130,7 @@ std::string Window::GetDropFile() {
|
|||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
Window::Status Window::ProcessEvents() {
|
Window::Status Window::NewFrame() {
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
while (SDL_PollEvent(&event)) {
|
while (SDL_PollEvent(&event)) {
|
||||||
ImGui_ImplSDL2_ProcessEvent(&event);
|
ImGui_ImplSDL2_ProcessEvent(&event);
|
||||||
@@ -158,6 +158,15 @@ Window::Status Window::ProcessEvents() {
|
|||||||
return should_exit_ ? kQuitting : kRunning;
|
return should_exit_ ? kQuitting : kRunning;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Window::EndFrame() {
|
||||||
|
// We use ImGui for input management in addition to GUI rendering so its
|
||||||
|
// important to call ImGui::EndFrame even if we don't call ImGui::Render.
|
||||||
|
// Note ImGui::Render internally calls ImGui::EndFrame, but so long as
|
||||||
|
// ImGui::NewFrame has been called, ImGui::EndFrame may be called multiple
|
||||||
|
// times; it will be a no-op.
|
||||||
|
ImGui::EndFrame();
|
||||||
|
}
|
||||||
|
|
||||||
void Window::Present() {
|
void Window::Present() {
|
||||||
// Filament (with the exception of WebGL) handles the swapchain internally.
|
// Filament (with the exception of WebGL) handles the swapchain internally.
|
||||||
if (config_ != kFilamentVulkan && config_ != kFilamentOpenGL) {
|
if (config_ != kFilamentVulkan && config_ != kFilamentOpenGL) {
|
||||||
|
|||||||
@@ -50,8 +50,12 @@ class Window {
|
|||||||
kQuitting,
|
kQuitting,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Processes all pendings window events, returning the status of the window.
|
// Processes all pendings window events and prepares ImGui for input handling
|
||||||
Status ProcessEvents();
|
// and GUI rendering. Returns the status of the window.
|
||||||
|
Status NewFrame();
|
||||||
|
|
||||||
|
// Finalizes ImGui input handling. Must call NewFrame first.
|
||||||
|
void EndFrame();
|
||||||
|
|
||||||
// Swaps and presents the window buffer.
|
// Swaps and presents the window buffer.
|
||||||
void Present();
|
void Present();
|
||||||
|
|||||||
Reference in New Issue
Block a user