From 5689c3c3a82911b952f93c2e9f913f9f76f48c61 Mon Sep 17 00:00:00 2001 From: Robert Noland Date: Mon, 15 Dec 2008 23:01:53 -0500 Subject: [PATCH] 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 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/xvmc/intel_xvmc.c b/src/xvmc/intel_xvmc.c index d18c722..4b022c2 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(NULL, 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); -- 1.6.0.4