19 #ifndef MIR_SCENE_BASIC_SURFACE_H_
20 #define MIR_SCENE_BASIC_SURFACE_H_
30 #include <glm/glm.hpp>
40 struct BufferIPCPackage;
43 namespace frontend {
class EventSink; }
57 class SurfaceConfigurator;
81 std::string
const&
name,
84 std::shared_ptr<compositor::BufferStream>
const&
buffer_stream,
86 std::shared_ptr<input::InputSender>
const& sender,
87 std::shared_ptr<SurfaceConfigurator>
const& configurator,
88 std::shared_ptr<graphics::CursorImage>
const&
cursor_image,
89 std::shared_ptr<SceneReport>
const& report);
93 std::string
name()
const override;
95 float alpha()
const override;
110 std::shared_ptr<input::InputChannel>
input_channel()
const override;
114 void set_input_region(std::vector<geometry::Rectangle>
const& input_rectangles)
override;
116 std::shared_ptr<compositor::BufferStream>
buffer_stream()
const;
129 std::unique_ptr<graphics::Renderable>
compositor_snapshot(
void const* compositor_id)
const;
136 void take_input_focus(std::shared_ptr<shell::InputTargeter>
const& targeter)
override;
139 void hide()
override;
140 void show()
override;
143 std::shared_ptr<graphics::CursorImage>
cursor_image()
const;
145 void add_observer(std::shared_ptr<SurfaceObserver>
const& observer)
override;
146 void remove_observer(std::weak_ptr<SurfaceObserver>
const& observer)
override;
151 bool visible(std::unique_lock<std::mutex>&)
const;
156 int set_swap_interval(
int);
160 std::mutex
mutable guard;
161 std::string
const surface_name;
163 glm::mat4 transformation_matrix;
165 bool first_frame_posted;
168 const bool nonrectangular;
169 std::vector<geometry::Rectangle> custom_input_rectangles;
170 std::shared_ptr<compositor::BufferStream>
const surface_buffer_stream;
171 std::shared_ptr<input::InputChannel>
const server_input_channel;
172 std::shared_ptr<input::InputSender>
const input_sender;
173 std::shared_ptr<SurfaceConfigurator>
const configurator;
174 std::shared_ptr<graphics::CursorImage> cursor_image_;
175 std::shared_ptr<SceneReport>
const report;
177 void initialize_attributes();
184 #endif // MIR_SCENE_BASIC_SURFACE_H_
void transformation_set_to(glm::mat4 const &t) override
Definition: basic_surface.cpp:86
geometry::Rectangle input_bounds() const override
Definition: basic_surface.cpp:289
All things Mir.
Definition: aging_buffer.h:24
void frame_posted(int frames_available) override
Definition: basic_surface.cpp:68
int query(MirSurfaceAttrib attrib) override
Definition: basic_surface.cpp:511
void allow_framedropping(bool)
Definition: basic_surface.cpp:223
void set_cursor_image(std::shared_ptr< graphics::CursorImage > const &image)
Definition: basic_surface.cpp:531
std::shared_ptr< input::InputChannel > input_channel() const override
Definition: basic_surface.cpp:247
std::shared_ptr< graphics::Buffer > snapshot_buffer() const
Definition: basic_surface.cpp:228
void hide() override
Definition: basic_surface.cpp:521
void remove_observer(std::weak_ptr< SurfaceObserver > const &observer) override
Definition: basic_surface.cpp:599
~BasicSurface() noexcept
Definition: basic_surface.cpp:151
void set_reception_mode(input::InputReceptionMode mode) override
Definition: basic_surface.cpp:364
input::InputReceptionMode reception_mode() const override
Definition: basic_surface.cpp:359
std::string name() const override
Definition: basic_surface.cpp:161
MirPixelFormat pixel_format() const
Definition: basic_surface.cpp:202
void resized_to(geometry::Size const &size) override
Definition: basic_surface.cpp:50
void show() override
Definition: basic_surface.cpp:526
void alpha_set_to(float alpha) override
Definition: basic_surface.cpp:74
int configure(MirSurfaceAttrib attrib, int value) override
Definition: basic_surface.cpp:477
void set_orientation(MirOrientation orientation) override
Definition: basic_surface.cpp:334
void swap_buffers(graphics::Buffer *old_buffer, std::function< void(graphics::Buffer *new_buffer)> complete)
Definition: basic_surface.cpp:207
int dpi() const
Definition: basic_surface.cpp:549
void set_hidden(bool is_hidden)
Definition: basic_surface.cpp:181
void resize(geometry::Size const &size) override
Definition: basic_surface.cpp:258
std::shared_ptr< compositor::BufferStream > buffer_stream() const
Definition: basic_surface.cpp:156
Definition: surface_observer.h:42
geometry::Point top_left() const override
Top-left corner (of the window frame if present)
Definition: basic_surface.cpp:283
void take_input_focus(std::shared_ptr< shell::InputTargeter > const &targeter) override
Definition: basic_surface.cpp:472
void reception_mode_set_to(input::InputReceptionMode mode) override
Definition: basic_surface.cpp:98
void moved_to(geometry::Point const &top_left) override
Definition: basic_surface.cpp:56
bool visible() const
Definition: basic_surface.cpp:348
Definition: cursor_image.h:30
std::shared_ptr< graphics::CursorImage > cursor_image() const
Definition: basic_surface.cpp:542
float alpha() const override
Definition: basic_surface.cpp:175
void cursor_image_set_to(graphics::CursorImage const &image) override
Definition: basic_surface.cpp:92
BasicSurface(std::string const &name, geometry::Rectangle rect, bool nonrectangular, std::shared_ptr< compositor::BufferStream > const &buffer_stream, std::shared_ptr< input::InputChannel > const &input_channel, std::shared_ptr< input::InputSender > const &sender, std::shared_ptr< SurfaceConfigurator > const &configurator, std::shared_ptr< graphics::CursorImage > const &cursor_image, std::shared_ptr< SceneReport > const &report)
Definition: basic_surface.cpp:105
MirSurfaceState state() const override
Definition: basic_surface.cpp:408
geometry::Size size() const override
Size of the surface including window frame (if any)
Definition: basic_surface.cpp:190
void set_input_region(std::vector< geometry::Rectangle > const &input_rectangles) override
Sets the input region for this surface.
Definition: basic_surface.cpp:252
void orientation_set_to(MirOrientation orientation) override
Definition: basic_surface.cpp:80
void with_most_recent_buffer_do(std::function< void(graphics::Buffer &)> const &exec) override
Definition: basic_surface.cpp:373
Definition: basic_surface.h:77
int client_input_fd() const
Definition: basic_surface.cpp:240
bool input_area_contains(geometry::Point const &point) const override
Definition: basic_surface.cpp:296
void attrib_changed(MirSurfaceAttrib attrib, int value) override
Definition: basic_surface.cpp:44
void set_alpha(float alpha) override
Definition: basic_surface.cpp:325
void set_transformation(glm::mat4 const &) override
Definition: basic_surface.cpp:339
geometry::Size client_size() const override
Size of the client area of the surface (excluding any decorations)
Definition: basic_surface.cpp:196
Definition: rectangle.h:33
Definition: basic_observers.h:30
Definition: basic_surface.h:59
void hidden_set_to(bool hide) override
Definition: basic_surface.cpp:62
std::unique_ptr< graphics::Renderable > compositor_snapshot(void const *compositor_id) const
Definition: basic_surface.cpp:678
MirSurfaceType type() const override
Definition: basic_surface.cpp:381
void force_requests_to_complete()
Definition: basic_surface.cpp:146
void consume(MirEvent const &event)
Definition: basic_surface.cpp:694
int const size
Definition: make_socket_rpc_channel.cpp:51
bool supports_input() const
Definition: basic_surface.cpp:233
void move_to(geometry::Point const &top_left) override
Definition: basic_surface.cpp:166
void add_observer(std::shared_ptr< SurfaceObserver > const &observer) override
Definition: basic_surface.cpp:594