xf86-video-intel: src/xvmc/intel_xvmc.c

Zhenyu Wang zhen at kemper.freedesktop.org
Tue Dec 16 17:40:25 PST 2008


 src/xvmc/intel_xvmc.c |   18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

New commits:
commit ed267072db7c58ee16a458fd3dc24ce3a2d0061d
Author: Robert Noland <rnoland at 2hip.net>
Date:   Wed Dec 17 09:27:30 2008 +0800

    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 at 2hip.net>

diff --git a/src/xvmc/intel_xvmc.c b/src/xvmc/intel_xvmc.c
index d18c722..dbde22f 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);


More information about the xorg-commit mailing list