From 7efff8c560aa0c4a834201da48f53e709519c14b Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Fri, 29 May 2026 11:23:54 +0200 Subject: Improve redraw --- src/monmon.hh | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/monmon.hh') diff --git a/src/monmon.hh b/src/monmon.hh index 0699f57..c02cae6 100644 --- a/src/monmon.hh +++ b/src/monmon.hh @@ -3,6 +3,7 @@ #include #include +#include #include "animator.hh" #include "cairo.hh" @@ -63,13 +64,24 @@ protected: virtual void internal_quit() { } + virtual void mark_all_dirty() { + } + virtual void draw_content(cairo_t* cairo, PangoLayout* layout, - uint16_t w, uint16_t h) = 0; + uint16_t w, uint16_t h, + std::vector& dirty) = 0; static void rounded_path(cairo_t* cr, double x, double y, double width, double height); void draw(); + void request_draw(); + + // Clone the base layout (font, alignment, ellipsize) for per-item use + pango::unique_layout make_layout() const; + + // Fill the background (desktop or black) for a given rectangle on the cairo surface + void fill_background(cairo_t* cairo, xcb_rectangle_t const& r); std::shared_ptr looper_; std::unique_ptr animator_; @@ -109,6 +121,7 @@ private: xcb_window_t desktop_window_; xcb_pixmap_t desktop_pixmap_; cairo::unique_surface desktop_surface_; + bool draw_requested_; }; -- cgit v1.3