diff options
author | Benjamin Reed <rangerrick@befunk.com> | 2009-07-21 10:33:32 -0400 |
---|---|---|
committer | Ralf Habacker <ralf.habacker@freenet.de> | 2010-12-06 21:33:10 +0100 |
commit | eb66c0a9c001ea08793b38470d12611ffaafa436 (patch) | |
tree | 9b3fc3b222999628734f89d6275532178db5ce66 | |
parent | 5125fc165454e81849a5b20c1e75b4f74bdbcd2c (diff) | |
download | dbus-eb66c0a9c001ea08793b38470d12611ffaafa436.tar.gz |
Look up DISPLAY from launchd if not initialized.
-rw-r--r-- | dbus/dbus-server-launchd.c | 25 |
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); |