#include "wx/thread.h" // wxMutex/wxMutexLocker
#ifdef __WXGTK__
-# include "wx/gtk/win_gtk.h" // for <gdk/gdkx.h>/GDK_WINDOW_XWINDOW
+# include "wx/gtk/win_gtk.h"
+# include <gdk/gdkx.h> // for GDK_WINDOW_XWINDOW
#endif
//-----------------------------------------------------------------------------
# define DEBUG_MAIN_THREAD
# endif // Debug
+#ifndef __WXGTK20__
extern void wxapp_install_idle_handler();
extern bool g_isIdle;
+#endif
extern bool g_mainThreadLocked;
#endif // wxGTK
public:
wxGStreamerMediaBackend();
- ~wxGStreamerMediaBackend();
+ virtual ~wxGStreamerMediaBackend();
virtual bool CreateControl(wxControl* ctrl, wxWindow* parent,
wxWindowID id,
{
DEBUG_MAIN_THREAD // TODO: Is this neccessary?
+#ifndef __WXGTK20__
if (g_isIdle) // FIXME: Why is needed? For wxYield? ??
wxapp_install_idle_handler();
+#endif
wxYield(); // FIXME: RN: X Server gets an error/crash if I don't do
// this or a messagebox beforehand?!?!??
//
// Called when the media is about to stop
//-----------------------------------------------------------------------------
-void wxGStreamerMediaEventHandler::OnMediaFinish(wxMediaEvent& event)
+void wxGStreamerMediaEventHandler::OnMediaFinish(wxMediaEvent& WXUNUSED(event))
{
// (RN - I have no idea why I thought this was good behaviour....
// maybe it made sense for streaming/nonseeking data but
// so it doesn't draw over the video and cause sporadic
// disappearances of the video
gtk_widget_set_double_buffered(m_ctrl->m_wxwindow, FALSE);
-
- // Tell GtkPizza not to clear the background
- gtk_pizza_set_clear(GTK_PIZZA(m_ctrl->m_wxwindow), FALSE);
#endif
// don't erase the background of our control window
return false;
}
+ // free current media resources
+ gst_element_set_state (m_playbin, GST_STATE_NULL);
+
// Make sure the passed URI is valid and tell playbin to load it
// non-file uris are encoded
wxASSERT(gst_uri_protocol_is_valid("file"));