aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/platform/gui/sdl/UiApplication.cpp33
-rw-r--r--src/platform/gui/sdl/Window.cpp2
2 files changed, 21 insertions, 14 deletions
diff --git a/src/platform/gui/sdl/UiApplication.cpp b/src/platform/gui/sdl/UiApplication.cpp
index edf1e20c..4bcfc5a5 100644
--- a/src/platform/gui/sdl/UiApplication.cpp
+++ b/src/platform/gui/sdl/UiApplication.cpp
@@ -47,29 +47,36 @@ SdlUiApplication::~SdlUiApplication() {
int SdlUiApplication::Run() {
while (true) {
- if (auto result = timers_.Update(std::chrono::steady_clock::now())) {
- result->data();
- continue;
- }
-
auto timeout = timers_.NextTimeout(std::chrono::steady_clock::now());
SDL_Event event;
+ bool has_event = false;
if (timeout) {
- SDL_WaitEventTimeout(&event, timeout->count());
+ if (*timeout == std::chrono::milliseconds::zero()) {
+ has_event = SDL_PollEvent(&event);
+ } else {
+ has_event = SDL_WaitEventTimeout(&event, timeout->count());
+ }
} else {
CheckSdlReturn(SDL_WaitEvent(&event));
+ has_event = true;
}
- if (event.type == SDL_EVENT_QUIT) {
- break;
- }
+ if (has_event) {
+ if (event.type == SDL_EVENT_QUIT) {
+ break;
+ }
- // char buf[512];
- // SDL_GetEventDescription(&event, buf, sizeof(buf) / sizeof(*buf));
- // CruLogDebug(kLogTag, "{}", buf);
+ // char buf[512];
+ // SDL_GetEventDescription(&event, buf, sizeof(buf) / sizeof(*buf));
+ // CruLogDebug(kLogTag, "{}", buf);
- DispatchEvent(event);
+ DispatchEvent(event);
+ } else {
+ if (auto result = timers_.Update(std::chrono::steady_clock::now())) {
+ result->data();
+ }
+ }
delete_later_pool_.Clean();
}
diff --git a/src/platform/gui/sdl/Window.cpp b/src/platform/gui/sdl/Window.cpp
index 35d33172..44860ae3 100644
--- a/src/platform/gui/sdl/Window.cpp
+++ b/src/platform/gui/sdl/Window.cpp
@@ -280,7 +280,7 @@ void SdlWindow::DoCreateWindow() {
client_rect_.top));
}
- if (!IsWayland() || !sdl_is_popup_) {
+ if (!sdl_is_popup_) {
CheckSdlReturn(SDL_SetWindowParent(
sdl_window_, parent_ == nullptr ? nullptr : parent_->sdl_window_));
}