summaryrefslogtreecommitdiffstats
path: root/contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch')
-rw-r--r--contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch131
1 files changed, 131 insertions, 0 deletions
diff --git a/contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch b/contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch
new file mode 100644
index 00000000..c72078f3
--- /dev/null
+++ b/contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch
@@ -0,0 +1,131 @@
+From 0acffdd6f443198378012405e7f814f5abf278b3 Mon Sep 17 00:00:00 2001
+From: Adam Tkac <atkac@redhat.com>
+Date: Wed, 15 Sep 2010 15:37:01 +0200
+Subject: [PATCH] Add -dridir parameter to specify DRI drivers directory from command line.
+
+Signed-off-by: Adam Tkac <atkac@redhat.com>
+---
+ glx/glxdri.c | 2 --
+ glx/glxdri2.c | 2 --
+ glx/glxdriswrast.c | 2 --
+ glx/glxext.c | 27 +++++++++++++++++++++++++++
+ glx/glxserver.h | 3 +++
+ os/utils.c | 9 +++++++++
+ 6 files changed, 39 insertions(+), 6 deletions(-)
+
+diff --git a/glx/glxdri.c b/glx/glxdri.c
+index 5b78cec..ce29ae2 100644
+--- a/glx/glxdri.c
++++ b/glx/glxdri.c
+@@ -860,8 +860,6 @@ static const __DRIextension *loader_extensions[] = {
+
+
+
+-static const char dri_driver_path[] = DRI_DRIVER_PATH;
+-
+ static Bool
+ glxDRIEnterVT (int index, int flags)
+ {
+diff --git a/glx/glxdri2.c b/glx/glxdri2.c
+index 2d6090c..49265ec 100644
+--- a/glx/glxdri2.c
++++ b/glx/glxdri2.c
+@@ -579,8 +579,6 @@ static const __DRIextension *loader_extensions[] = {
+ NULL
+ };
+
+-static const char dri_driver_path[] = DRI_DRIVER_PATH;
+-
+ static Bool
+ glxDRIEnterVT (int index, int flags)
+ {
+diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c
+index 6a34393..37c1dce 100644
+--- a/glx/glxdriswrast.c
++++ b/glx/glxdriswrast.c
+@@ -438,8 +438,6 @@ initializeExtensions(__GLXDRIscreen *screen)
+ }
+ }
+
+-static const char dri_driver_path[] = DRI_DRIVER_PATH;
+-
+ static __GLXscreen *
+ __glXDRIscreenProbe(ScreenPtr pScreen)
+ {
+diff --git a/glx/glxext.c b/glx/glxext.c
+index 89e58b0..5e7cf23 100644
+--- a/glx/glxext.c
++++ b/glx/glxext.c
+@@ -608,3 +608,30 @@ static int __glXDispatch(ClientPtr client)
+
+ return retval;
+ }
++
++char *dri_driver_path = DRI_DRIVER_PATH;
++
++int GlxProcessArguments(int argc, char *argv[], int i)
++{
++ if (strncmp(argv[i], "-dridir", 7) == 0) {
++ if (++i < argc) {
++#if !defined(WIN32) && !defined(__CYGWIN__)
++ if (getuid() != geteuid()) {
++ LogMessage(X_WARNING, "-dridir is not available for setuid X servers\n");
++ return -1;
++ } else
++#endif
++ {
++ if (strlen(argv[i]) < PATH_MAX) {
++ dri_driver_path = argv[i];
++ return 2;
++ } else {
++ LogMessage(X_ERROR, "-dridir pathname too long\n");
++ return -1;
++ }
++ }
++ }
++ }
++
++ return 0;
++}
+diff --git a/glx/glxserver.h b/glx/glxserver.h
+index 1daf977..082ff82 100644
+--- a/glx/glxserver.h
++++ b/glx/glxserver.h
+@@ -251,4 +251,7 @@ extern unsigned glxMinorVersion;
+
+ extern int __glXEventBase;
+
++extern char *dri_driver_path;
++extern int GlxProcessArguments(int argc, char *argv[], int i);
++
+ #endif /* !__GLX_server_h__ */
+diff --git a/os/utils.c b/os/utils.c
+index 13d3b3f..ff97c86 100644
+--- a/os/utils.c
++++ b/os/utils.c
+@@ -141,6 +141,7 @@ Bool noDPMSExtension = FALSE;
+ #ifdef GLXEXT
+ Bool noGlxExtension = FALSE;
+ Bool noGlxVisualInit = FALSE;
++extern int GlxProcessArguments(int argc, char *argv[], int i);
+ #endif
+ #ifdef SCREENSAVER
+ Bool noScreenSaverExtension = FALSE;
+@@ -721,6 +722,14 @@ ProcessCommandLine(int argc, char *argv[])
+ i+= skip-1;
+ else UseMsg();
+ }
++#ifdef GLXEXT
++ else if ((skip = GlxProcessArguments(argc,argv,i)) != 0) {
++ if (skip > 0)
++ i += skip - 1;
++ else
++ UseMsg();
++ }
++#endif
+ #ifdef RLIMIT_DATA
+ else if ( strcmp( argv[i], "-ld") == 0)
+ {
+--
+1.7.3.2
+