From 179e89d95512ca0284401c50e0f2e0d751c6c839 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 2 Jun 2017 18:23:45 -0400 Subject: [PATCH] ecore-audio: unset DISPLAY conditionally before processing pulse events in some cases, pulse events trigger spawning another pulse instance, and the environment at this time is used to determine whether to attempt an x11 connection fix T2599 @fix --- src/lib/ecore_audio/ecore_audio_pulse_ml.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/lib/ecore_audio/ecore_audio_pulse_ml.c b/src/lib/ecore_audio/ecore_audio_pulse_ml.c index 841719b..19b652f 100644 --- a/src/lib/ecore_audio/ecore_audio_pulse_ml.c +++ b/src/lib/ecore_audio/ecore_audio_pulse_ml.c @@ -46,6 +46,7 @@ _ecore_io_wrapper(void *data, Ecore_Fd_Handler *handler) pa_io_event_flags_t flags = 0; pa_io_event *event = (pa_io_event *)data; int fd = 0; + char *disp = NULL; fd = ecore_main_fd_handler_fd_get(handler); if (fd < 0) return ECORE_CALLBACK_RENEW; @@ -70,7 +71,14 @@ _ecore_io_wrapper(void *data, Ecore_Fd_Handler *handler) if (ecore_main_fd_handler_active_get(handler, ECORE_FD_ERROR)) flags |= PA_IO_EVENT_ERROR; + if (getenv("WAYLAND_DISPLAY")) + { + disp = eina_strdup(getenv("DISPLAY")); + unsetenv("DISPLAY"); + } event->callback(event->mainloop, event, fd, flags, event->userdata); + if (disp) setenv("DISPLAY", disp, 1); + free(disp); return ECORE_CALLBACK_RENEW; } @@ -142,9 +150,17 @@ Eina_Bool _ecore_time_wrapper(void *data) { pa_time_event *event = (pa_time_event *)data; + char *disp = NULL; + if (getenv("WAYLAND_DISPLAY")) + { + disp = eina_strdup(getenv("DISPLAY")); + unsetenv("DISPLAY"); + } event->in_event = 1; event->callback(event->mainloop, event, &event->tv, event->userdata); + if (disp) setenv("DISPLAY", disp, 1); + free(disp); event->in_event = 0; event->timer = NULL; if (event->dead) -- 2.7.4