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;
|
||||
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)
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue