18 #ifndef MIR_CLIENT_MIR_CONNECTION_H_ 19 #define MIR_CLIENT_MIR_CONNECTION_H_ 40 #include <unordered_set> 41 #include <unordered_map> 53 class ConnectParameters;
54 class PlatformOperationMessage;
55 class DisplayConfiguration;
60 class ConnectionConfiguration;
61 class ClientPlatformFactory;
62 class ClientBufferStream;
63 class ClientBufferStreamFactory;
64 class ConnectionSurfaceMap;
65 class DisplayConfiguration;
66 class EventHandlerRegister;
67 class AsyncBufferFactory;
72 class DisplayServerDebug;
73 class MirBasicRpcChannel;
92 class ThreadedDispatcher;
118 char const * get_error_message();
121 const char* app_name,
134 void pong(int32_t serial);
141 std::unique_ptr<mir::protobuf::DisplayConfiguration> snapshot_display_configuration()
const;
143 unsigned int formats_size,
unsigned int& valid_formats);
145 std::shared_ptr<mir::client::ClientBufferStream> make_consumer_stream(
159 void create_presentation_chain(
168 EGLNativeDisplayType egl_native_display();
174 void done_display_configure();
177 void done_set_base_display_configuration();
179 std::shared_ptr<mir::client::rpc::MirBasicRpcChannel>
rpc_channel()
const 188 return input_devices;
191 void allocate_buffer(
194 void release_buffer(
int buffer_id);
198 struct SurfaceCreationRequest
201 cb(cb), context(context), spec(spec),
202 response(std::make_shared<mir::protobuf::Surface>()),
203 wh(std::make_shared<MirWaitHandle>())
209 std::shared_ptr<mir::protobuf::Surface> response;
210 std::shared_ptr<MirWaitHandle> wh;
212 std::vector<std::shared_ptr<SurfaceCreationRequest>> surface_requests;
213 void surface_created(SurfaceCreationRequest*);
215 struct StreamCreationRequest
217 StreamCreationRequest(
219 callback(cb), context(context), parameters(params), response(std::make_shared<mir::protobuf::BufferStream>()),
220 wh(std::make_shared<MirWaitHandle>())
225 mir::protobuf::BufferStreamParameters
const parameters;
226 std::shared_ptr<mir::protobuf::BufferStream> response;
227 std::shared_ptr<MirWaitHandle>
const wh;
229 std::vector<std::shared_ptr<StreamCreationRequest>> stream_requests;
230 void stream_created(StreamCreationRequest*);
231 void stream_error(
std::string const& error_msg, std::shared_ptr<StreamCreationRequest>
const& request);
233 struct ChainCreationRequest
236 callback(cb), context(context),
237 response(std::make_shared<mir::protobuf::BufferStream>())
243 std::shared_ptr<mir::protobuf::BufferStream> response;
245 std::vector<std::shared_ptr<ChainCreationRequest>> context_requests;
246 void context_created(ChainCreationRequest*);
247 void chain_error(
std::string const& error_msg, std::shared_ptr<ChainCreationRequest>
const& request);
252 {
MirConnection*
const self; ~Deregisterer(); } deregisterer;
254 mutable std::mutex mutex;
256 std::shared_ptr<mir::client::ConnectionSurfaceMap> surface_map;
257 std::shared_ptr<mir::client::AsyncBufferFactory> buffer_factory;
258 std::shared_ptr<mir::client::rpc::MirBasicRpcChannel>
const channel;
261 std::shared_ptr<mir::logging::Logger>
const logger;
262 std::unique_ptr<mir::protobuf::Void> void_response;
263 std::unique_ptr<mir::protobuf::Connection> connect_result;
264 std::atomic<bool> connect_done;
265 std::unique_ptr<mir::protobuf::Void> ignored;
266 std::unique_ptr<mir::protobuf::ConnectParameters> connect_parameters;
267 std::unique_ptr<mir::protobuf::PlatformOperationMessage> platform_operation_reply;
268 std::unique_ptr<mir::protobuf::DisplayConfiguration> display_configuration_response;
269 std::unique_ptr<mir::protobuf::Void> set_base_display_configuration_response;
270 std::atomic<bool> disconnecting{
false};
273 int surface_error_id{-1};
275 std::shared_ptr<mir::client::ClientPlatformFactory>
const client_platform_factory;
276 std::shared_ptr<mir::client::ClientPlatform> platform;
277 std::shared_ptr<mir::client::ClientBufferFactory> client_buffer_factory;
278 std::shared_ptr<EGLNativeDisplayType> native_display;
280 std::shared_ptr<mir::input::receiver::InputPlatform>
const input_platform;
290 std::mutex release_wait_handle_guard;
291 std::vector<MirWaitHandle*> release_wait_handles;
293 std::shared_ptr<mir::client::DisplayConfiguration>
const display_configuration;
294 std::shared_ptr<mir::input::InputDevices>
const input_devices;
296 std::shared_ptr<mir::client::LifecycleControl>
const lifecycle_control;
298 std::shared_ptr<mir::client::PingHandler>
const ping_handler;
301 std::shared_ptr<mir::client::EventHandlerRegister>
const event_handler_register;
303 std::unique_ptr<google::protobuf::Closure>
const pong_callback;
305 std::unique_ptr<mir::dispatch::ThreadedDispatcher>
const eventloop;
307 std::shared_ptr<mir::client::ClientBufferStreamFactory> buffer_stream_factory;
309 struct SurfaceRelease;
310 struct StreamRelease;
315 void done_disconnect();
317 void released(SurfaceRelease);
318 void released(StreamRelease);
All things Mir.
Definition: atomic_callback.h:25
Definition: client_types.h:347
Definition: mir_surface.h:86
Definition: mir_surface.h:146
Definition: mir_wait_handle.h:31
Retrieved information about a loadable module.
Definition: client_types.h:219
Definition: mir_display_server_debug.h:32
std::shared_ptr< mir::input::InputDevices > const & the_input_devices() const
Definition: mir_connection.h:186
Definition: mir_presentation_chain.h:26
unsigned int width
Definition: touchspot_image.c:4
Definition: mir_prompt_session.h:49
Definition: client_context.h:29
std::shared_ptr< mir::client::rpc::MirBasicRpcChannel > rpc_channel() const
Definition: mir_connection.h:179
Definition: client_buffer_stream.h:69
error
Definition: connector_report_tp.h:56
unsigned int height
Definition: touchspot_image.c:5
Definition: mir_connection.h:96
Definition: connection_configuration.h:57
int const size
Definition: make_socket_rpc_channel.cpp:51
Definition: mir_display_server.h:33