From 1ffea6643aa3638013db72203e53d45a8b049135 Mon Sep 17 00:00:00 2001 From: Ilia Bozhinov Date: Mon, 24 Feb 2025 19:02:54 +0100 Subject: [PATCH] decoration: do not schedule unnecessary transactions (#2586) --- plugins/decor/decoration.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/plugins/decor/decoration.cpp b/plugins/decor/decoration.cpp index c35c25b17..560da5427 100644 --- a/plugins/decor/decoration.cpp +++ b/plugins/decor/decoration.cpp @@ -138,19 +138,28 @@ class wayfire_decoration : public wf::plugin_interface_t pending.margins = {0, 0, 0, 0}; } + bool is_toplevel_decorated(const std::shared_ptr& toplevel) + { + return toplevel->has_data(); + } + void update_view_decoration(wayfire_view view) { if (auto toplevel = wf::toplevel_cast(view)) { - if (should_decorate_view(toplevel)) + const bool wants_decoration = should_decorate_view(toplevel); + if (wants_decoration != is_toplevel_decorated(toplevel->toplevel())) { - adjust_new_decorations(toplevel); - } else - { - remove_decoration(toplevel); - } + if (wants_decoration) + { + adjust_new_decorations(toplevel); + } else + { + remove_decoration(toplevel); + } - wf::get_core().tx_manager->schedule_object(toplevel->toplevel()); + wf::get_core().tx_manager->schedule_object(toplevel->toplevel()); + } } } };