From dbc8b11db6f3fcbe2a76487bb0b1930908226a17 Mon Sep 17 00:00:00 2001 From: Jammy Zhou Date: Mon, 2 Feb 2015 18:06:27 +0800 Subject: Add new drmOpenOnceWithType function (v2) v2: call drmOpenOnceWithType in drmOpenOnce, and drop unused param for drmOpenOnceWithType Reviewed-by: Alex Deucher Signed-off-by: Jammy Zhou --- xf86drm.c | 12 ++++++++++-- xf86drm.h | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/xf86drm.c b/xf86drm.c index e60c4899..d85115ca 100644 --- a/xf86drm.c +++ b/xf86drm.c @@ -2567,6 +2567,7 @@ static struct { char *BusID; int fd; int refcount; + int type; } connection[DRM_MAX_FDS]; static int nr_fds = 0; @@ -2574,24 +2575,31 @@ static int nr_fds = 0; int drmOpenOnce(void *unused, const char *BusID, int *newlyopened) +{ + return drmOpenOnceWithType(BusID, newlyopened, DRM_NODE_PRIMARY); +} + +int drmOpenOnceWithType(const char *BusID, int *newlyopened, int type) { int i; int fd; for (i = 0; i < nr_fds; i++) - if (strcmp(BusID, connection[i].BusID) == 0) { + if ((strcmp(BusID, connection[i].BusID) == 0) && + (connection[i].type == type)) { connection[i].refcount++; *newlyopened = 0; return connection[i].fd; } - fd = drmOpen(unused, BusID); + fd = drmOpenWithType(NULL, BusID, type); if (fd <= 0 || nr_fds == DRM_MAX_FDS) return fd; connection[nr_fds].BusID = strdup(BusID); connection[nr_fds].fd = fd; connection[nr_fds].refcount = 1; + connection[nr_fds].type = type; *newlyopened = 1; if (0) diff --git a/xf86drm.h b/xf86drm.h index 7e82521b..77937eb9 100644 --- a/xf86drm.h +++ b/xf86drm.h @@ -712,6 +712,7 @@ extern int drmSLLookupNeighbors(void *l, unsigned long key, unsigned long *next_key, void **next_value); extern int drmOpenOnce(void *unused, const char *BusID, int *newlyopened); +extern int drmOpenOnceWithType(const char *BusID, int *newlyopened, int type); extern void drmCloseOnce(int fd); extern void drmMsg(const char *format, ...) DRM_PRINTFLIKE(1, 2); -- cgit v1.2.3