diff options
author | Jammy Zhou <Jammy.Zhou@amd.com> | 2015-02-02 18:06:27 +0800 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-02-12 18:36:52 -0500 |
commit | dbc8b11db6f3fcbe2a76487bb0b1930908226a17 (patch) | |
tree | 50616ecce60e9cb8c2856aa16b20cc076730be18 | |
parent | f1adc4b375a16b07f560b86a34e617984049c422 (diff) |
Add new drmOpenOnceWithType function (v2)
v2: call drmOpenOnceWithType in drmOpenOnce, and drop unused param
for drmOpenOnceWithType
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com>
-rw-r--r-- | xf86drm.c | 12 | ||||
-rw-r--r-- | xf86drm.h | 1 |
2 files changed, 11 insertions, 2 deletions
@@ -2567,6 +2567,7 @@ static struct { char *BusID; int fd; int refcount; + int type; } connection[DRM_MAX_FDS]; static int nr_fds = 0; @@ -2575,23 +2576,30 @@ 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) @@ -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); |