<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Dec 11, 2013 at 12:33 PM, Sebastian Dröge <span dir="ltr"><<a href="mailto:sebastian@centricular.com" target="_blank">sebastian@centricular.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Mi, 2013-12-11 at 12:13 -0500, Stirling Westrup wrote:<br>
</div></div></blockquote><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">> Ideally, I imagine a solution to this problem would be to have a<br>

> non-blocking routine inserted into the main gst event loop, and each time<br>
> around the loop that routine would check if there was rendering to do, and<br>
> if so would perform the render operation.<br>
><br>
> Then the _fill routine would need to set things up for the render<br>
> operation, somehow trigger the main event loop, and then wait on a 'done'<br>
> signal of some sort.<br>
<br>
</div></div>You could trigger things to be called from the main thread from the<br>
GStreamer threads, and in the GStreamer thread then wait until the main<br>
thread has provided the results (make sure that the waiting can be<br>
interrupted by GstBaseSrc::unlock() vfunc implementation).<br>
<br>
In Qt IIRC you would do that with signals/slots, in GLib you would use<br>
things like g_idle_add() (and that would also work on Qt if it is built<br>
with GLib mainloop support).<br></blockquote><div><br></div><div>Thanks! Your advice pushed me in the right direction. I built a custom event queue out of a pipe, and turned it into a GSource to register with the main gstreamer loop. Now in my _fill routine I send a 'Render' event down the pipe and wait on a 'completion' signal. When the GSource wakes up, it calls a callback in my element that decodes the Render event, performs the render operation, and signals completion, all of the above protected with the appropriate semphores and locks.<br>
<br></div><div>Was a bit convoluted to write, but it works like a charm!<br><br></div></div><br clear="all"><br>-- <br>Stirling Westrup<br>Programmer, Entrepreneur.<br><a href="https://www.linkedin.com/e/fpf/77228" target="_blank">https://www.linkedin.com/e/fpf/77228</a><br>
<a href="http://www.linkedin.com/in/swestrup" target="_blank">http://www.linkedin.com/in/swestrup</a><br><a href="http://technaut.livejournal.com" target="_blank">http://technaut.livejournal.com</a><br><a href="http://sourceforge.net/users/stirlingwestrup" target="_blank">http://sourceforge.net/users/stirlingwestrup</a>
</div></div>