summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Reed <rangerrick@befunk.com>2009-07-21 10:33:32 -0400
committerRalf Habacker <ralf.habacker@freenet.de>2010-12-06 21:33:10 +0100
commiteb66c0a9c001ea08793b38470d12611ffaafa436 (patch)
tree9b3fc3b222999628734f89d6275532178db5ce66
parent5125fc165454e81849a5b20c1e75b4f74bdbcd2c (diff)
downloaddbus-eb66c0a9c001ea08793b38470d12611ffaafa436.tar.gz
Look up DISPLAY from launchd if not initialized.
-rw-r--r--dbus/dbus-server-launchd.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/dbus/dbus-server-launchd.c b/dbus/dbus-server-launchd.c
index 83d384df..db4673c5 100644
--- a/dbus/dbus-server-launchd.c
+++ b/dbus/dbus-server-launchd.c
@@ -71,9 +71,10 @@ _dbus_server_new_for_launchd (const char *launchd_env_var, DBusError * error)
launch_data_t checkin_request;
launch_data_t listening_fd_array, listening_fd;
launch_data_t environment_dict, environment_param;
- const char *launchd_socket_path;
+ const char *launchd_socket_path, *display;
launchd_socket_path = _dbus_getenv (launchd_env_var);
+ display = _dbus_getenv ("DISPLAY");
_DBUS_ASSERT_ERROR_IS_CLEAR (error);
@@ -158,6 +159,28 @@ _dbus_server_new_for_launchd (const char *launchd_env_var, DBusError * error)
{
_DBUS_ASSERT_ERROR_IS_SET (error);
goto l_failed_0;
+ if (display == NULL || *display == '\0')
+ {
+ environment_dict = launch_data_dict_lookup (checkin_response, LAUNCH_JOBKEY_USERENVIRONMENTVARIABLES);
+ if (NULL == environment_dict)
+ {
+ _dbus_warn ("Unable to retrieve user environment from launchd.");
+ }
+ else
+ {
+ environment_param = launch_data_dict_lookup (environment_dict, "DISPLAY");
+ if (NULL == environment_param)
+ {
+ _dbus_warn ("Unable to retrieve DISPLAY from launchd.");
+ }
+ else
+ {
+ display = launch_data_get_string(environment_param);
+ _dbus_setenv ("DISPLAY", display);
+ }
+ }
+ }
+
}
server = _dbus_server_new_for_socket (&launchd_fd, 1, &address, 0);