Skip to content

Commit 9652e54

Browse files
committed
Fixed quitting from xrWeatherEditor
Call SDL_PumpEvents() in on_idle() just in case
1 parent 76c7873 commit 9652e54

File tree

5 files changed

+15
-3
lines changed

5 files changed

+15
-3
lines changed

src/Include/editor/engine.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class engine_base
2525
virtual void pause(bool const& value) = 0;
2626
virtual void capture_input(bool const& value) = 0;
2727
virtual void disconnect() = 0;
28+
virtual bool quit_requested() const = 0;
2829
// shared_str support
2930
virtual void value(LPCSTR value, shared_str& result) = 0;
3031
virtual LPCSTR value(shared_str const& value) = 0;

src/editors/xrWeatherEditor/entry_point.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ private ref class window_ide_final : public editor::window_ide
5555
{
5656
m_engine->on_idle();
5757
impl->on_idle();
58-
} while (m_engine&&!PeekMessage(&message, HWND(0), 0, 0, 0));
58+
} while (m_engine && !m_engine->quit_requested() && !PeekMessage(&message, HWND(0), 0, 0, 0));
5959

6060
impl->on_idle_end();
6161
}

src/xrEngine/engine_impl.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@ bool engine_impl::on_message(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
3131
return (Device.on_message(hWnd, uMsg, wParam, lParam, result));
3232
}
3333

34-
void engine_impl::on_idle() { Device.on_idle(); }
34+
void engine_impl::on_idle()
35+
{
36+
SDL_PumpEvents();
37+
Device.on_idle();
38+
}
3539
void engine_impl::on_resize()
3640
{
3741
if (Console)
@@ -60,6 +64,12 @@ void engine_impl::capture_input(bool const& value)
6064
}
6165

6266
void engine_impl::disconnect() { Console->Execute("quit"); }
67+
68+
bool engine_impl::quit_requested() const
69+
{
70+
return SDL_QuitRequested();
71+
}
72+
6373
void engine_impl::value(LPCSTR value, shared_str& result) { result = value; }
6474
LPCSTR engine_impl::value(shared_str const& value) { return (value.c_str()); }
6575
void engine_impl::weather(LPCSTR value)

src/xrEngine/engine_impl.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class engine_impl : public XRay::Editor::engine_base
2424
virtual void pause(bool const& value);
2525
virtual void capture_input(bool const& value);
2626
virtual void disconnect();
27+
bool quit_requested() const override;
2728

2829
virtual void value(LPCSTR value, shared_str& result);
2930
virtual LPCSTR value(shared_str const& value);

src/xrEngine/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ ENGINE_API void InitConsole()
110110

111111
ENGINE_API void InitInput()
112112
{
113-
bool captureInput = !strstr(Core.Params, "-i");
113+
bool captureInput = !strstr(Core.Params, "-i") && !GEnv.isEditor;
114114
pInput = new CInput(captureInput);
115115
}
116116

0 commit comments

Comments
 (0)