19 #ifndef MIR_CLIENT_DISPLAY_CONFIG_H 20 #define MIR_CLIENT_DISPLAY_CONFIG_H 22 #include <mir_toolkit/mir_connection.h> 23 #include <mir_toolkit/mir_display_configuration.h> 39 DisplayConfig() =
default;
41 explicit DisplayConfig(MirDisplayConfig* config) : self{config, deleter} {}
43 explicit DisplayConfig(MirConnection* connection) :
44 self{mir_connection_create_display_configuration(connection), deleter} {}
46 operator MirDisplayConfig*() {
return self.get(); }
48 operator MirDisplayConfig
const*()
const {
return self.get(); }
50 void reset() {
self.reset(); }
52 void for_each_output(std::function<
void(MirOutput
const*)>
const& enumerator)
const 54 auto const count = mir_display_config_get_num_outputs(*
this);
56 for (
int i = 0; i != count; ++i)
57 enumerator(mir_display_config_get_output(*
this, i));
60 #if MIR_DEFINES_DISPLAY_CONFIG_GET_MUTABLE_OUTPUT 63 void for_each_output(std::function<
void(MirOutput*)>
const& enumerator)
65 auto const count = mir_display_config_get_num_outputs(*
this);
67 for (
int i = 0; i != count; ++i)
68 enumerator(mir_display_config_get_mutable_output(*
this, i));
73 static void deleter(MirDisplayConfig* config) { mir_display_config_release(config); }
75 std::shared_ptr <MirDisplayConfig>
self;
79 void mir_display_config_release(DisplayConfig
const& config) =
delete;
83 #endif //MIR_CLIENT_DISPLAY_CONFIG_H