blob: cd98d36c431bf651cf9c2045c523d2c2db62255b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
--- a/src/shade.hpp
+++ b/src/shade.hpp
@@ -167,10 +167,13 @@
{
if (auto toplevel = wf::toplevel_cast(view))
{
- if (deco)
+ /* Re-resolve the decorator each frame: a cached observer_ptr dangles
+ * if the decoration is removed/recreated while the shade runs. */
+ auto live_deco = toplevel->toplevel()->get_data<simple_decorator_t>();
+ if (live_deco)
{
/* SSD */
- deco->get_margins(toplevel->toplevel()->pending());
+ live_deco->get_margins(toplevel->toplevel()->pending());
} else
{
/* CSD */
|