From ee6238154654ff04c9a0322a60e0ea588010b431 Mon Sep 17 00:00:00 2001 From: attila Date: Sun, 7 Sep 2003 18:58:56 +0000 Subject: hopefully final xv ports. from Jim Hawkins git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10840 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libvo/vo_xv.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'libvo/vo_xv.c') diff --git a/libvo/vo_xv.c b/libvo/vo_xv.c index 7b7b68d80a..56f023d420 100644 --- a/libvo/vo_xv.c +++ b/libvo/vo_xv.c @@ -623,15 +623,26 @@ static uint32_t preinit(const char *arg) } /* check adaptors */ - if(xv_port >= ai[0].num_ports || xv_port < 0) // FIXME: ai[0] should not be hardcoded - { - mp_msg(MSGT_VO, MSGL_WARN,"Xv: Invalid port parameter, overriding with port 0\n"); - xv_port = 0; - } - if (xv_port) - { - if (XvGrabPort(mDisplay, xv_port, CurrentTime)) - xv_port = 0; + if (xv_port) { + int port_found; + + for (port_found = 0, i = 0; !port_found && i < adaptors; i++) { + if ((ai[i].type & XvInputMask) && (ai[i].type & XvImageMask)) { + for (xv_p = ai[i].base_id; xv_p < ai[i].base_id+ai[i].num_ports; ++xv_p) { + if (xv_p == xv_port) { + port_found = 1; + break; + } + } + } + } + if (port_found) { + if (XvGrabPort(mDisplay, xv_port, CurrentTime)) + xv_port = 0; + } else { + mp_msg(MSGT_VO, MSGL_WARN,"Xv: Invalid port parameter, overriding with port 0\n"); + xv_port = 0; + } } for (i = 0; i < adaptors && xv_port == 0; i++){ -- cgit v1.2.3