18 #ifndef MIR_CLIENT_MIR_CONNECTION_H_
19 #define MIR_CLIENT_MIR_CONNECTION_H_
23 #include <unordered_set>
24 #include <unordered_map>
29 #include "mir_protobuf.pb.h"
46 class ConnectionConfiguration;
47 class ClientPlatformFactory;
48 class ClientBufferStreamFactory;
49 class ConnectionSurfaceMap;
50 class DisplayConfiguration;
51 class LifecycleControl;
52 class EventHandlerRegister;
56 class MirBasicRpcChannel;
104 const char* app_name,
121 unsigned int formats_size,
unsigned int& valid_formats);
141 std::shared_ptr<mir::logging::Logger>
const&
the_logger()
const;
147 {
MirConnection*
const self; ~Deregisterer(); } deregisterer;
151 std::shared_ptr<mir::SharedLibrary>
const platform_library;
155 std::shared_ptr<google::protobuf::RpcChannel>
const channel;
156 mir::protobuf::DisplayServer::Stub server;
157 mir::protobuf::Debug::Stub debug;
158 std::shared_ptr<mir::logging::Logger>
const logger;
159 mir::protobuf::Void void_response;
160 mir::protobuf::Connection connect_result;
161 std::atomic<bool> connect_done;
162 mir::protobuf::Void ignored;
163 mir::protobuf::ConnectParameters connect_parameters;
164 mir::protobuf::PlatformOperationMessage platform_operation_reply;
165 mir::protobuf::DisplayConfiguration display_configuration_response;
166 bool disconnecting{
false};
168 std::shared_ptr<mir::client::ClientPlatformFactory>
const client_platform_factory;
169 std::shared_ptr<mir::client::ClientPlatform> platform;
170 std::shared_ptr<EGLNativeDisplayType> native_display;
172 std::shared_ptr<mir::input::receiver::InputPlatform>
const input_platform;
174 std::string error_message;
181 std::mutex release_wait_handle_guard;
182 std::vector<MirWaitHandle*> release_wait_handles;
184 std::shared_ptr<mir::client::DisplayConfiguration>
const display_configuration;
186 std::shared_ptr<mir::client::LifecycleControl>
const lifecycle_control;
188 std::shared_ptr<mir::client::ConnectionSurfaceMap>
const surface_map;
190 std::shared_ptr<mir::client::EventHandlerRegister>
const event_handler_register;
192 std::unique_ptr<mir::dispatch::SimpleDispatchThread>
const eventloop;
194 std::shared_ptr<mir::client::ClientBufferStreamFactory> buffer_stream_factory;
196 struct SurfaceRelease;
200 void set_error_message(std::string
const&
error);
201 void done_disconnect();
203 void released(SurfaceRelease );
MirWaitHandle * connect(const char *app_name, mir_connected_callback callback, void *context)
Definition: mir_connection.cpp:288
All things Mir.
Definition: buffer_stream.h:37
Definition: client_types.h:270
Definition: mir_surface.h:58
Definition: mir_surface.h:86
MirPromptSession * create_prompt_session()
Definition: mir_connection.cpp:223
Definition: mir_wait_handle.h:31
MirConnection & operator=(MirConnection const &)=delete
std::shared_ptr< mir::logging::Logger > const & the_logger() const
Definition: mir_connection.cpp:577
MirWaitHandle * create_surface(MirSurfaceSpec const &spec, mir_surface_callback callback, void *context)
Definition: mir_connection.cpp:143
void available_surface_formats(MirPixelFormat *formats, unsigned int formats_size, unsigned int &valid_formats)
Definition: mir_connection.cpp:444
MirWaitHandle * release_surface(MirSurface *surface, mir_surface_callback callback, void *context)
Definition: mir_connection.cpp:198
Definition: simple_dispatch_thread.h:33
void done_display_configure()
Definition: mir_connection.cpp:527
MirWaitHandle * platform_operation(MirPlatformMessage const *request, mir_platform_operation_callback callback, void *context)
Definition: mir_connection.cpp:359
std::shared_ptr< mir::client::ClientPlatform > get_client_platform()
Definition: mir_connection.cpp:465
EGLNativeDisplayType egl_native_display()
Definition: mir_connection.cpp:480
void populate(MirPlatformPackage &platform_package)
Definition: mir_connection.cpp:410
void register_display_change_callback(mir_display_config_callback callback, void *context)
Definition: mir_connection.cpp:497
Definition: mir_prompt_session.h:40
std::shared_ptr< mir::client::ClientBufferStreamFactory > get_client_buffer_stream_factory()
Definition: mir_connection.cpp:472
Definition: client_context.h:29
std::shared_ptr< google::protobuf::RpcChannel > rpc_channel() const
Definition: mir_connection.h:135
void on_surface_created(int id, MirSurface *surface)
Definition: mir_connection.cpp:487
~MirConnection() noexcept
Definition: mir_connection.cpp:128
MirWaitHandle * disconnect()
Definition: mir_connection.cpp:324
MirWaitHandle * configure_display(MirDisplayConfiguration *configuration)
Definition: mir_connection.cpp:539
MirConnection(std::string const &error_message)
Definition: mir_connection.cpp:95
error
Definition: connector_report_tp.h:60
char const * get_error_message()
Definition: mir_connection.cpp:154
Definition: mir_connection.h:79
void register_lifecycle_event_callback(mir_lifecycle_event_callback callback, void *context)
Definition: mir_connection.cpp:492
Definition: connection_configuration.h:52
mir::protobuf::DisplayServer & display_server()
Definition: mir_connection.cpp:572
static bool is_valid(MirConnection *connection)
Definition: mir_connection.cpp:393
MirDisplayConfiguration * create_copy_of_display_config()
Definition: mir_connection.cpp:438