From 1788f8826d7ac1610ac318963451ccfd07c8b822 Mon Sep 17 00:00:00 2001
From: Frederic Koehler <f.koehler427@gmail.com>
Date: Tue, 14 Aug 2012 21:49:14 -0400
Subject: [PATCH] mp_session: Always use global displayname

This code tried to automatically generate the X DISPLAY
from the combination of the hostname and display number;
however 127.0.0.1:0 is normally rejected by X11, so this
technique is no good. Fixes dticon hang on startup, caused by
XOpenDisplay failure leading to this message from tttrace:
tt_default_session_set(0x0x875190=="X 127.0.0.1 0") = 1032 (TT_ERR_ACCESS)
---
 cde/lib/tt/lib/mp/mp_session.C | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/cde/lib/tt/lib/mp/mp_session.C b/cde/lib/tt/lib/mp/mp_session.C
index ed96227..73bbe18 100644
--- a/cde/lib/tt/lib/mp/mp_session.C
+++ b/cde/lib/tt/lib/mp/mp_session.C
@@ -793,8 +793,17 @@ set_id(char *id)
 			if (sscanf((char *)id, "X %s %d", host, &svnum) != 2) {
 				return(TT_ERR_SESSION);
 			}
+			/* We _cannot_ set _displayname based solely on host and svnum, 
+			 * because :0 is NOT the same as 127.0.0.1:0 as far as X11
+			 * is concerned: by default, it will only accept connections
+			 * to the former. (XOpenDisplay etc. will fail if you try the below!)
 			sprintf(dpname, "%s:%d", host, svnum);
 			_displayname = dpname;
+			 */
+			if (! _displayname.len()) {
+				_displayname = _tt_global->xdisplayname;
+			}
+
 			_server_num = svnum;
 			_env = _TT_ENV_X11;
 			break;
-- 
1.7.11.2

