From 01d2fa69930aae3a1b63acf4657843395cf1c095 Mon Sep 17 00:00:00 2001 From: Ren Zhaohan Date: Tue, 4 May 2010 15:56:25 +0800 Subject: [PATCH] remove udev --- va/Android.mk | 3 +-- va/android/va_android.c | 58 +++++++++++++++++++++++++++++-------------------- va/va.c | 2 +- va/va_android.h | 6 ++--- 4 files changed, 40 insertions(+), 29 deletions(-) diff --git a/va/Android.mk b/va/Android.mk index 1c49aa9..eb9967d 100644 --- a/va/Android.mk +++ b/va/Android.mk @@ -8,8 +8,7 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := \ va.c \ va_trace.c \ - android/va_android.c \ - android/drmtest.c \ + android/va_android.c LOCAL_CFLAGS += -DHAVE_CONFIG_H \ diff --git a/va/android/va_android.c b/va/android/va_android.c index 8c0a75e..5ccf998 100644 --- a/va/android/va_android.c +++ b/va/android/va_android.c @@ -26,7 +26,7 @@ #include "va.h" #include "va_backend.h" #include "va_android.h" -#include "va_dricommon.h" /* needs some helper functions from this file */ +#include "x11/va_dricommon.h" /* needs some helper functions from this file */ #include #include #include @@ -43,6 +43,35 @@ static VADisplayContextP pDisplayContexts = NULL; +static int open_device (char *dev_name) +{ + struct stat st; + int fd; + + if (-1 == stat (dev_name, &st)) + { + printf ("Cannot identify '%s': %d, %s\n", + dev_name, errno, strerror (errno)); + return -1; + } + + if (!S_ISCHR (st.st_mode)) + { + printf ("%s is no device\n", dev_name); + return -1; + } + + fd = open (dev_name, O_RDWR /* required */ | O_NONBLOCK, 0); + + if (-1 == fd) + { + fprintf (stderr, "Cannot open '%s': %d, %s\n", + dev_name, errno, strerror (errno)); + return -1; + } + + return fd; +} static int va_DisplayContextIsValid ( VADisplayContextP pDisplayContext @@ -103,41 +132,24 @@ static VAStatus va_DisplayContextGetDriverName ( }; memset(dri_state, 0, sizeof(*dri_state)); - dri_state->fd = drm_open_any(&vendor_id, &device_id); + dri_state->fd = open_device(DEVICE_NAME); if (dri_state->fd < 0) { fprintf(stderr,"can't open DRM devices\n"); return VA_STATUS_ERROR_UNKNOWN; } - + 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; } else { /* TBD: other vendor driver names */ - int i = 0; - - while (devices[i].device_id != 0) { - if ((devices[i].vendor_id == vendor_id) && - (devices[i].device_id == device_id)) - break; - i++; - } - - if (devices[i].device_id != 0) - *driver_name = strdup(devices[i].driver_name); - else { - fprintf(stderr,"device (0x%04x:0x%04x) is not supported\n", - vendor_id, device_id); - - return VA_STATUS_ERROR_UNKNOWN; - } + vendor_id = devices[0].vendor_id; + device_id = devices[0].device_id; + *driver_name = strdup(devices[0].driver_name); } - printf("DRM device is opened, loading driver %s for device 0x%04x:0x%04x\n", - driver_name, vendor_id, device_id); - dri_state->driConnectedFlag = VA_DUMMY; return VA_STATUS_SUCCESS; diff --git a/va/va.c b/va/va.c index b91c588..c97b6cc 100644 --- a/va/va.c +++ b/va/va.c @@ -350,7 +350,7 @@ VAStatus vaInitialize ( { vaStatus = va_openDriver(dpy, driver_name); va_infoMessage("va_openDriver() returns %d\n", vaStatus); - + *major_version = VA_MAJOR_VERSION; *minor_version = VA_MINOR_VERSION; } diff --git a/va/va_android.h b/va/va_android.h index bba85f7..3e050b8 100644 --- a/va/va_android.h +++ b/va/va_android.h @@ -14,8 +14,8 @@ VADisplay vaGetDisplay ( ); #if ANDROID -#include -class Surface; +//#include +//class Surface; /* * Output rendering @@ -28,7 +28,7 @@ class Surface; VAStatus vaPutSurface ( VADisplay dpy, VASurfaceID surface, - Surface *draw, /* Android Window/Surface */ + void *draw, /* Android Window/Surface */ short srcx, short srcy, unsigned short srcw, -- 2.7.4