From ed267072db7c58ee16a458fd3dc24ce3a2d0061d Mon Sep 17 00:00:00 2001 From: Robert Noland Date: Wed, 17 Dec 2008 09:27:30 +0800 Subject: Fix drmOpen for non-linux 965 XvMC drmOpen by name only works on linux after falling back to groping around in /proc. This doesn't work on other OS. Signed-off-by: Robert Noland --- src/xvmc/intel_xvmc.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/xvmc/intel_xvmc.c b/src/xvmc/intel_xvmc.c index d18c7229..dbde22f9 100644 --- a/src/xvmc/intel_xvmc.c +++ b/src/xvmc/intel_xvmc.c @@ -292,12 +292,6 @@ _X_EXPORT Status XvMCCreateContext(Display *display, XvPortID port, intel_xvmc_debug_init(); - /* Open DRI Device */ - if((fd = drmOpen("i915", NULL)) < 0) { - XVMC_ERR("DRM Device could not be opened."); - return BadValue; - } - /* Width, Height, and flags are checked against surface_type_id and port for validity inside the X server, no need to check @@ -358,8 +352,6 @@ _X_EXPORT Status XvMCCreateContext(Display *display, XvPortID port, return BadValue; } - xvmc_driver->fd = fd; - XVMC_INFO("decoder type is %s", intel_xvmc_decoder_string(comm->type)); xvmc_driver->sarea_size = comm->sarea_size; @@ -390,6 +382,16 @@ _X_EXPORT Status XvMCCreateContext(Display *display, XvPortID port, return BadValue; } + /* Open DRI Device */ + if((fd = drmOpen("i915", curBusID)) < 0) { + XVMC_ERR("DRM Device could not be opened."); + XFree(priv_data); + XFree(curBusID); + return BadValue; + } + + xvmc_driver->fd = fd; + strncpy(xvmc_driver->busID, curBusID, 20); xvmc_driver->busID[20] = '\0'; XFree(curBusID); -- cgit v1.2.3