From e422335ee7e950236c478eeefa1fc5cde90fd3aa Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sat, 2 May 2009 20:01:56 +0100 Subject: Move authentication to a common file --- Makefile | 9 ++++-- gdri-cmdq-submission.c | 54 +------------------------------ utils.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++ utils.h | 35 ++++++++++++++++++++ 4 files changed, 128 insertions(+), 56 deletions(-) create mode 100644 utils.c create mode 100644 utils.h diff --git a/Makefile b/Makefile index 642a246..cc773d4 100644 --- a/Makefile +++ b/Makefile @@ -2,8 +2,8 @@ CFLAGS=-g -W -Wall LIBS=-lX11 -lXext -ldrm CC=gcc -gdri-cmdq-submission: gdri-cmdq-submission.o dri2.o - $(CC) gdri-cmdq-submission.o dri2.o -o gdri-cmdq-submission ${LIBS} +gdri-cmdq-submission: gdri-cmdq-submission.o dri2.o utils.o + $(CC) gdri-cmdq-submission.o dri2.o utils.o -o gdri-cmdq-submission ${LIBS} dri2.o: dri2.c $(CC) -c ${CFLAGS} ${CROSS_CFLAGS} dri2.c -o dri2.o @@ -11,8 +11,11 @@ dri2.o: dri2.c gdri-cmdq-submission.o: gdri-cmdq-submission.c $(CC) -c ${CFLAGS} ${CROSS_CFLAGS} gdri-cmdq-submission.c -o gdri-cmdq-submission.o +utils.o: utils.c + $(CC) -c ${CFLAGS} ${CROSS_CFLAGS} utils.c -o utils.o + clean: - rm -rf dri2.o gdri-cmdq-submission.o gdri-cmdq-submission + rm -rf dri2.o gdri-cmdq-submission.o utils.o gdri-cmdq-submission install: install -d -m 755 ${PREFIX}/bin diff --git a/gdri-cmdq-submission.c b/gdri-cmdq-submission.c index 40dfcc9..a78093b 100644 --- a/gdri-cmdq-submission.c +++ b/gdri-cmdq-submission.c @@ -23,14 +23,7 @@ #include #include -#include -#include -#include -#include -#include -#include #include -#include #include #include @@ -39,54 +32,9 @@ #include "dri2.h" #include "glamo-regs.h" +#include "utils.h" -#define RING_LOCALS int __count = 0; -#define OUT_REG(reg, val) cmds[__count++] = (reg); cmds[__count++] = (val); - - -static int do_drm_authentication(Display *dpy) -{ - int scrnum; - Window root; - char *driver; - char *device; - int fd; - drm_magic_t magic; - - /* Get default screen, root window and default visual */ - scrnum = DefaultScreen(dpy); - root = RootWindow(dpy, scrnum); - - /* Get device name */ - if ( !DRI2Connect(dpy, root, &driver, &device) ) { - fprintf(stderr, "DRI2Connect failed\n"); - return -1; - } - - /* Open DRM device */ - fd = open(device, O_RDWR); - if ( fd < 0 ) { - fprintf(stderr, "Couldn't open '%s': %s\n", - device, strerror(errno)); - return -1; - } - - /* Get an authentication token */ - if ( drmGetMagic(fd, &magic) ) { - fprintf(stderr, "drmGetMagic failed\n"); - return -1; - } - - /* Authenticate */ - if ( DRI2Authenticate(dpy, root, magic) == False ) { - fprintf(stderr, "DRI2Authenticate failed\n"); - return -1; - } - - return fd; -} - int main() { Display *dpy; diff --git a/utils.c b/utils.c new file mode 100644 index 0000000..276e21c --- /dev/null +++ b/utils.c @@ -0,0 +1,86 @@ +/* + * utils.c + * + * Common bits + * + * (c) 2009 Thomas White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "dri2.h" + + +#define RING_LOCALS int __count = 0; +#define OUT_REG(reg, val) cmds[__count++] = (reg); cmds[__count++] = (val); + + +int do_drm_authentication(Display *dpy) +{ + int scrnum; + Window root; + char *driver; + char *device; + int fd; + drm_magic_t magic; + + /* Get default screen, root window and default visual */ + scrnum = DefaultScreen(dpy); + root = RootWindow(dpy, scrnum); + + /* Get device name */ + if ( !DRI2Connect(dpy, root, &driver, &device) ) { + fprintf(stderr, "DRI2Connect failed\n"); + return -1; + } + + /* Open DRM device */ + fd = open(device, O_RDWR); + if ( fd < 0 ) { + fprintf(stderr, "Couldn't open '%s': %s\n", + device, strerror(errno)); + return -1; + } + + /* Get an authentication token */ + if ( drmGetMagic(fd, &magic) ) { + fprintf(stderr, "drmGetMagic failed\n"); + return -1; + } + + /* Authenticate */ + if ( DRI2Authenticate(dpy, root, magic) == False ) { + fprintf(stderr, "DRI2Authenticate failed\n"); + return -1; + } + + return fd; +} diff --git a/utils.h b/utils.h new file mode 100644 index 0000000..0f19435 --- /dev/null +++ b/utils.h @@ -0,0 +1,35 @@ +/* + * utils.h + * + * Common bits + * + * (c) 2009 Thomas White + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#ifndef UTILS_H +#define UTILS_H + + +#include + +#define RING_LOCALS int __count = 0; +#define OUT_REG(reg, val) cmds[__count++] = (reg); cmds[__count++] = (val); + +extern int do_drm_authentication(Display *dpy); + + +#endif /* UTILS_H */ -- cgit v1.2.3