18 #ifndef MIR_CLIENT_MIR_SURFACE_H_
19 #define MIR_CLIENT_MIR_SURFACE_H_
21 #include "mir_protobuf.pb.h"
36 #include <unordered_set>
45 class InputReceiverThread;
51 class ClientBufferStream;
52 class ClientBufferStreamFactory;
64 mir::protobuf::SurfaceParameters
serialize()
const;
96 mir::protobuf::DisplayServer::Stub& server,
97 mir::protobuf::Debug::Stub* debug,
98 std::shared_ptr<mir::client::ClientBufferStreamFactory>
const& buffer_stream_factory,
99 std::shared_ptr<mir::input::receiver::InputPlatform>
const& input_platform,
127 int* screen_x,
int* screen_y);
146 mutable std::mutex mutex;
148 void on_configured();
149 void on_cursor_configured();
150 void process_incoming_buffer();
152 MirPixelFormat convert_ipc_pf_to_geometry(google::protobuf::int32 pf)
const;
154 mir::protobuf::DisplayServer::Stub* server{
nullptr};
155 mir::protobuf::Debug::Stub* debug{
nullptr};
156 mir::protobuf::Surface surface;
157 mir::protobuf::BufferRequest buffer_request;
158 std::string error_message;
160 mir::protobuf::Void void_response;
168 std::shared_ptr<mir::client::ClientBufferStreamFactory>
const buffer_stream_factory;
169 std::shared_ptr<mir::client::ClientBufferStream> buffer_stream;
170 std::shared_ptr<mir::input::receiver::InputPlatform>
const input_platform;
172 mir::protobuf::SurfaceSetting configure_result;
178 std::function<void(MirEvent const*)> handle_event_callback;
179 std::shared_ptr<mir::input::receiver::InputReceiverThread> input_thread;
std::shared_ptr< mir::client::ClientBuffer > get_current_buffer()
Definition: mir_surface.cpp:324
MirWaitHandle * release_surface(mir_surface_callback callback, void *context)
Definition: mir_surface.cpp:293
All things Mir.
Definition: buffer_stream.h:37
Definition: mir_surface.h:58
Definition: mir_surface.h:86
MirConnection * connection
Definition: mir_surface.h:67
Definition: mir_wait_handle.h:31
uint32_t get_current_buffer_id() const
Definition: mir_surface.cpp:331
mir::protobuf::SurfaceParameters serialize() const
Definition: mir_surface.cpp:75
int id() const
Definition: mir_surface.cpp:187
Definition: dimensions.h:35
MirPixelFormat pixel_format
Definition: mir_surface.h:70
mir::optional_value< uint32_t > output_id
Definition: mir_surface.h:75
void handle_event(MirEvent const &e)
Definition: mir_surface.cpp:511
Definition: mir_native_buffer.h:30
MirWaitHandle * next_buffer(mir_surface_callback callback, void *context)
Definition: mir_surface.cpp:216
MirWaitHandle * configure(MirSurfaceAttrib a, int value)
Definition: mir_surface.cpp:363
mir::optional_value< MirSurfaceType > type
Definition: mir_surface.h:77
void request_and_wait_for_configure(MirSurfaceAttrib a, int value)
Definition: mir_surface.cpp:553
mir::optional_value< MirEdgeAttachment > edge_attachment
Definition: mir_surface.h:83
static bool is_valid(MirSurface *query)
Definition: mir_surface.cpp:194
MirWaitHandle * set_preferred_orientation(MirOrientationMode mode)
Definition: mir_surface.cpp:565
MirSurfaceParameters get_parameters() const
Definition: mir_surface.cpp:163
char const * get_error_message()
Definition: mir_surface.cpp:176
MirWaitHandle * get_create_wait_handle()
Definition: mir_surface.cpp:226
MirBufferUsage buffer_usage
Definition: mir_surface.h:71
MirEventDelegate may be used to specify (at surface creation time) callbacks for handling of events...
Definition: client_types.h:282
MirNativeBuffer * get_current_buffer_package()
Definition: mir_surface.cpp:316
Definition: dimensions.h:35
mir_orientation_normal
Definition: display_configuration.cpp:33
int width
Definition: mir_surface.h:68
mir::optional_value< MirRectangle > aux_rect
Definition: mir_surface.h:82
bool translate_to_screen_coordinates(int x, int y, int *screen_x, int *screen_y)
Definition: mir_surface.cpp:398
MirPlatformType platform_type()
Definition: mir_surface.cpp:540
MirOrientation get_orientation() const
Definition: mir_surface.cpp:558
Definition: cursor_configuration.h:26
MirSurface & operator=(MirSurface const &)=delete
mir::optional_value< MirOrientationMode > pref_orientation
Definition: mir_surface.h:79
int height
Definition: mir_surface.h:69
mir::optional_value< std::string > surface_name
Definition: mir_surface.h:74
MirWaitHandle * configure_cursor(MirCursorConfiguration const *cursor)
Definition: mir_surface.cpp:345
~MirSurface()
Definition: mir_surface.cpp:144
error
Definition: connector_report_tp.h:60
Definition: mir_connection.h:79
Retrieved information about a MirSurface.
Definition: client_types.h:181
Definition: event_deprecated.h:237
void request_and_wait_for_next_buffer()
Definition: mir_surface.cpp:548
int attrib(MirSurfaceAttrib a) const
Definition: mir_surface.cpp:470
void set_event_handler(MirEventDelegate const *delegate)
Definition: mir_surface.cpp:485
EGLNativeWindowType generate_native_window()
Definition: mir_surface.cpp:338
MirSurface(MirSurface const &)=delete
void get_cpu_region(MirGraphicsRegion ®ion)
Definition: mir_surface.cpp:204
mir::optional_value< MirSurfaceState > state
Definition: mir_surface.h:78
MirSurfaceParameters is the structure of minimum required information that you must provide to Mir in...
Definition: client_types.h:138
mir::optional_value< MirSurface * > parent
Definition: mir_surface.h:81