19 #ifndef MIR_SCENE_MEDIATING_DISPLAY_CHANGER_H_ 20 #define MIR_SCENE_MEDIATING_DISPLAY_CHANGER_H_ 33 class ServerActionQueue;
44 class DisplayConfigurationPolicy;
45 class DisplayConfigurationReport;
47 namespace compositor {
class Compositor; }
54 class SessionEventHandlerRegister;
55 class SessionContainer;
64 std::shared_ptr<graphics::Display>
const& display,
65 std::shared_ptr<compositor::Compositor>
const& compositor,
66 std::shared_ptr<graphics::DisplayConfigurationPolicy>
const& display_configuration_policy,
67 std::shared_ptr<SessionContainer>
const& session_container,
68 std::shared_ptr<SessionEventHandlerRegister>
const& session_event_handler_register,
69 std::shared_ptr<ServerActionQueue>
const& server_action_queue,
70 std::shared_ptr<graphics::DisplayConfigurationReport>
const& report,
71 std::shared_ptr<input::InputRegion>
const& region,
72 std::shared_ptr<time::AlarmFactory>
const& alarm_factory);
75 std::shared_ptr<graphics::DisplayConfiguration> base_configuration()
override;
76 void configure(std::shared_ptr<frontend::Session>
const& session,
77 std::shared_ptr<graphics::DisplayConfiguration>
const& conf)
override;
78 void preview_base_configuration(
79 std::weak_ptr<frontend::Session>
const& session,
80 std::shared_ptr<graphics::DisplayConfiguration>
const& conf,
81 std::chrono::seconds timeout)
override;
82 void confirm_base_configuration(
83 std::shared_ptr<frontend::Session>
const& session,
84 std::shared_ptr<graphics::DisplayConfiguration>
const& confirmed_conf)
override;
87 void configure_for_hardware_change(
88 std::shared_ptr<graphics::DisplayConfiguration>
const& conf,
91 void pause_display_config_processing()
override;
92 void resume_display_config_processing()
override;
95 void set_base_configuration(std::shared_ptr<graphics::DisplayConfiguration>
const &conf)
override;
98 void focus_change_handler(std::shared_ptr<Session>
const& session);
99 void no_focus_handler();
100 void session_stopping_handler(std::shared_ptr<Session>
const& session);
102 void apply_config(std::shared_ptr<graphics::DisplayConfiguration>
const& conf,
105 void send_config_to_all_sessions(
106 std::shared_ptr<graphics::DisplayConfiguration>
const& conf);
109 std::shared_ptr<graphics::Display>
const display;
110 std::shared_ptr<compositor::Compositor>
const compositor;
111 std::shared_ptr<graphics::DisplayConfigurationPolicy>
const display_configuration_policy;
112 std::shared_ptr<SessionContainer>
const session_container;
113 std::shared_ptr<SessionEventHandlerRegister>
const session_event_handler_register;
114 std::shared_ptr<ServerActionQueue>
const server_action_queue;
115 std::shared_ptr<graphics::DisplayConfigurationReport>
const report;
116 std::mutex configuration_mutex;
117 std::map<std::weak_ptr<frontend::Session>,
118 std::shared_ptr<graphics::DisplayConfiguration>,
119 std::owner_less<std::weak_ptr<frontend::Session>>> config_map;
120 std::weak_ptr<frontend::Session> focused_session;
121 std::shared_ptr<graphics::DisplayConfiguration> base_configuration_;
122 bool base_configuration_applied;
123 std::shared_ptr<input::InputRegion>
const region;
124 std::shared_ptr<time::AlarmFactory>
const alarm_factory;
125 std::unique_ptr<time::Alarm> preview_configuration_timeout;
All things Mir.
Definition: atomic_callback.h:25
Definition: display_changer.h:31
Definition: display_changer.h:35
SystemStateHandling
Definition: display_changer.h:36
Definition: display_configuration_controller.h:33
Interface to a configuration of display cards and outputs.
Definition: display_configuration.h:168