diff --git a/wayland.c b/wayland.c index 3f65901b..1e98560a 100644 --- a/wayland.c +++ b/wayland.c @@ -1363,6 +1363,17 @@ handle_global(void *data, struct wl_registry *registry, &wp_single_pixel_buffer_manager_v1_interface, required); } +#if defined(HAVE_XDG_TOPLEVEL_ICON) + else if (streq(interface, xdg_toplevel_icon_v1_interface.name)) { + const uint32_t required = 1; + if (!verify_iface_version(interface, version, required)) + return; + + wayl->toplevel_icon_manager = wl_registry_bind( + wayl->registry, name, &xdg_toplevel_icon_v1_interface, required); + } +#endif + #if defined(FOOT_IME_ENABLED) && FOOT_IME_ENABLED else if (streq(interface, zwp_text_input_manager_v3_interface.name)) { const uint32_t required = 1; @@ -1679,6 +1690,10 @@ wayl_destroy(struct wayland *wayl) zwp_text_input_manager_v3_destroy(wayl->text_input_manager); #endif +#if defined(HAVE_XDG_TOPLEVEL_ICON) + if (wayl->toplevel_icon_manager != NULL) + xdg_toplevel_icon_manager_v1_destroy(wayl->toplevel_icon_manager); +#endif if (wayl->single_pixel_manager != NULL) wp_single_pixel_buffer_manager_v1_destroy(wayl->single_pixel_manager); if (wayl->fractional_scale_manager != NULL) diff --git a/wayland.h b/wayland.h index ca9c05fa..227e2a68 100644 --- a/wayland.h +++ b/wayland.h @@ -20,6 +20,10 @@ #include #include +#if defined(HAVE_XDG_TOPLEVEL_ICON) + #include +#endif + #include #include @@ -443,6 +447,10 @@ struct wayland { struct wp_single_pixel_buffer_manager_v1 *single_pixel_manager; +#if defined(HAVE_XDG_TOPLEVEL_ICON) + struct xdg_toplevel_icon_manager_v1 *toplevel_icon_manager; +#endif + bool presentation_timings; struct wp_presentation *presentation; uint32_t presentation_clock_id;