Looking into the 3.24 source code, it feels like not all widgets will have a individual gdkwindow.
typically there is only one gdkwindow that contains all the gtkwindow and all of its children, and in case of wayland, i suspect there is only one giant wayland surface for the parent gtkwindow and its children gtkwidgets, rather than each of them have individual gdkwindow and wl_surface.
so will gdk_wayland_window_get_wl_surface(gtk_widget_get_window(SOME_WIDGET_INSIDE_GTKWINDOW)) give the same wl_surface for all the child widget? Please Ignore all the widgets/window that has subsurface in this case.