diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-04-01 08:45:05 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-04-01 09:31:12 -0400 |
commit | 23268e84b36209d804621649b410ba3b72760f3f (patch) | |
tree | 9ec8392f6f48ffd2cfb5a97e4f6d627011fbe484 /gtk/inspector | |
parent | 16c1acc5397afffee31cbac7da2aea501f9ea21d (diff) | |
download | gtk+-23268e84b36209d804621649b410ba3b72760f3f.tar.gz |
inspector: Show Wayland protocols
This could be useful for somebody.
Diffstat (limited to 'gtk/inspector')
-rw-r--r-- | gtk/inspector/general.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/gtk/inspector/general.c b/gtk/inspector/general.c index 7593e278e6..0eab876b1e 100644 --- a/gtk/inspector/general.c +++ b/gtk/inspector/general.c @@ -60,6 +60,7 @@ #include "wayland/gdkwayland.h" #include <epoxy/egl.h> #include <xkbcommon/xkbcommon.h> +#include "wayland/gdkdisplay-wayland.h" #endif #ifdef GDK_WINDOWING_BROADWAY @@ -586,6 +587,62 @@ translate_subpixel_layout (GdkSubpixelLayout subpixel) } } +#ifdef GDK_WINDOWING_WAYLAND +static void +append_wayland_protocol_row (GtkInspectorGeneral *gen, + struct wl_proxy *proxy) +{ + const char *id; + unsigned int version; + char buf[64]; + GtkListBox *list; + + if (proxy == NULL) + return; + + list = GTK_LIST_BOX (gen->display_box); + + id = wl_proxy_get_class (proxy); + version = wl_proxy_get_version (proxy); + + g_snprintf (buf, sizeof (buf), "%u", version); + + add_label_row (gen, list, id, buf, 10); +} + +static void +add_wayland_protocols (GdkDisplay *display, + GtkInspectorGeneral *gen) +{ + if (GDK_IS_WAYLAND_DISPLAY (display)) + { + GdkWaylandDisplay *d = (GdkWaylandDisplay *) display; + + append_wayland_protocol_row (gen, (struct wl_proxy *)d->compositor); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->shm); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->xdg_wm_base); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->zxdg_shell_v6); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->gtk_shell); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->input_device); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->data_device_manager); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->subcompositor); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->pointer_gestures); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->primary_selection_manager); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->tablet_manager); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->xdg_exporter); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->xdg_exporter_v2); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->xdg_importer); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->xdg_importer_v2); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->keyboard_shortcuts_inhibit); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->server_decoration_manager); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->xdg_output_manager); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->idle_inhibit_manager); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->xdg_activation); + append_wayland_protocol_row (gen, (struct wl_proxy *)d->fractional_scale); + } +} +#endif + static void populate_display (GdkDisplay *display, GtkInspectorGeneral *gen) { @@ -621,6 +678,10 @@ populate_display (GdkDisplay *display, GtkInspectorGeneral *gen) gdk_display_is_rgba (display)); gtk_widget_set_visible (gen->display_composited, gdk_display_is_composited (display)); + +#ifdef GDK_WINDOWING_WAYLAND + add_wayland_protocols (display, gen); +#endif } static void |