19 #ifndef MIR_SCENE_BASIC_SURFACE_H_
20 #define MIR_SCENE_BASIC_SURFACE_H_
31 #include <glm/glm.hpp>
42 struct BufferIPCPackage;
45 namespace frontend {
class EventSink; }
59 class CursorStreamImageAdapter;
68 std::shared_ptr<compositor::BufferStream>
const&
buffer_stream,
70 std::shared_ptr<input::InputSender>
const& sender,
71 std::shared_ptr<graphics::CursorImage>
const&
cursor_image,
72 std::shared_ptr<SceneReport>
const& report);
77 std::weak_ptr<Surface>
const&
parent,
79 std::shared_ptr<compositor::BufferStream>
const& buffer_stream,
80 std::shared_ptr<input::InputChannel>
const& input_channel,
81 std::shared_ptr<input::InputSender>
const& sender,
82 std::shared_ptr<graphics::CursorImage>
const& cursor_image,
83 std::shared_ptr<SceneReport>
const& report);
89 float alpha()
const override;
96 void set_streams(std::list<scene::StreamInfo>
const& streams)
override;
100 std::shared_ptr<input::InputChannel>
input_channel()
const override;
104 void set_input_region(std::vector<geometry::Rectangle>
const& input_rectangles)
override;
106 std::shared_ptr<compositor::BufferStream>
buffer_stream()
const;
126 void hide()
override;
127 void show()
override;
129 void set_cursor_image(std::shared_ptr<graphics::CursorImage>
const& image)
override;
130 std::shared_ptr<graphics::CursorImage>
cursor_image()
const override;
139 std::shared_ptr<Surface>
parent()
const override;
141 void add_observer(std::shared_ptr<SurfaceObserver>
const& observer)
override;
142 void remove_observer(std::weak_ptr<SurfaceObserver>
const& observer)
override;
146 void set_keymap(xkb_rule_names
const& rules)
override;
151 bool visible(std::unique_lock<std::mutex>&)
const;
156 int set_swap_interval(
int);
161 std::mutex
mutable guard;
164 glm::mat4 transformation_matrix;
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<graphics::CursorImage> cursor_image_;
174 std::shared_ptr<SceneReport>
const report;
175 std::weak_ptr<Surface>
const parent_;
177 std::list<StreamInfo> layers;
181 int swapinterval_ = 1;
187 std::unique_ptr<CursorStreamImageAdapter>
const cursor_stream_adapter;
195 #endif // MIR_SCENE_BASIC_SURFACE_H_
void set_keymap(xkb_rule_names const &rules) override
Definition: basic_surface.cpp:840
std::shared_ptr< frontend::BufferStream > primary_buffer_stream() const override
Definition: basic_surface.cpp:290
int query(MirSurfaceAttrib attrib) const override
Definition: basic_surface.cpp:580
geometry::Rectangle input_bounds() const override
Definition: basic_surface.cpp:351
All things Mir.
Definition: atomic_callback.h:25
void set_cursor_stream(std::shared_ptr< frontend::BufferStream > const &stream, geometry::Displacement const &hotspot) override
Definition: basic_surface.cpp:682
std::shared_ptr< input::InputChannel > input_channel() const override
Definition: basic_surface.cpp:309
std::shared_ptr< graphics::CursorImage > cursor_image() const override
Definition: basic_surface.cpp:619
void hide() override
Definition: basic_surface.cpp:597
void remove_observer(std::weak_ptr< SurfaceObserver > const &observer) override
Definition: basic_surface.cpp:748
~BasicSurface() noexcept
Definition: basic_surface.cpp:239
void set_reception_mode(input::InputReceptionMode mode) override
Definition: basic_surface.cpp:428
void set_cursor_image(std::shared_ptr< graphics::CursorImage > const &image) override
Definition: basic_surface.cpp:607
input::InputReceptionMode reception_mode() const override
Definition: basic_surface.cpp:423
void consume(MirEvent const &event) override
Definition: basic_surface.cpp:835
bool visible() const override
Definition: basic_surface.cpp:409
std::string name() const override
Definition: basic_surface.cpp:249
void show() override
Definition: basic_surface.cpp:602
int configure(MirSurfaceAttrib attrib, int value) override
Definition: basic_surface.cpp:547
void set_orientation(MirOrientation orientation) override
Definition: basic_surface.cpp:395
int dpi() const
Definition: basic_surface.cpp:693
void set_hidden(bool is_hidden)
Definition: basic_surface.cpp:269
void resize(geometry::Size const &size) override
Definition: basic_surface.cpp:320
std::shared_ptr< compositor::BufferStream > buffer_stream() const
Definition: basic_surface.cpp:244
geometry::Point top_left() const override
Top-left corner (of the window frame if present)
Definition: basic_surface.cpp:345
int buffers_ready_for_compositor(void const *compositor_id) const override
Definition: basic_surface.cpp:826
float alpha() const override
Definition: basic_surface.cpp:263
void set_cursor_from_buffer(graphics::Buffer &buffer, geometry::Displacement const &hotspot)
Definition: basic_surface.cpp:665
std::shared_ptr< Surface > parent() const override
Definition: basic_surface.cpp:758
MirSurfaceState state() const override
Definition: basic_surface.cpp:464
geometry::Size size() const override
Size of the surface including window frame (if any)
Definition: basic_surface.cpp:278
void set_input_region(std::vector< geometry::Rectangle > const &input_rectangles) override
Sets the input region for this surface.
Definition: basic_surface.cpp:314
void rename(std::string const &title) override
Definition: basic_surface.cpp:845
Definition: basic_surface.h:61
Definition: displacement.h:32
graphics::RenderableList generate_renderables(compositor::CompositorID id) const override
Definition: basic_surface.cpp:870
void set_streams(std::list< scene::StreamInfo > const &streams) override
Definition: basic_surface.cpp:854
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:358
int client_input_fd() const override
Definition: basic_surface.cpp:302
void set_alpha(float alpha) override
Definition: basic_surface.cpp:386
void const * CompositorID
Definition: compositor_id.h:27
void set_transformation(glm::mat4 const &) override
Definition: basic_surface.cpp:400
geometry::Size client_size() const override
Size of the client area of the surface (excluding any decorations)
Definition: basic_surface.cpp:284
std::vector< std::shared_ptr< Renderable > > RenderableList
Definition: renderable.h:79
Definition: rectangle.h:33
Definition: surface_observers.h:30
bool supports_input() const override
Definition: basic_surface.cpp:295
void request_client_surface_close() override
Definition: basic_surface.cpp:688
Definition: event_private.h:178
MirSurfaceType type() const override
Definition: basic_surface.cpp:437
void move_to(geometry::Point const &top_left) override
Definition: basic_surface.cpp:254
void add_observer(std::shared_ptr< SurfaceObserver > const &observer) override
Definition: basic_surface.cpp:741