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; }
84 std::shared_ptr<compositor::BufferStream>
const&
buffer_stream,
86 std::shared_ptr<input::InputSender>
const& sender,
87 std::shared_ptr<graphics::CursorImage>
const&
cursor_image,
88 std::shared_ptr<SceneReport>
const& report);
93 std::weak_ptr<Surface>
const&
parent,
95 std::shared_ptr<compositor::BufferStream>
const& buffer_stream,
96 std::shared_ptr<input::InputChannel>
const& input_channel,
97 std::shared_ptr<input::InputSender>
const& sender,
98 std::shared_ptr<graphics::CursorImage>
const& cursor_image,
99 std::shared_ptr<SceneReport>
const& report);
105 float alpha()
const override;
120 std::shared_ptr<input::InputChannel>
input_channel()
const override;
124 void set_input_region(std::vector<geometry::Rectangle>
const& input_rectangles)
override;
126 std::shared_ptr<compositor::BufferStream>
buffer_stream()
const;
139 std::unique_ptr<graphics::Renderable>
compositor_snapshot(
void const* compositor_id)
const override;
147 void take_input_focus(std::shared_ptr<shell::InputTargeter>
const& targeter)
override;
150 void hide()
override;
151 void show()
override;
153 void set_cursor_image(std::shared_ptr<graphics::CursorImage>
const& image)
override;
154 std::shared_ptr<graphics::CursorImage>
cursor_image()
const override;
158 std::shared_ptr<Surface>
parent()
const override;
160 void add_observer(std::shared_ptr<SurfaceObserver>
const& observer)
override;
161 void remove_observer(std::weak_ptr<SurfaceObserver>
const& observer)
override;
166 bool visible(std::unique_lock<std::mutex>&)
const;
171 int set_swap_interval(
int);
176 std::mutex
mutable guard;
179 glm::mat4 transformation_matrix;
181 bool first_frame_posted;
184 const bool nonrectangular;
185 std::vector<geometry::Rectangle> custom_input_rectangles;
186 std::shared_ptr<compositor::BufferStream>
const surface_buffer_stream;
187 std::shared_ptr<input::InputChannel>
const server_input_channel;
188 std::shared_ptr<input::InputSender>
const input_sender;
189 std::shared_ptr<graphics::CursorImage> cursor_image_;
190 std::shared_ptr<SceneReport>
const report;
191 std::weak_ptr<Surface>
const parent_;
196 int swapinterval_ = 1;
206 #endif // MIR_SCENE_BASIC_SURFACE_H_
void transformation_set_to(glm::mat4 const &t) override
Definition: basic_surface.cpp:85
geometry::Rectangle input_bounds() const override
Definition: basic_surface.cpp:303
All things Mir.
Definition: buffer_stream.h:37
void frame_posted(int frames_available) override
Definition: basic_surface.cpp:67
int query(MirSurfaceAttrib attrib) override
Definition: basic_surface.cpp:546
std::shared_ptr< input::InputChannel > input_channel() const override
Definition: basic_surface.cpp:261
std::shared_ptr< graphics::Buffer > snapshot_buffer() const
Definition: basic_surface.cpp:242
std::shared_ptr< graphics::CursorImage > cursor_image() const override
Definition: basic_surface.cpp:584
void hide() override
Definition: basic_surface.cpp:563
void remove_observer(std::weak_ptr< SurfaceObserver > const &observer) override
Definition: basic_surface.cpp:645
~BasicSurface() noexcept
Definition: basic_surface.cpp:157
void set_reception_mode(input::InputReceptionMode mode) override
Definition: basic_surface.cpp:378
void set_cursor_image(std::shared_ptr< graphics::CursorImage > const &image) override
Definition: basic_surface.cpp:573
input::InputReceptionMode reception_mode() const override
Definition: basic_surface.cpp:373
void consume(MirEvent const &event) override
Definition: basic_surface.cpp:742
bool visible() const override
Definition: basic_surface.cpp:362
std::string name() const override
Definition: basic_surface.cpp:170
void resized_to(geometry::Size const &size) override
Definition: basic_surface.cpp:49
void show() override
Definition: basic_surface.cpp:568
void force_requests_to_complete() override
Definition: basic_surface.cpp:152
void alpha_set_to(float alpha) override
Definition: basic_surface.cpp:73
void client_surface_close_requested() override
Definition: basic_surface.cpp:103
int configure(MirSurfaceAttrib attrib, int value) override
Definition: basic_surface.cpp:511
void set_orientation(MirOrientation orientation) override
Definition: basic_surface.cpp:348
int dpi() const
Definition: basic_surface.cpp:595
void set_hidden(bool is_hidden)
Definition: basic_surface.cpp:190
void resize(geometry::Size const &size) override
Definition: basic_surface.cpp:272
std::shared_ptr< compositor::BufferStream > buffer_stream() const
Definition: basic_surface.cpp:165
void allow_framedropping(bool) override
Definition: basic_surface.cpp:237
Definition: surface_observer.h:42
geometry::Point top_left() const override
Top-left corner (of the window frame if present)
Definition: basic_surface.cpp:297
void take_input_focus(std::shared_ptr< shell::InputTargeter > const &targeter) override
Definition: basic_surface.cpp:506
void reception_mode_set_to(input::InputReceptionMode mode) override
Definition: basic_surface.cpp:97
void moved_to(geometry::Point const &top_left) override
Definition: basic_surface.cpp:55
int buffers_ready_for_compositor(void const *compositor_id) const override
Definition: basic_surface.cpp:736
Definition: cursor_image.h:30
std::unique_ptr< graphics::Renderable > compositor_snapshot(void const *compositor_id) const override
Definition: basic_surface.cpp:721
float alpha() const override
Definition: basic_surface.cpp:184
std::shared_ptr< Surface > parent() const override
Definition: basic_surface.cpp:653
void cursor_image_set_to(graphics::CursorImage const &image) override
Definition: basic_surface.cpp:91
MirSurfaceState state() const override
Definition: basic_surface.cpp:422
geometry::Size size() const override
Size of the surface including window frame (if any)
Definition: basic_surface.cpp:199
void set_input_region(std::vector< geometry::Rectangle > const &input_rectangles) override
Sets the input region for this surface.
Definition: basic_surface.cpp:266
void orientation_set_to(MirOrientation orientation) override
Definition: basic_surface.cpp:79
void with_most_recent_buffer_do(std::function< void(graphics::Buffer &)> const &exec) override
Definition: basic_surface.cpp:387
Definition: basic_surface.h:77
MirPixelFormat pixel_format() const override
Definition: basic_surface.cpp:211
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< graphics::CursorImage > const &cursor_image, std::shared_ptr< SceneReport > const &report)
bool input_area_contains(geometry::Point const &point) const override
Definition: basic_surface.cpp:310
void attrib_changed(MirSurfaceAttrib attrib, int value) override
Definition: basic_surface.cpp:43
int client_input_fd() const override
Definition: basic_surface.cpp:254
void set_alpha(float alpha) override
Definition: basic_surface.cpp:339
void set_transformation(glm::mat4 const &) override
Definition: basic_surface.cpp:353
geometry::Size client_size() const override
Size of the client area of the surface (excluding any decorations)
Definition: basic_surface.cpp:205
Definition: rectangle.h:33
Definition: basic_observers.h:28
Definition: basic_surface.h:58
void hidden_set_to(bool hide) override
Definition: basic_surface.cpp:61
void swap_buffers(graphics::Buffer *old_buffer, std::function< void(graphics::Buffer *new_buffer)> complete) override
Definition: basic_surface.cpp:216
bool supports_input() const override
Definition: basic_surface.cpp:247
void request_client_surface_close() override
Definition: basic_surface.cpp:590
Definition: event_deprecated.h:237
MirSurfaceType type() const override
Definition: basic_surface.cpp:395
int const size
Definition: make_socket_rpc_channel.cpp:51
void move_to(geometry::Point const &top_left) override
Definition: basic_surface.cpp:175
void add_observer(std::shared_ptr< SurfaceObserver > const &observer) override
Definition: basic_surface.cpp:640