19 #ifndef MIR_SCENE_BASIC_SURFACE_H_
20 #define MIR_SCENE_BASIC_SURFACE_H_
29 #include <glm/glm.hpp>
39 struct BufferIPCPackage;
42 namespace frontend {
class EventSink; }
55 class SurfaceConfigurator;
70 std::mutex
mutable mutex;
71 std::function<void()> notify_change;
81 void add(std::shared_ptr<SurfaceObserver>
const& observer);
82 void remove(std::shared_ptr<SurfaceObserver>
const& observer);
86 std::vector<std::shared_ptr<SurfaceObserver>> observers;
93 std::string
const&
name,
96 std::shared_ptr<compositor::BufferStream>
const&
buffer_stream,
98 std::shared_ptr<SurfaceConfigurator>
const& configurator,
99 std::shared_ptr<SceneReport>
const& report);
103 std::string
name()
const override;
105 float alpha()
const override;
119 std::shared_ptr<input::InputChannel>
input_channel()
const override;
120 void on_change(std::function<
void()> change_notification)
override;
122 void set_input_region(std::vector<geometry::Rectangle>
const& input_rectangles)
override;
124 std::shared_ptr<compositor::BufferStream>
buffer_stream()
const;
136 bool shaped()
const override;
139 std::shared_ptr<graphics::Buffer>
buffer(
void const*)
const override;
149 void take_input_focus(std::shared_ptr<shell::InputTargeter>
const& targeter)
override;
151 void hide()
override;
152 void show()
override;
154 void add_observer(std::shared_ptr<SurfaceObserver>
const& observer)
override;
155 void remove_observer(std::shared_ptr<SurfaceObserver>
const& observer)
override;
162 std::mutex
mutable guard;
164 std::string
const surface_name;
166 glm::mat4 transformation_matrix;
168 bool first_frame_posted;
170 const bool nonrectangular;
171 std::vector<geometry::Rectangle> input_rectangles;
172 std::shared_ptr<compositor::BufferStream>
const surface_buffer_stream;
173 std::shared_ptr<input::InputChannel>
const server_input_channel;
174 std::shared_ptr<SurfaceConfigurator>
const configurator;
175 std::shared_ptr<SceneReport>
const report;
184 #endif // MIR_SCENE_BASIC_SURFACE_H_
void allow_framedropping(bool)
Definition: basic_surface.cpp:189
ThreadsafeCallback & operator=(std::function< void()> const ¬ify_change)
Definition: basic_surface.cpp:46
std::shared_ptr< input::InputChannel > input_channel() const override
Definition: basic_surface.cpp:213
std::shared_ptr< graphics::Buffer > snapshot_buffer() const
Definition: basic_surface.cpp:194
void hide() override
Definition: basic_surface.cpp:436
~BasicSurface() noexcept
Definition: basic_surface.cpp:123
std::string name() const override
Definition: basic_surface.cpp:133
MirPixelFormat pixel_format() const
Definition: basic_surface.cpp:168
void show() override
Definition: basic_surface.cpp:441
std::shared_ptr< graphics::Buffer > buffer(void const *) const override
Return the next buffer that should be composited/rendered.
Definition: basic_surface.cpp:322
bool contains(geometry::Point const &point) const override
Definition: basic_surface.cpp:261
void attrib_change(MirSurfaceAttrib attrib, int value) override
Definition: basic_surface.cpp:61
int configure(MirSurfaceAttrib attrib, int value) override
Definition: basic_surface.cpp:394
void swap_buffers(graphics::Buffer *old_buffer, std::function< void(graphics::Buffer *new_buffer)> complete)
Definition: basic_surface.cpp:173
void set_hidden(bool is_hidden)
Definition: basic_surface.cpp:153
void resize(geometry::Size const &size) override
Definition: basic_surface.cpp:229
std::shared_ptr< compositor::BufferStream > buffer_stream() const
Definition: basic_surface.cpp:128
Definition: surface_observer.h:30
geometry::Point top_left() const override
Definition: basic_surface.cpp:255
void take_input_focus(std::shared_ptr< shell::InputTargeter > const &targeter) override
Definition: basic_surface.cpp:389
bool visible() const
TODO: Its a bit questionable that we have this member function, why not just trim the renderable from...
Definition: basic_surface.cpp:311
bool shaped() const override
Definition: basic_surface.cpp:317
float alpha() const override
Definition: basic_surface.cpp:147
geometry::Rectangle screen_position() const override
Definition: basic_surface.cpp:332
Definition: basic_surface.h:58
glm::mat4 transformation() const override
Transformation returns the transformation matrix that should be applied to the surface.
Definition: basic_surface.cpp:305
MirSurfaceState state() const override
Definition: basic_surface.cpp:368
geometry::Size size() const override
Definition: basic_surface.cpp:162
void set_input_region(std::vector< geometry::Rectangle > const &input_rectangles) override
Definition: basic_surface.cpp:223
void resize(geometry::Size const &size) override
Definition: basic_surface.cpp:69
void with_most_recent_buffer_do(std::function< void(graphics::Buffer &)> const &exec) override
Definition: basic_surface.cpp:342
Definition: basic_surface.h:89
int client_input_fd() const
Definition: basic_surface.cpp:206
ThreadsafeCallback(std::function< void()> const ¬ify_change)
Definition: basic_surface.cpp:43
void set_alpha(float alpha) override
Definition: basic_surface.cpp:286
void set_transformation(glm::mat4 const &) override
Definition: basic_surface.cpp:296
void add(std::shared_ptr< SurfaceObserver > const &observer)
Definition: basic_surface.cpp:77
Definition: rectangle.h:33
Definition: basic_surface.h:74
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< SurfaceConfigurator > const &configurator, std::shared_ptr< SceneReport > const &report)
Definition: basic_surface.cpp:92
void frame_posted()
Definition: basic_surface.cpp:277
void on_change(std::function< void()> change_notification) override
Definition: basic_surface.cpp:218
MirSurfaceType type() const override
Definition: basic_surface.cpp:350
void force_requests_to_complete()
Definition: basic_surface.cpp:118
void remove_observer(std::shared_ptr< SurfaceObserver > const &observer) override
Definition: basic_surface.cpp:452
bool alpha_enabled() const override
Definition: basic_surface.cpp:327
int const size
Definition: make_socket_rpc_channel.cpp:50
int buffers_ready_for_compositor() const override
Definition: basic_surface.cpp:337
bool supports_input() const
Definition: basic_surface.cpp:199
void move_to(geometry::Point const &top_left) override
Definition: basic_surface.cpp:138
void operator()() const
Definition: basic_surface.cpp:53
void add_observer(std::shared_ptr< SurfaceObserver > const &observer) override
Definition: basic_surface.cpp:447