summaryrefslogtreecommitdiffhomepage
path: root/packages/kernel/src/server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'packages/kernel/src/server.cpp')
-rw-r--r--packages/kernel/src/server.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/packages/kernel/src/server.cpp b/packages/kernel/src/server.cpp
index d97104e..5d78b70 100644
--- a/packages/kernel/src/server.cpp
+++ b/packages/kernel/src/server.cpp
@@ -105,6 +105,10 @@ auto Server::ui_click_element(const char* tag, int index) -> bool {
return impl_->substrate != nullptr && impl_->substrate->click_element(tag, index);
}
+auto Server::ui_reload_surface() -> bool {
+ return impl_->substrate != nullptr && impl_->substrate->reload_first_surface();
+}
+
void Server::ui_set_touch_override(UiTouchOverride ov) {
if (impl_->substrate == nullptr) {
return;
@@ -371,8 +375,11 @@ void Server::Impl::start_substrate() {
wlr_log(WLR_INFO, "ui-substrate: renderer is not gles2; substrate unavailable");
}
// A data-event/getter throw disables the owning extension via the same
- // isolation path the bus uses (Server::Impl is the DisableSink).
+ // isolation path the bus uses (Server::Impl is the DisableSink). The
+ // wl_event_loop lets the substrate poll the dev hot-reload inotify fd
+ // (UNBOX_DEV-gated) without ever blocking the loop.
substrate = Substrate::create(display_egl, allocator, renderer,
+ wl_display_get_event_loop(display),
[this](ExtensionId who) { disable(who); });
}