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;
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
auto session() const -> std::shared_ptr< mir::scene::Session >
Definition: decoration_provider.cpp:371
~DecorationProvider()
Definition: decoration_provider.cpp:305
void resize_titlebar_for(miral::WindowInfo const &window_info, mir::geometry::Size const &size)
Definition: decoration_provider.cpp:474
~Worker()
Definition: decoration_provider.cpp:643
void create_titlebar_for(miral::Window const &window)
Definition: decoration_provider.cpp:400
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
bool is_decoration(miral::Window const &window) const
Definition: decoration_provider.cpp:584
void stop()
Definition: decoration_provider.cpp:309
void stop_work()
Definition: decoration_provider.cpp:675
void place_new_decoration(miral::WindowSpecification &window_spec)
Definition: decoration_provider.cpp:489
void destroy_titlebar_for(miral::Window const &window)
Definition: decoration_provider.cpp:440
void paint_titlebar_for(miral::WindowInfo const &window, int intensity)
Definition: decoration_provider.cpp:428
bool is_titlebar(miral::WindowInfo const &window_info) const
Definition: decoration_provider.cpp:589
void operator()(mir::client::Connection connection)
Definition: decoration_provider.cpp:328
DecorationProvider(miral::WindowManagerTools const &tools)
Definition: decoration_provider.cpp:300
void advise_new_titlebar(miral::WindowInfo const &window_info)
Definition: decoration_provider.cpp:507
Handle class for MirRenderSurface - provides automatic reference counting.
Definition: surface.h:31
Definition: titlebar_config.h:24
void advise_state_change(miral::WindowInfo const &window_info, MirWindowState state)
Definition: decoration_provider.cpp:520
Definition: decoration_provider.h:38