summaryrefslogtreecommitdiff
path: root/gtk/inspector
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-04-01 08:45:05 -0400
committerMatthias Clasen <mclasen@redhat.com>2023-04-01 09:31:12 -0400
commit23268e84b36209d804621649b410ba3b72760f3f (patch)
tree9ec8392f6f48ffd2cfb5a97e4f6d627011fbe484 /gtk/inspector
parent16c1acc5397afffee31cbac7da2aea501f9ea21d (diff)
downloadgtk+-23268e84b36209d804621649b410ba3b72760f3f.tar.gz
inspector: Show Wayland protocols
This could be useful for somebody.
Diffstat (limited to 'gtk/inspector')
-rw-r--r--gtk/inspector/general.c61
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