Hi,This patch moves the LIBVA_DRIVER_NAME check to libva.so.* in vaInitialize(). This is so that to not tie it to libva-x11 and make other display backends use that. e.g. android.
Regards, Gwenole.
From: Gwenole Beauchesne <[email protected]> Date: Tue Feb 23 09:11:22 2010 +0000 Subject: [PATCH] Move LIBVA_DRIVER_NAME check in vaInitialize(). diff --git a/va/va.c b/va/va.c index c840ebb..5ff3563 100644 --- a/va/va.c +++ b/va/va.c @@ -331,30 +331,42 @@ VAStatus vaInitialize ( int *minor_version /* out */ ) { - char *driver_name = NULL; - VAStatus vaStatus; - - CHECK_DISPLAY(dpy); + const char *driver_name_env = NULL; + char *driver_name = NULL; + VAStatus vaStatus; - va_TraceInit(); + CHECK_DISPLAY(dpy); - va_infoMessage("libva version %s\n", VA_VERSION_S); + va_TraceInit(); - vaStatus = va_getDriverName(dpy, &driver_name); - va_infoMessage("va_getDriverName() returns %d\n", vaStatus); - - if (VA_STATUS_SUCCESS == vaStatus) - { - vaStatus = va_openDriver(dpy, driver_name); - va_infoMessage("va_openDriver() returns %d\n", vaStatus); + va_infoMessage("libva version %s\n", VA_VERSION_S); - *major_version = VA_MAJOR_VERSION; - *minor_version = VA_MINOR_VERSION; - } + driver_name_env = getenv("LIBVA_DRIVER_NAME"); + if (driver_name_env && geteuid() == getuid()) + { + /* Don't allow setuid apps to use LIBVA_DRIVER_NAME */ + driver_name = strdup(driver_name_env); + vaStatus = VA_STATUS_SUCCESS; + va_infoMessage("User requested driver '%s'\n", driver_name); + } + else + { + vaStatus = va_getDriverName(dpy, &driver_name); + va_infoMessage("va_getDriverName() returns %d\n", vaStatus); + } - if (driver_name) - free(driver_name); - return vaStatus; + if (VA_STATUS_SUCCESS == vaStatus) + { + vaStatus = va_openDriver(dpy, driver_name); + va_infoMessage("va_openDriver() returns %d\n", vaStatus); + + *major_version = VA_MAJOR_VERSION; + *minor_version = VA_MINOR_VERSION; + } + + if (driver_name) + free(driver_name); + return vaStatus; } diff --git a/va/x11/va_x11.c b/va/x11/va_x11.c index 9f233da..7f8fbd6 100644 --- a/va/x11/va_x11.c +++ b/va/x11/va_x11.c @@ -136,19 +136,10 @@ static VAStatus va_DisplayContextGetDriverName ( ) { VAStatus vaStatus; - char *driver_name_env; if (driver_name) *driver_name = NULL; - if ((driver_name_env = getenv("LIBVA_DRIVER_NAME")) != NULL - && geteuid() == getuid()) - { - /* don't allow setuid apps to use LIBVA_DRIVER_NAME */ - *driver_name = strdup(driver_name_env); - return VA_STATUS_SUCCESS; - } - vaStatus = va_DRI2GetDriverName(pDisplayContext, driver_name); if (vaStatus != VA_STATUS_SUCCESS) vaStatus = va_DRIGetDriverName(pDisplayContext, driver_name);
_______________________________________________ Libva mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libva
