+void layer::set_visibility(uint32_t visibility) {
+ ivi_controller_layer_set_visibility(this->proxy, visibility);
+}
+
+void layer::set_opacity(wl_fixed_t opacity) {
+ ivi_controller_layer_set_opacity(this->proxy, opacity);
+}
+
+void layer::set_source_rectangle(int32_t x, int32_t y, int32_t width,
+ int32_t height) {
+ ivi_controller_layer_set_source_rectangle(this->proxy, x, y, width, height);
+}
+
+void layer::set_destination_rectangle(int32_t x, int32_t y, int32_t width,
+ int32_t height) {
+ ivi_controller_layer_set_destination_rectangle(this->proxy, x, y, width,
+ height);
+}
+
+void layer::set_configuration(int32_t width, int32_t height) {
+ ivi_controller_layer_set_configuration(this->proxy, width, height);
+}
+
+void layer::set_orientation(int32_t orientation) {
+ ivi_controller_layer_set_orientation(this->proxy, orientation);
+}
+
+void layer::screenshot(const char *filename) {
+ ivi_controller_layer_screenshot(this->proxy, filename);
+}
+
+void layer::clear_surfaces() {
+ ivi_controller_layer_clear_surfaces(this->proxy);
+}
+
+void layer::add_surface(struct surface *surface) {
+ ivi_controller_layer_add_surface(this->proxy, surface->proxy);
+}
+
+void layer::remove_surface(struct surface *surface) {
+ ivi_controller_layer_remove_surface(this->proxy, surface->proxy);
+}
+
+void layer::set_render_order(std::vector<uint32_t> const &ro) {
+ struct wl_array wlro {
+ .size = ro.size() * sizeof(ro[0]), .alloc = ro.capacity() * sizeof(ro[0]),
+ .data = const_cast<void *>(static_cast<void const *>(ro.data()))
+ };
+ ivi_controller_layer_set_render_order(this->proxy, &wlro);
+}
+
+void controller::layer_visibility(uint32_t id, int32_t visibility) {