diff options
author | Robert Noland <rnoland@2hip.net> | 2008-12-17 09:27:30 +0800 |
---|---|---|
committer | Zhenyu Wang <zhenyu.z.wang@intel.com> | 2008-12-26 06:35:03 +0800 |
commit | 304dddf6578c55ce7324d930cfb9b3ba605a007a (patch) | |
tree | 9124bd1ce2cfae3823907b8db3088df6675fff1a | |
parent | 621859803c0dcb893ea3f3d95d36b4c51a08cbe3 (diff) |
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 <rnoland@2hip.net>
(cherry picked from commit ed267072db7c58ee16a458fd3dc24ce3a2d0061d)
-rw-r--r-- | 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 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); |