blob: d36994c7f637c32dd5a7798e82121eaf91309e01 [file] [log] [blame]
DRC3b9ecdf2011-02-16 20:30:28 +00001*** a/glx/glxdri.c 2011-02-16 14:00:53.000000000 -0600
2--- b/glx/glxdri.c 2011-02-16 13:56:09.000000000 -0600
3***************
4*** 838,843 ****
5
6
7- static const char dri_driver_path[] = DRI_DRIVER_PATH;
8-
9 static Bool
10 glxDRIEnterVT (int index, int flags)
11--- 838,841 ----
12diff -r -C2 a/glx/glxdriswrast.c b/glx/glxdriswrast.c
13*** a/glx/glxdriswrast.c 2011-02-16 14:00:53.000000000 -0600
14--- b/glx/glxdriswrast.c 2011-02-16 13:56:29.000000000 -0600
15***************
16*** 448,453 ****
17 }
18
19- static const char dri_driver_path[] = DRI_DRIVER_PATH;
20-
21 static __GLXscreen *
22 __glXDRIscreenProbe(ScreenPtr pScreen)
23--- 448,451 ----
24diff -r -C2 a/glx/glxext.c b/glx/glxext.c
25*** a/glx/glxext.c 2011-02-16 14:00:54.000000000 -0600
26--- b/glx/glxext.c 2011-02-16 13:58:39.000000000 -0600
27***************
28*** 520,521 ****
29--- 520,548 ----
30 return retval;
31 }
32+
33+ char *dri_driver_path = DRI_DRIVER_PATH;
34+
35+ int GlxProcessArguments(int argc, char *argv[], int i)
36+ {
37+ if (strncmp(argv[i], "-dridir", 7) == 0) {
38+ if (++i < argc) {
39+ #if !defined(WIN32) && !defined(__CYGWIN__)
40+ if (getuid() != geteuid()) {
41+ LogMessage(X_WARNING, "-dridir is not available for setuid X servers\n");
42+ return -1;
43+ } else
44+ #endif
45+ {
46+ if (strlen(argv[i]) < PATH_MAX) {
47+ dri_driver_path = argv[i];
48+ return 2;
49+ } else {
50+ LogMessage(X_ERROR, "-dridir pathname too long\n");
51+ return -1;
52+ }
53+ }
54+ }
55+ }
56+
57+ return 0;
58+ }
59diff -r -C2 a/glx/glxserver.h b/glx/glxserver.h
60*** a/glx/glxserver.h 2011-02-16 14:00:54.000000000 -0600
61--- b/glx/glxserver.h 2011-02-16 14:01:44.000000000 -0600
62***************
63*** 264,266 ****
64--- 264,269 ----
65 GLint alignment);
66
67+ extern char *dri_driver_path;
68+ extern int GlxProcessArguments(int argc, char *argv[], int i);
69+
70 #endif /* !__GLX_server_h__ */
71Only in b/os: ._utils.c
72diff -r -C2 a/os/utils.c b/os/utils.c
73*** a/os/utils.c 2011-02-16 14:01:18.000000000 -0600
74--- b/os/utils.c 2011-02-16 14:04:11.000000000 -0600
75***************
76*** 159,162 ****
77--- 159,163 ----
78 _X_EXPORT Bool noGlxExtension = FALSE;
79 _X_EXPORT Bool noGlxVisualInit = FALSE;
80+ extern int GlxProcessArguments(int argc, char *argv[], int i);
81 #endif
82 #ifdef SCREENSAVER
83***************
84*** 854,857 ****
85--- 855,866 ----
86 }
87 #endif
88+ #ifdef GLXEXT
89+ else if ((skip = GlxProcessArguments(argc,argv,i)) != 0) {
90+ if (skip > 0)
91+ i += skip - 1;
92+ else
93+ UseMsg();
94+ }
95+ #endif
96 #ifdef RLIMIT_DATA
97 else if ( strcmp( argv[i], "-ld") == 0)