~ruther/dwl

d175a58d733723fdeb307943b034fe7fda6086ed — Guido Cella 3 years ago 3b05ead
implement the presentation time protocol

This lets applications, such as mpv with --video-sync=display-resample,
know accurately when frames are displayed and ensure smooth video
playback.
1 files changed, 6 insertions(+), 0 deletions(-)

M dwl.c
M dwl.c => dwl.c +6 -0
@@ 29,6 29,7 @@
#include <wlr/types/wlr_output_layout.h>
#include <wlr/types/wlr_output_management_v1.h>
#include <wlr/types/wlr_pointer.h>
#include <wlr/types/wlr_presentation_time.h>
#include <wlr/types/wlr_primary_selection.h>
#include <wlr/types/wlr_primary_selection_v1.h>
#include <wlr/types/wlr_screencopy_v1.h>


@@ 317,6 318,7 @@ static struct wl_list independents;
static struct wlr_idle *idle;
static struct wlr_layer_shell_v1 *layer_shell;
static struct wlr_output_manager_v1 *output_mgr;
static struct wlr_presentation *presentation;
static struct wlr_virtual_keyboard_manager_v1 *virtual_keyboard_mgr;

static struct wlr_cursor *cursor;


@@ 1653,6 1655,8 @@ render(struct wlr_surface *surface, int sx, int sy, void *data)
	/* This lets the client know that we've displayed that frame and it can
	 * prepare another one now if it likes. */
	wlr_surface_send_frame_done(surface, rdata->when);

	wlr_presentation_surface_sampled_on_output(presentation, surface, output);
}

void


@@ 2116,6 2120,8 @@ setup(void)
	wl_signal_add(&output_mgr->events.apply, &output_mgr_apply);
	wl_signal_add(&output_mgr->events.test, &output_mgr_test);

	presentation = wlr_presentation_create(dpy, backend);

#ifdef XWAYLAND
	/*
	 * Initialise the XWayland X server.

Do not follow this link