diff options
author | Eric Anholt <eric@anholt.net> | 2007-07-19 06:17:04 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2007-07-19 06:17:41 -0700 |
commit | ecf3fbe599cd72c495acf339ae24f3a9e01fdb36 (patch) | |
tree | d3ffa3160b9c40e7cc318df4a6fecebfa8d3af75 /tests/drmtest.c | |
parent | 50cb405f93da70054ede29e0c365f06352dc8fe5 (diff) |
Add a test for drawable add, remove, and update.
Diffstat (limited to 'tests/drmtest.c')
-rw-r--r-- | tests/drmtest.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/drmtest.c b/tests/drmtest.c index 3697078a..cae99a0c 100644 --- a/tests/drmtest.c +++ b/tests/drmtest.c @@ -43,3 +43,41 @@ int drm_open_any(void) abort(); } + +/** + * Open the first DRM device we can find where we end up being the master. + */ +int drm_open_any_master(void) +{ + char name[20]; + int i, fd; + + for (i = 0; i < 16; i++) { + drm_client_t client; + int ret; + + sprintf(name, "/dev/dri/card%d", i); + fd = open(name, O_RDWR); + if (fd == -1) + continue; + + /* Check that we're the only opener and authed. */ + client.idx = 0; + ret = ioctl(fd, DRM_IOCTL_GET_CLIENT, &client); + assert (ret == 0); + if (!client.auth) { + close(fd); + continue; + } + client.idx = 1; + ret = ioctl(fd, DRM_IOCTL_GET_CLIENT, &client); + if (ret != -1 || errno != EINVAL) { + close(fd); + continue; + } + return fd; + } + fprintf(stderr, "Couldn't find an un-controlled DRM device\n"); + abort(); +} + |