18 #ifndef MIR_CLIENT_MIR_SURFACE_H_
19 #define MIR_CLIENT_MIR_SURFACE_H_
37 #include <unordered_set>
43 class ThreadedDispatcher;
55 class PersistentSurfaceId;
57 class SurfaceParameters;
66 class DisplayServerDebug;
70 class ClientBufferStream;
71 class ClientBufferStreamFactory;
133 std::string
const string_id;
148 std::shared_ptr<mir::client::ClientBufferStreamFactory>
const& buffer_stream_factory,
149 std::shared_ptr<mir::input::receiver::InputPlatform>
const& input_platform,
169 int* screen_x,
int* screen_y);
193 mutable std::mutex mutex;
195 void on_configured();
196 void on_cursor_configured();
199 MirPixelFormat convert_ipc_pf_to_geometry(google::protobuf::int32 pf)
const;
203 std::unique_ptr<mir::protobuf::Surface> surface;
204 std::unique_ptr<mir::protobuf::PersistentSurfaceId> persistent_id;
205 std::string error_message;
207 std::unique_ptr<mir::protobuf::Void> void_response;
211 std::unique_ptr<mir::protobuf::Void> modify_result;
220 std::shared_ptr<mir::client::ClientBufferStreamFactory>
const buffer_stream_factory;
221 std::shared_ptr<mir::client::ClientBufferStream> buffer_stream;
222 std::shared_ptr<mir::input::receiver::InputPlatform>
const input_platform;
223 std::shared_ptr<mir::input::receiver::XKBMapper>
const keymapper;
225 std::unique_ptr<mir::protobuf::SurfaceSetting> configure_result;
231 std::function<void(MirEvent const*)> handle_event_callback;
232 std::shared_ptr<mir::dispatch::ThreadedDispatcher> input_thread;
233 bool auto_resize_stream{
true};
MirWaitHandle * release_surface(mir_surface_callback callback, void *context)
Definition: mir_surface.cpp:372
All things Mir.
Definition: atomic_callback.h:25
mir::optional_value< AspectRatio > min_aspect
Definition: mir_surface.h:112
Definition: mir_surface.h:77
mir_surface_event_callback callback
Definition: mir_surface.h:119
Definition: mir_surface.h:136
void * context
Definition: mir_surface.h:120
MirConnection * connection
Definition: mir_surface.h:86
Definition: mir_surface.h:83
Definition: mir_wait_handle.h:31
int id() const
Definition: mir_surface.cpp:252
MirWaitHandle * request_persistent_id(mir_surface_id_callback callback, void *context)
Definition: mir_surface.cpp:282
mir::optional_value< int > max_height
Definition: mir_surface.h:109
MirWaitHandle * modify(MirSurfaceSpec const &changes)
Definition: mir_surface.cpp:656
mir::optional_value< MirBufferUsage > buffer_usage
Definition: mir_surface.h:92
mir::optional_value< int > width
Definition: mir_surface.h:89
mir::optional_value< EventHandler > event_handler
Definition: mir_surface.h:122
mir::optional_value< uint32_t > output_id
Definition: mir_surface.h:95
void handle_event(MirEvent const &e)
Definition: mir_surface.cpp:573
MirWaitHandle * configure(MirSurfaceAttrib a, int value)
Definition: mir_surface.cpp:429
void set_event_handler(mir_surface_event_callback callback, void *context)
Definition: mir_surface.cpp:550
mir::optional_value< MirSurfaceType > type
Definition: mir_surface.h:97
void request_and_wait_for_configure(MirSurfaceAttrib a, int value)
Definition: mir_surface.cpp:620
mir::optional_value< MirEdgeAttachment > edge_attachment
Definition: mir_surface.h:104
static bool is_valid(MirSurface *query)
Definition: mir_surface.cpp:259
MirWaitHandle * set_preferred_orientation(MirOrientationMode mode)
Definition: mir_surface.cpp:632
mir::optional_value< int > width_inc
Definition: mir_surface.h:110
MirSurfaceParameters get_parameters() const
Definition: mir_surface.cpp:234
char const * get_error_message()
Definition: mir_surface.cpp:241
Definition: mir_surface.h:125
MirPersistentId(std::string const &string_id)
Definition: mir_surface.cpp:151
MirWaitHandle * get_create_wait_handle()
Definition: mir_surface.cpp:305
Definition: mir_display_server_debug.h:32
mir_orientation_normal
Definition: display_configuration.cpp:33
unsigned width
Definition: mir_surface.h:83
mir::optional_value< std::vector< MirBufferStreamInfo > > streams
Definition: mir_surface.h:114
std::string const & as_string()
Definition: mir_surface.cpp:156
mir::optional_value< int > height_inc
Definition: mir_surface.h:111
mir::optional_value< int > min_width
Definition: mir_surface.h:106
mir::optional_value< MirRectangle > aux_rect
Definition: mir_surface.h:103
bool translate_to_screen_coordinates(int x, int y, int *screen_x, int *screen_y)
Definition: mir_surface.cpp:464
MirOrientation get_orientation() const
Definition: mir_surface.cpp:625
Definition: cursor_configuration.h:34
MirSurface & operator=(MirSurface const &)=delete
mir::optional_value< AspectRatio > max_aspect
Definition: mir_surface.h:113
mir::optional_value< std::vector< MirRectangle > > input_shape
Definition: mir_surface.h:115
mir::optional_value< MirOrientationMode > pref_orientation
Definition: mir_surface.h:99
mir::optional_value< std::string > surface_name
Definition: mir_surface.h:94
mir::optional_value< MirPixelFormat > pixel_format
Definition: mir_surface.h:91
MirWaitHandle * configure_cursor(MirCursorConfiguration const *cursor)
Definition: mir_surface.cpp:400
Definition: client_buffer_stream.h:45
Definition: mir_surface.h:117
~MirSurface()
Definition: mir_surface.cpp:219
mir::optional_value< int > height
Definition: mir_surface.h:90
error
Definition: connector_report_tp.h:60
Definition: mir_connection.h:88
Definition: event_private.h:178
mir::client::ClientBufferStream * get_buffer_stream()
Definition: mir_surface.cpp:637
int attrib(MirSurfaceAttrib a) const
Definition: mir_surface.cpp:535
unsigned height
Definition: mir_surface.h:83
MirSurface(MirSurface const &)=delete
std::unique_ptr< MirPersistentId > parent_id
Definition: mir_surface.h:102
mir::optional_value< int > max_width
Definition: mir_surface.h:108
mir::optional_value< MirSurfaceState > state
Definition: mir_surface.h:98
Definition: mir_display_server.h:33
MirSurfaceParameters is the structure of minimum required information that you must provide to Mir in...
Definition: client_types.h:157
mir::optional_value< MirSurface * > parent
Definition: mir_surface.h:101
mir::optional_value< int > min_height
Definition: mir_surface.h:107