Commit ca77de05 authored by Olivier Fourdan's avatar Olivier Fourdan

wayland: Add API to retrieve the Wayland output

In Wayland, surfaces get an enter/leave notification each time they
enter or leave an output.

Add an API to GdkWaylandWindow to retrieve the output the window has
last entered.

https://bugzilla.gnome.org/show_bug.cgi?id=766566
parent d288a134
...@@ -1245,6 +1245,7 @@ gdk_wayland_display_get_wl_display ...@@ -1245,6 +1245,7 @@ gdk_wayland_display_get_wl_display
gdk_wayland_display_get_xdg_shell gdk_wayland_display_get_xdg_shell
gdk_wayland_window_get_wl_surface gdk_wayland_window_get_wl_surface
gdk_wayland_window_set_use_custom_surface gdk_wayland_window_set_use_custom_surface
gdk_wayland_window_get_wl_output
<SUBSECTION Standard> <SUBSECTION Standard>
GDK_TYPE_WAYLAND_DEVICE GDK_TYPE_WAYLAND_DEVICE
......
...@@ -59,6 +59,9 @@ void gdk_wayland_window_set_dbus_properties_libgtk_only (Gdk ...@@ -59,6 +59,9 @@ void gdk_wayland_window_set_dbus_properties_libgtk_only (Gdk
const char *window_object_path, const char *window_object_path,
const char *application_object_path, const char *application_object_path,
const char *unique_bus_name); const char *unique_bus_name);
GDK_AVAILABLE_IN_3_22
struct wl_output *gdk_wayland_window_get_wl_output (GdkWindow *window);
G_END_DECLS G_END_DECLS
......
...@@ -2954,6 +2954,32 @@ gdk_wayland_window_get_wl_surface (GdkWindow *window) ...@@ -2954,6 +2954,32 @@ gdk_wayland_window_get_wl_surface (GdkWindow *window)
return GDK_WINDOW_IMPL_WAYLAND (window->impl)->display_server.wl_surface; return GDK_WINDOW_IMPL_WAYLAND (window->impl)->display_server.wl_surface;
} }
/**
* gdk_wayland_window_get_wl_output:
* @window: (type GdkWaylandWindow): a #GdkWindow
*
* Returns the Wayland output a #GdkWindow has last entered.
*
* Returns: (transfer none): a Wayland wl_output or NULL if the #GdkWindow
* is not associated with any Wayland wl_output.
*
* Since: 3.22
*/
struct wl_output *
gdk_wayland_window_get_wl_output (GdkWindow *window)
{
GdkWindowImplWayland *impl;
g_return_val_if_fail (GDK_IS_WAYLAND_WINDOW (window), NULL);
impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
/* We pick the head of the list as this is the last entered output */
if (impl->display_server.outputs)
return (struct wl_output *) impl->display_server.outputs->data;
return NULL;
}
static struct wl_egl_window * static struct wl_egl_window *
gdk_wayland_window_get_wl_egl_window (GdkWindow *window) gdk_wayland_window_get_wl_egl_window (GdkWindow *window)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment