From 5f4e1db576b1d45b604f394cdb322e9212da1979 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Mon, 21 Oct 2024 16:03:11 +0200 Subject: [PATCH] nitpicker: fix stale pixels in request-fb mode When nitpicker is used as nitpicker client as is the case for Sculpt's Leitzentrale, the time to sleep was tracked wrongly. The fb sync stays alive only if a refresh operation is actually issued. Issue #5347 Issue #5356 --- repos/os/src/server/nitpicker/main.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/repos/os/src/server/nitpicker/main.cc b/repos/os/src/server/nitpicker/main.cc index 2e17f693cd..b0de908ba5 100644 --- a/repos/os/src/server/nitpicker/main.cc +++ b/repos/os/src/server/nitpicker/main.cc @@ -494,6 +494,8 @@ struct Nitpicker::Main : Focus_updater, Hover_updater, dirty_rect.flush([&] (Rect const &rect) { _main._view_stack.draw(_screen, rect); }); + bool const any_pixels_refreshed = !_dirty_rect.empty(); + /* flush pixels to the framebuffer, reset dirty_rect */ _dirty_rect.flush([&] (Rect const &rect) { _fb.refresh(rect); }); @@ -502,7 +504,8 @@ struct Nitpicker::Main : Focus_updater, Hover_updater, for (Gui_session *s = _main._session_list.first(); s; s = s->next()) s->submit_sync(); - _previous_sync = _main._now(); + if (any_pixels_refreshed) + _previous_sync = _main._now(); } Framebuffer_screen(Env &env, Main &main) : _env(env), _main(main)