19 #ifndef MIR_SHELL_ABSTRACT_SHELL_H_
20 #define MIR_SHELL_ABSTRACT_SHELL_H_
49 std::shared_ptr<frontend::EventSink>
const& sink)
override;
51 void close_session(std::shared_ptr<scene::Session>
const& session)
override;
54 std::shared_ptr<scene::Session>
const& session,
56 std::shared_ptr<frontend::EventSink>
const& sink)
override;
58 void modify_surface(std::shared_ptr<scene::Session>
const& session, std::shared_ptr<scene::Surface>
const& surface,
SurfaceSpecification const& modifications)
override;
63 std::shared_ptr<scene::Session>
const& session,
64 std::shared_ptr<scene::Surface>
const& surface,
69 std::shared_ptr<scene::Surface>
const& surface,
73 std::shared_ptr<scene::Session>
const& session,
77 std::shared_ptr<scene::PromptSession>
const& prompt_session,
78 std::shared_ptr<scene::Session>
const& session)
override;
80 void stop_prompt_session(std::shared_ptr<scene::PromptSession>
const& prompt_session)
override;
96 std::shared_ptr<scene::Session>
const& focus_session,
97 std::shared_ptr<scene::Surface>
const& focus_surface)
override;
104 void raise(
SurfaceSet const& surfaces)
override;
120 std::mutex
mutable focus_mutex;
121 std::weak_ptr<scene::Surface> focus_surface;
122 std::weak_ptr<scene::Session> focus_session;
124 void set_focus_to_locked(
125 std::unique_lock<std::mutex>
const& lock,
126 std::shared_ptr<scene::Session>
const& focus_session,
127 std::shared_ptr<scene::Surface>
const& focus_surface);
All things Mir.
Definition: atomic_callback.h:25
std::shared_ptr< scene::Session > focused_session() const override
Definition: abstract_shell.cpp:147
void add_display(geometry::Rectangle const &area) override
Definition: abstract_shell.cpp:211
void add_prompt_provider_for(std::shared_ptr< scene::PromptSession > const &prompt_session, std::shared_ptr< scene::Session > const &session) override
Definition: abstract_shell.cpp:102
~AbstractShell() noexcept
Definition: abstract_shell.cpp:47
std::shared_ptr< scene::SurfaceCoordinator > const surface_coordinator
Definition: abstract_shell.h:114
std::shared_ptr< scene::Surface > focused_surface() const override
Definition: abstract_shell.cpp:153
frontend::SurfaceId create_surface(std::shared_ptr< scene::Session > const &session, scene::SurfaceCreationParameters const ¶ms, std::shared_ptr< frontend::EventSink > const &sink) override
Definition: abstract_shell.cpp:69
void close_session(std::shared_ptr< scene::Session > const &session) override
Definition: abstract_shell.cpp:61
void modify_surface(std::shared_ptr< scene::Session > const &session, std::shared_ptr< scene::Surface > const &surface, SurfaceSpecification const &modifications) override
Definition: abstract_shell.cpp:82
std::set< std::weak_ptr< scene::Surface >, std::owner_less< std::weak_ptr< scene::Surface >>> SurfaceSet
Definition: focus_controller.h:32
int set_surface_attribute(std::shared_ptr< scene::Session > const &session, std::shared_ptr< scene::Surface > const &surface, MirSurfaceAttrib attrib, int value) override
Definition: abstract_shell.cpp:115
std::shared_ptr< scene::SessionCoordinator > const session_coordinator
Definition: abstract_shell.h:115
std::shared_ptr< InputTargeter > const input_targeter
Definition: abstract_shell.h:113
Definition: focus_controller.h:38
int get_surface_attribute(std::shared_ptr< scene::Surface > const &surface, MirSurfaceAttrib attrib) override
Definition: abstract_shell.cpp:124
AbstractShell(std::shared_ptr< InputTargeter > const &input_targeter, std::shared_ptr< scene::SurfaceCoordinator > const &surface_coordinator, std::shared_ptr< scene::SessionCoordinator > const &session_coordinator, std::shared_ptr< scene::PromptSessionManager > const &prompt_session_manager, WindowManagerBuilder const &wm_builder)
Definition: abstract_shell.cpp:33
void set_focus_to(std::shared_ptr< scene::Session > const &focus_session, std::shared_ptr< scene::Surface > const &focus_surface) override
Definition: abstract_shell.cpp:159
void stop_prompt_session(std::shared_ptr< scene::PromptSession > const &prompt_session) override
Definition: abstract_shell.cpp:109
auto surface_at(geometry::Point cursor) const -> std::shared_ptr< scene::Surface > override
Definition: abstract_shell.cpp:243
void focus_next_session() override
Definition: abstract_shell.cpp:132
Definition: surface_creation_parameters.h:42
std::shared_ptr< scene::PromptSession > start_prompt_session_for(std::shared_ptr< scene::Session > const &session, scene::PromptSessionCreationParameters const ¶ms) override
Definition: abstract_shell.cpp:95
Definition: rectangle.h:33
std::shared_ptr< scene::PromptSessionManager > const prompt_session_manager
Definition: abstract_shell.h:116
bool handle(MirEvent const &event) override
Definition: abstract_shell.cpp:221
void remove_display(geometry::Rectangle const &area) override
Definition: abstract_shell.cpp:216
Definition: prompt_session_creation_parameters.h:29
void destroy_surface(std::shared_ptr< scene::Session > const &session, frontend::SurfaceId surface) override
Definition: abstract_shell.cpp:87
Definition: event_private.h:178
Specification of surface properties requested by client.
Definition: surface_specification.h:50
std::shared_ptr< WindowManager > const window_manager
Definition: abstract_shell.h:117
Minimal Shell implementation with none of the necessary window management logic.
Definition: abstract_shell.h:34
std::shared_ptr< scene::Session > open_session(pid_t client_pid, std::string const &name, std::shared_ptr< frontend::EventSink > const &sink) override
Definition: abstract_shell.cpp:51
std::function< std::shared_ptr< WindowManager >(FocusController *focus_controller)> WindowManagerBuilder
WindowManagers are built while initializing an AbstractShell, so a builder functor is needed...
Definition: window_manager_builder.h:34