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>main
parent
f1adc4b375
commit
dbc8b11db6
12
xf86drm.c
12
xf86drm.c
|
@ -2567,6 +2567,7 @@ static struct {
|
||||||
char *BusID;
|
char *BusID;
|
||||||
int fd;
|
int fd;
|
||||||
int refcount;
|
int refcount;
|
||||||
|
int type;
|
||||||
} connection[DRM_MAX_FDS];
|
} connection[DRM_MAX_FDS];
|
||||||
|
|
||||||
static int nr_fds = 0;
|
static int nr_fds = 0;
|
||||||
|
@ -2574,24 +2575,31 @@ static int nr_fds = 0;
|
||||||
int drmOpenOnce(void *unused,
|
int drmOpenOnce(void *unused,
|
||||||
const char *BusID,
|
const char *BusID,
|
||||||
int *newlyopened)
|
int *newlyopened)
|
||||||
|
{
|
||||||
|
return drmOpenOnceWithType(BusID, newlyopened, DRM_NODE_PRIMARY);
|
||||||
|
}
|
||||||
|
|
||||||
|
int drmOpenOnceWithType(const char *BusID, int *newlyopened, int type)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
for (i = 0; i < nr_fds; i++)
|
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++;
|
connection[i].refcount++;
|
||||||
*newlyopened = 0;
|
*newlyopened = 0;
|
||||||
return connection[i].fd;
|
return connection[i].fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
fd = drmOpen(unused, BusID);
|
fd = drmOpenWithType(NULL, BusID, type);
|
||||||
if (fd <= 0 || nr_fds == DRM_MAX_FDS)
|
if (fd <= 0 || nr_fds == DRM_MAX_FDS)
|
||||||
return fd;
|
return fd;
|
||||||
|
|
||||||
connection[nr_fds].BusID = strdup(BusID);
|
connection[nr_fds].BusID = strdup(BusID);
|
||||||
connection[nr_fds].fd = fd;
|
connection[nr_fds].fd = fd;
|
||||||
connection[nr_fds].refcount = 1;
|
connection[nr_fds].refcount = 1;
|
||||||
|
connection[nr_fds].type = type;
|
||||||
*newlyopened = 1;
|
*newlyopened = 1;
|
||||||
|
|
||||||
if (0)
|
if (0)
|
||||||
|
|
|
@ -712,6 +712,7 @@ extern int drmSLLookupNeighbors(void *l, unsigned long key,
|
||||||
unsigned long *next_key, void **next_value);
|
unsigned long *next_key, void **next_value);
|
||||||
|
|
||||||
extern int drmOpenOnce(void *unused, const char *BusID, int *newlyopened);
|
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 drmCloseOnce(int fd);
|
||||||
extern void drmMsg(const char *format, ...) DRM_PRINTFLIKE(1, 2);
|
extern void drmMsg(const char *format, ...) DRM_PRINTFLIKE(1, 2);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue