libui: Add option to run event processing in a loop instead of in app.run()

This commit is contained in:
apio 2023-09-14 21:29:48 +02:00
parent 08b56319c7
commit bb5d726fe8
Signed by: apio
GPG Key ID: B8A7D06E42258954
2 changed files with 18 additions and 2 deletions

View File

@ -35,6 +35,8 @@ namespace ui
m_should_close = b;
}
void set_nonblocking();
void set_main_window(Window* window)
{
check(!m_main_window);
@ -51,6 +53,8 @@ namespace ui
Result<void> handle_ipc_event(u8 id);
bool process_events();
static App& the();
private:

View File

@ -50,8 +50,8 @@ namespace ui
Result<int> App::run()
{
check(m_main_window);
while (!m_should_close) { TRY(os::IPC::check_for_messages(*m_client)); }
while (process_events())
;
return 0;
}
@ -135,4 +135,16 @@ namespace ui
default: fail("Unexpected IPC request from server!");
}
}
void App::set_nonblocking()
{
fcntl(m_client->fd(), F_SETFL, O_NONBLOCK);
}
bool App::process_events()
{
check(m_main_window);
os::IPC::check_for_messages(*m_client).release_value();
return !m_should_close;
}
}