<div dir="ltr">I resolved the problem by simply adding the explicit export DISPLAY=:0.0 to the script:<div><br></div><div>#!/bin/bash</div><div><br></div><div>case $1 in</div><div>     start)</div><div><span class="" style="white-space:pre">    </span>echo $$ > /var/run-usr/mp.pid;</div>
<div><span class="" style="white-space:pre">    </span>export DISPLAY=:0.0</div><div>     <span class="" style="white-space:pre">        </span>exec 2>&1 /path/to/my/mp 1>/dev/null ;;</div><div><br></div><div>although the apparently equivalent (to export DISPLAY=:0.0)</div>
<div><br></div><div>Display *display = XOpenDisplay (":0");<br></div><div><br></div><div>nor</div><div><br></div><div>Display *display = XOpenDisplay (":0.0");<br></div><div><br></div><div>in the mp code don't help. This was the problem!</div>
<div> </div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jun 24, 2014 at 3:41 PM, Sergei Vorobyov <span dir="ltr"><<a href="mailto:sergei.vorobyov@facilitylabs.com" target="_blank">sergei.vorobyov@facilitylabs.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">To make my GStreamer app unsinkable (sad to say the GStreamer sometimes freezes after a few days of intensive repetitive usage with dynamic pipes, caps, etc) I decided to start, monitor, and relaunch when needed my media player as a background process. Trouble is:<div>

<br></div><div>the background process fails in the very beginning at</div><div><br></div><div><div>if (gst_element_set_state (pipeline, GST_STATE_PLAYING) ==</div><div>                                         GST_STATE_CHANGE_FAILURE) {</div>

<div>            LOG_ERROR("failed to set pipeline to PLAYING");</div><div>            EXIT(-1);</div><div>}</div></div><div><br></div><div>whereas it always works OK in the foreground mode.</div><div><br></div>

<div>Note that my</div><div><br></div><div>Display *display = XOpenDisplay (":0");</div><div><br></div><div>Window window = XCreateWindow(display, ...<br></div><div><br></div><div>gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(sink), window);<br>

</div><div><br></div><div>(where sink is ximagesink; I am trying to overlay my ximagesink over an X-window)</div><div><br></div><div>all work OK in the fore- and background modes.</div><div><br></div><div>Of course, I cannot test the void result of gst_video_overlay_set_window_handle.</div>

<div><br></div><div>Any ideas? Thanks!</div><div><br></div><div><br></div></div>
</blockquote></div><br></div>