Segfault in GStreamer application
Steve Cookson
it at sca-uk.com
Wed Nov 19 00:54:44 PST 2014
Hi Nicolas,
Thanks for taking time to get back to me.
On 19/11/14 02:30, Nicolas Dufresne wrote:
>
> This backtrace show a crash caused by code outside of GStreamer. Are
> you sure wxGStreamerMediaBackend::SetupXOverlay() is thread safe ? The
> synchronous callback is and will always be called from a seperate thread.
How can I test to see if it is threadsafe? It all looks dangerous to
me. Here is the code for SetupXOverlay(). It is part of native wxWidgets,
Regards,
Steve.
//-----------------------------------------------------------------------------
// wxGStreamerMediaBackend::SetupXOverlay
//
// Attempts to set the XWindow id of our GstXOverlay to tell it which
// window to play video in.
//-----------------------------------------------------------------------------
void wxGStreamerMediaBackend::SetupXOverlay()
{
// Use the xoverlay extension to tell gstreamer to play in our window
#ifdef __WXGTK__
if(!GTK_WIDGET_REALIZED(m_ctrl->m_wxwindow))
{
// Not realized yet - set to connect at realization time
g_signal_connect (m_ctrl->m_wxwindow,
"realize",
G_CALLBACK (gtk_window_realize_callback),
this);
}
else
{
wxYield(); // see realize callback...
GdkWindow *window = GTK_PIZZA(m_ctrl->m_wxwindow)->bin_window;
wxASSERT(window);
#endif
gst_x_overlay_set_xwindow_id( GST_X_OVERLAY(m_xoverlay),
#ifdef __WXGTK__
GDK_WINDOW_XWINDOW( window )
#else
ctrl->GetHandle()
#endif
);
#ifdef __WXGTK__
g_signal_connect (m_ctrl->m_wxwindow,
// m_ctrl->m_wxwindow/*m_ctrl->m_widget*/,
"expose_event",
G_CALLBACK(gtk_window_expose_callback), this);
} // end if GtkPizza realized
#endif
}
More information about the gstreamer-devel
mailing list