From 85626ef1aada82f4628101534200927ba54ed6c7 Mon Sep 17 00:00:00 2001 From: reimar Date: Mon, 27 Jun 2005 10:05:39 +0000 Subject: [PATCH] Try to set XV_SYNC_TO_VBLANK to enable vsync on non-overlay xv adapters. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15827 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libvo/vo_xv.c | 1 + libvo/x11_common.c | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/libvo/vo_xv.c b/libvo/vo_xv.c index e485743dae..a3853d1cca 100644 --- a/libvo/vo_xv.c +++ b/libvo/vo_xv.c @@ -917,6 +917,7 @@ static uint32_t preinit(const char *arg) { return -1; // bail out, colorkey setup failed } + vo_xv_enable_vsync(); fo = XvListImageFormats(mDisplay, xv_port, (int *) &formats); diff --git a/libvo/x11_common.c b/libvo/x11_common.c index 50034c2e1e..d40ead6b2a 100644 --- a/libvo/x11_common.c +++ b/libvo/x11_common.c @@ -2284,6 +2284,19 @@ static Atom xv_intern_atom_if_exists( char const * atom_name ) return xv_atom; } + +/** + * \brief Try to enable vsync for xv. + * \return Returns -1 if not available, 0 on failure and 1 on success. + */ +int vo_xv_enable_vsync() +{ + Atom xv_atom = xv_intern_atom_if_exists("XV_SYNC_TO_VBLANK"); + if (xv_atom == None) + return -1; + return XvSetPortAttribute(mDisplay, xv_port, xv_atom, 1) == Success; +} + /** * \brief Print information about the colorkey method and source. *