diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-11-27 17:39:31 +0800 |
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-11-27 17:39:31 +0800 |
| commit | 97ca464fc9e9da4e20e3320559a6f4ac3203fe84 (patch) | |
| tree | fa23dd3d31fd6c86814ef4505ae2f7966b840ed2 /src/platform/gui/sdl/UiApplication.cpp | |
| parent | 6e8d570e3d63b5bc4e24d258d2dd383530ace2a3 (diff) | |
| download | cru-97ca464fc9e9da4e20e3320559a6f4ac3203fe84.tar.gz cru-97ca464fc9e9da4e20e3320559a6f4ac3203fe84.tar.bz2 cru-97ca464fc9e9da4e20e3320559a6f4ac3203fe84.zip | |
Clean code. Use event define macro of native window on linux.
Diffstat (limited to 'src/platform/gui/sdl/UiApplication.cpp')
| -rw-r--r-- | src/platform/gui/sdl/UiApplication.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/platform/gui/sdl/UiApplication.cpp b/src/platform/gui/sdl/UiApplication.cpp index b448d8f0..c876ad19 100644 --- a/src/platform/gui/sdl/UiApplication.cpp +++ b/src/platform/gui/sdl/UiApplication.cpp @@ -25,6 +25,8 @@ SdlUiApplication::SdlUiApplication(graphics::IGraphicsFactory* graphics_factory, SdlUiApplication::~SdlUiApplication() { SDL_Quit(); + delete_later_pool_.Clean(); + if (release_graphics_factory_) { delete graphics_factory_; } @@ -32,14 +34,12 @@ SdlUiApplication::~SdlUiApplication() { int SdlUiApplication::Run() { while (true) { - auto now = std::chrono::steady_clock::now(); - - if (auto result = timers_.Update(now)) { + if (auto result = timers_.Update(std::chrono::steady_clock::now())) { result->data(); continue; } - auto timeout = timers_.NextTimeout(now); + auto timeout = timers_.NextTimeout(std::chrono::steady_clock::now()); SDL_Event event; CheckSdlReturn(timeout ? SDL_WaitEventTimeout(&event, timeout->count()) @@ -47,6 +47,8 @@ int SdlUiApplication::Run() { if (event.type == SDL_EVENT_QUIT) { break; } + + delete_later_pool_.Clean(); } for (const auto& handler : this->quit_handlers_) { @@ -95,6 +97,10 @@ void SdlUiApplication::CancelTimer(long long id) { return timers_.Remove(static_cast<int>(id)); } +void SdlUiApplication::DeleteLater(Object* object) { + delete_later_pool_.Add(object); +} + std::vector<INativeWindow*> SdlUiApplication::GetAllWindow() { std::vector<INativeWindow*> windows(windows_.size()); std::ranges::copy(windows_, windows.begin()); |
