virtual ~wayland_proxy() {
// If this is the nullptr, then it means it already was destroyed by a
// custom wayland dtor
- logdebug("%s %p @ %p", __func__, this, this->proxy);
- if (proxy) {
+ if (this->proxy) {
+ logdebug("%s %p @ %p", __func__, this, this->proxy);
wl_proxy_destroy(reinterpret_cast<wl_proxy *>(proxy));
}
}
std::unique_ptr<registry> r;
display();
+ bool ok() const;
void roundtrip();
+ int dispatch();
};
// _ _
void add_global_handler(char const *iface, binder bind);
- void event_global(uint32_t name, char const *iface, uint32_t v);
- void event_global_remove(uint32_t name);
-
- static void s_global(void *data, struct wl_registry *r, uint32_t name,
- char const *iface, uint32_t v);
-
- static void s_global_remove(void *data, struct wl_registry *r,
- uint32_t name);
-
- static constexpr wl_registry_listener listener = {s_global, s_global_remove};
+ // Events
+ void global(uint32_t name, char const *iface, uint32_t v);
+ void global_remove(uint32_t name);
};
// _ _
struct output : wayland_proxy<wl_output> {
output(wl_registry *registry, uint32_t name, uint32_t version);
- void event_geometry(int32_t x, int32_t y, int32_t pw, int32_t ph,
- int32_t subpel, char const *make, char const *model,
- int32_t tx);
- void event_mode(uint32_t flags, int32_t w, int32_t h, int32_t r);
- void event_done();
- void event_scale(int32_t factor);
-
- static void s_geometry(void *data, struct wl_output *wl_output, int32_t x,
- int32_t y, int32_t physical_width,
- int32_t physical_height, int32_t subpixel,
- const char *make, const char *model,
- int32_t transform);
-
- static void s_mode(void *data, struct wl_output *wl_output, uint32_t flags,
- int32_t width, int32_t height, int32_t refresh);
-
- static void s_done(void *data, struct wl_output *wl_output);
-
- static void s_scale(void *data, struct wl_output *wl_output, int32_t factor);
-
- static constexpr wl_output_listener listener = {s_geometry, s_mode, s_done,
- s_scale};
-};
+ // Events
+ void geometry(int32_t x, int32_t y, int32_t pw, int32_t ph, int32_t subpel,
+ char const *make, char const *model, int32_t tx);
+ void mode(uint32_t flags, int32_t w, int32_t h, int32_t r);
+ void done();
+ void scale(int32_t factor);
};
+}
// _ __ __ _ _ __ ___ ___ ___ _ __ __ _ ___ ___
// | '_ \ / _` | '_ ` _ \ / _ \/ __| '_ \ / _` |/ __/ _ \
surface(uint32_t i, ivi_controller *c);
~surface() override;
- static constexpr ivi_controller_surface_listener listener = {};
+ // Events
+ void visibility(int32_t visibility);
+ void opacity(wl_fixed_t opacity);
+ void source_rectangle(int32_t x, int32_t y, int32_t width, int32_t height);
+ void destination_rectangle(int32_t x, int32_t y, int32_t width,
+ int32_t height);
+ void configuration(int32_t width, int32_t height);
+ void orientation(int32_t orientation);
+ void pixelformat(int32_t pixelformat);
+ void layer(struct ivi_controller_layer *layer);
+ void stats(uint32_t redraw_count, uint32_t frame_count,
+ uint32_t update_count, uint32_t pid, const char *process_name);
+ void destroyed();
+ void content(int32_t content_state);
};
// _
layer(uint32_t i, ivi_controller *c);
~layer() override;
- static constexpr ivi_controller_layer_listener listener = {};
+ // Events
+ void visibility(int32_t visibility);
+ void opacity(wl_fixed_t opacity);
+ void source_rectangle(int32_t x, int32_t y, int32_t width, int32_t height);
+ void destination_rectangle(int32_t x, int32_t y, int32_t width,
+ int32_t height);
+ void configuration(int32_t width, int32_t height);
+ void orientation(int32_t orientation);
+ void screen(struct wl_output *screen);
+ void destroyed();
};
//
controller(wl_registry *r, uint32_t name, uint32_t version);
~controller() override;
- void event_screen(uint32_t id, ivi_controller_screen *screen);
- void event_layer(uint32_t id);
- void event_surface(uint32_t id);
- void event_error(int32_t oid, int32_t otype, int32_t code, char const *text);
-
- // thunks...
- static void s_screen(void *data, struct ivi_controller *ivi_controller,
- uint32_t id_screen,
- struct ivi_controller_screen *screen);
-
- static void s_layer(void *data, struct ivi_controller *ivi_controller,
- uint32_t id_layer);
-
- static void s_surface(void *data, struct ivi_controller *ivi_controller,
- uint32_t id_surface);
-
- static void s_error(void *data, struct ivi_controller *ivi_controller,
- int32_t object_id, int32_t object_type,
- int32_t error_code, const char *error_text);
-
- static constexpr ivi_controller_listener listener = {s_screen, s_layer,
- s_surface, s_error};
+ // Events
+ void screen(uint32_t id, ivi_controller_screen *screen);
+ void layer(uint32_t id);
+ void surface(uint32_t id);
+ void error(int32_t oid, int32_t otype, int32_t code, char const *text);
};
}