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