19 #ifndef MIRAL_SHELL_DECORATION_PROVIDER_H 20 #define MIRAL_SHELL_DECORATION_PROVIDER_H 35 #include <condition_variable> 48 using WorkQueue = std::queue<std::function<void()>>;
50 std::mutex
mutable work_mutex;
51 std::condition_variable work_cv;
53 bool work_done =
false;
65 void operator()(std::weak_ptr<mir::scene::Session>
const& session);
67 auto session()
const -> std::shared_ptr<mir::scene::Session>;
88 std::atomic<MirWindow*>
titlebar{
nullptr};
89 std::atomic<int> intensity{0xff};
90 std::function<void(MirWindow* surface)> on_create{[](
MirWindow*){}};
96 using SurfaceMap = std::map<std::weak_ptr<mir::scene::Surface>, Data, std::owner_less<std::weak_ptr<mir::scene::Surface>>>;
97 using TitleMap = std::map<std::string, std::weak_ptr<mir::scene::Surface>>;
100 std::mutex
mutable mutex;
103 std::vector<Wallpaper> wallpaper;
104 std::weak_ptr<mir::scene::Session> weak_session;
106 SurfaceMap window_to_titlebar;
107 TitleMap windows_awaiting_titlebar;
109 static void insert(
MirWindow* surface, Data* data);
114 static void handle_event_for_background(
MirWindow* window,
MirEvent const* event,
void* context_);
119 #endif //MIRAL_SHELL_DECORATION_PROVIDER_H
~Worker()
Definition: decoration_provider.cpp:643
Definition: decoration_provider.h:58
Definition: window_info.h:32
Definition: window_specification.h:43
Handle class for MirWindow - provides automatic reference counting.
Definition: window.h:31
Handle class for MirConnection - provides automatic reference counting.
Definition: connection.h:34
void start_work()
Definition: decoration_provider.cpp:670
void enqueue_work(std::function< void()> const &functor)
Definition: decoration_provider.cpp:663
Handle class to manage a Mir surface. It may be null (e.g. default initialized)
Definition: window.h:37
void stop_work()
Definition: decoration_provider.cpp:675
Handle class for MirRenderSurface - provides automatic reference counting.
Definition: surface.h:31
Definition: titlebar_config.h:24
Definition: decoration_provider.h:38