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
This commit is contained in:
Olivier Fourdan 2016-05-17 15:02:01 +02:00
parent d288a134a4
commit ca77de055b
3 changed files with 30 additions and 0 deletions

View File

@ -1245,6 +1245,7 @@ gdk_wayland_display_get_wl_display
gdk_wayland_display_get_xdg_shell
gdk_wayland_window_get_wl_surface
gdk_wayland_window_set_use_custom_surface
gdk_wayland_window_get_wl_output
<SUBSECTION Standard>
GDK_TYPE_WAYLAND_DEVICE

View File

@ -59,6 +59,9 @@ void gdk_wayland_window_set_dbus_properties_libgtk_only (Gdk
const char *window_object_path,
const char *application_object_path,
const char *unique_bus_name);
GDK_AVAILABLE_IN_3_22
struct wl_output *gdk_wayland_window_get_wl_output (GdkWindow *window);
G_END_DECLS

View File

@ -2954,6 +2954,32 @@ gdk_wayland_window_get_wl_surface (GdkWindow *window)
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 *
gdk_wayland_window_get_wl_egl_window (GdkWindow *window)
{