--- xorg-server-1.9.3/os/utils.c.old	2012-03-29 18:20:02.000000000 +0200
+++ xorg-server-1.9.3/os/utils.c	2012-03-29 18:39:33.000000000 +0200
@@ -226,7 +226,26 @@ OsSignal(int sig, OsSigHandlerPtr handle
  * server at a time.  This keeps the servers from stomping on each other
  * if the user forgets to give them different display numbers.
  */
-#define LOCK_DIR "/tmp"
+char *
+getcompatibleenv(const char *name, const char *compatible)
+{
+  static char path_list[1][PATH_MAX];
+  char *dir;
+
+  if (path_list[0][0]) {
+    return path_list[0];
+  }
+
+  dir = getenv(name);
+  if (dir == NULL) {
+    return strncpy(path_list[0], compatible, PATH_MAX);
+  } else {
+    return strncpy(path_list[0], dir, PATH_MAX);
+  }
+
+}
+
+#define LOCK_DIR getcompatibleenv("TMPDIR", "/tmp")
 #define LOCK_TMP_PREFIX "/.tX"
 #define LOCK_PREFIX "/.X"
 #define LOCK_SUFFIX "-lock"