94
std::string name() const {return self->name();}
95
void hide() {self->hide();}
96
void show() {self->show();}
97
void send_display_config(mg::DisplayConfiguration const&config) {self->send_display_config(config);}
98
pid_t process_id() const {return self->process_id();}
99
void force_requests_to_complete() {self->force_requests_to_complete();}
100
void take_snapshot(msc::SnapshotCallback const& snapshot_taken) {self->take_snapshot(snapshot_taken);}
101
std::shared_ptr<msc::Surface> default_surface() const {return self->default_surface();}
102
void set_lifecycle_state(MirLifecycleState state) {self->set_lifecycle_state(state);}
94
std::string name() const override {return self->name();}
95
void hide() override {self->hide();}
96
void show() override {self->show();}
97
void send_display_config(mg::DisplayConfiguration const&config) override {self->send_display_config(config);}
98
pid_t process_id() const override {return self->process_id();}
99
void force_requests_to_complete() override {self->force_requests_to_complete();}
100
void take_snapshot(msc::SnapshotCallback const& snapshot_taken) override {self->take_snapshot(snapshot_taken);}
101
std::shared_ptr<msc::Surface> default_surface() const override {return self->default_surface();}
102
void set_lifecycle_state(MirLifecycleState state) override {self->set_lifecycle_state(state);}
105
105
std::shared_ptr<msc::Session> const self;
123
void swap_buffers(mg::Buffer* old_buffer, std::function<void(mg::Buffer* new_buffer)> complete)
123
void swap_buffers(mg::Buffer* old_buffer, std::function<void(mg::Buffer* new_buffer)> complete) override
125
125
self->swap_buffers(old_buffer, complete);
126
// If we have content (and we're not the first buffer -- first buffer
127
// is actually not enough in my experience; maybe a bug in Qt?)
128
if (old_buffer != NULL && !session->is_ready() && buffer_count++ == 2)
126
// Mark it available only after some content has been rendered
127
if (old_buffer != NULL && !session->is_ready() && buffer_count++ == 1)
129
128
session->mark_ready();
132
131
// mf::Surface methods
133
void force_requests_to_complete() {self->force_requests_to_complete();}
134
geom::Size size() const {return self->size();}
135
MirPixelFormat pixel_format() const {return self->pixel_format();}
136
bool supports_input() const {return self->supports_input();}
137
int client_input_fd() const {return self->client_input_fd();}
138
int configure(MirSurfaceAttrib attrib, int value) {return self->configure(attrib, value);}
140
// msc::Surface methods
141
std::string name() const {return self->name();}
142
MirSurfaceType type() const {return self->type();}
143
MirSurfaceState state() const {return self->state();}
144
void hide() {self->hide();}
145
void show() {self->show();}
146
void move_to(geom::Point const& top_left) {self->move_to(top_left);}
147
geom::Point top_left() const {return self->top_left();}
148
void take_input_focus(std::shared_ptr<msh::InputTargeter> const& targeter) {self->take_input_focus(targeter);}
149
void set_input_region(std::vector<geom::Rectangle> const& region) {self->set_input_region(region);}
150
void allow_framedropping(bool allow) {self->allow_framedropping(allow);}
151
void resize(geom::Size const& size) {self->resize(size);}
152
void set_transformation(glm::mat4 const& t) {self->set_transformation(t);}
153
float alpha() const {return self->alpha();}
154
void set_alpha(float alpha) {self->set_alpha(alpha);}
155
void with_most_recent_buffer_do(std::function<void(mg::Buffer&)> const& exec) {self->with_most_recent_buffer_do(exec);}
157
// msc::Surface methods
158
std::shared_ptr<mi::InputChannel> input_channel() const {return self->input_channel();}
159
void add_observer(std::shared_ptr<msc::SurfaceObserver> const& observer) {self->add_observer(observer);}
160
void remove_observer(std::shared_ptr<msc::SurfaceObserver> const& observer) {self->remove_observer(observer);}
132
void force_requests_to_complete() override {self->force_requests_to_complete();}
133
geom::Size size() const override {return self->size();}
134
MirPixelFormat pixel_format() const override {return self->pixel_format();}
135
bool supports_input() const override {return self->supports_input();}
136
int client_input_fd() const override {return self->client_input_fd();}
137
int configure(MirSurfaceAttrib attrib, int value) override {return self->configure(attrib, value);}
139
// msc::Surface methods
140
std::string name() const override {return self->name();}
141
geom::Size client_size() const override { return self->client_size(); };
142
geom::Rectangle input_bounds() const override { return self->input_bounds(); };
144
MirSurfaceType type() const override {return self->type();}
145
MirSurfaceState state() const override {return self->state();}
146
void hide() override {self->hide();}
147
void show() override {self->show();}
148
void move_to(geom::Point const& top_left) override {self->move_to(top_left);}
149
geom::Point top_left() const override {return self->top_left();}
150
void take_input_focus(std::shared_ptr<msh::InputTargeter> const& targeter) override {self->take_input_focus(targeter);}
151
void set_input_region(std::vector<geom::Rectangle> const& region) override {self->set_input_region(region);}
152
void allow_framedropping(bool allow) override {self->allow_framedropping(allow);}
153
void resize(geom::Size const& size) override {self->resize(size);}
154
void set_transformation(glm::mat4 const& t) override {self->set_transformation(t);}
155
float alpha() const override {return self->alpha();}
156
void set_alpha(float alpha) override {self->set_alpha(alpha);}
157
void with_most_recent_buffer_do(std::function<void(mg::Buffer&)> const& exec) override {self->with_most_recent_buffer_do(exec);}
159
// msc::Surface methods
160
std::shared_ptr<mi::InputChannel> input_channel() const override {return self->input_channel();}
161
void set_reception_mode(mi::InputReceptionMode mode) override { self->set_reception_mode(mode); }
162
void add_observer(std::shared_ptr<msc::SurfaceObserver> const& observer) override {self->add_observer(observer);}
163
void remove_observer(std::weak_ptr<msc::SurfaceObserver> const& observer) override {self->remove_observer(observer);}
162
165
// mi::Surface methods
163
bool contains(geom::Point const& point) const {return self->contains(point);}
166
bool input_area_contains(geom::Point const& point) const override {return self->input_area_contains(point);}
167
mi::InputReceptionMode reception_mode() const override { return self->reception_mode(); }
165
169
// mg::Renderable methods
166
std::shared_ptr<mg::Buffer> buffer(void const* user_id) const {return self->buffer(user_id);}
167
bool alpha_enabled() const {return self->alpha_enabled();}
168
geom::Rectangle screen_position() const {return self->screen_position();}
169
glm::mat4 transformation() const {return self->transformation();}
170
bool visible() const {return self->visible();}
171
bool shaped() const {return self->shaped();}
172
int buffers_ready_for_compositor() const {return self->buffers_ready_for_compositor();}
173
mg::Renderable::ID id() const {return self->id();}
170
std::unique_ptr<mg::Renderable> compositor_snapshot(void const* compositor_id) const override { return self->compositor_snapshot(compositor_id); }
176
173
std::shared_ptr<msc::Surface> const self;
369
373
for (auto const& surface : session->get_surfaces())
370
list.emplace_back(surface);
374
list.emplace_back(surface->compositor_snapshot(id));
373
377
session = shell->get_active_session();
376
380
for (auto const& surface : session->get_surfaces())
377
list.emplace_back(surface);
381
list.emplace_back(surface->compositor_snapshot(id));
383
void set_change_callback(std::function<void()> const& f) {self->set_change_callback(f);}
387
void add_observer(std::shared_ptr<msc::Observer> const& observer) override { self->add_observer(observer); }
388
void remove_observer(std::weak_ptr<msc::Observer> const& observer) override { self->remove_observer(observer); }
386
391
std::shared_ptr<mc::Scene> const self;
387
std::shared_ptr<SystemCompositorShell> const shell;
392
std::shared_ptr<SystemCompositorShell> shell;