#ifdef __WXGTK__
#include <gtk/gtk.h>
-# include <gdk/gdkx.h> // for GDK_WINDOW_XWINDOW
+ #include <gdk/gdkx.h>
+ #include "wx/gtk/private/gtk2-compat.h"
#endif
//-----------------------------------------------------------------------------
//=============================================================================
//-----------------------------------------------------------------------------
-// GStreamer (most version compatability) macros
+// GStreamer (most version compatibility) macros
//-----------------------------------------------------------------------------
// In 0.9 there was a HUGE change to GstQuery and the
// gst_element_query function changed dramatically and split off
-// into two seperate ones
+// into two separate ones
#if GST_VERSION_MAJOR == 0 && GST_VERSION_MINOR <= 8
# define wxGst_element_query_duration(e, f, p) \
gst_element_query(e, GST_QUERY_TOTAL, f, p)
// Max wait time for element state waiting - GST_CLOCK_TIME_NONE for inf
#define wxGSTREAMER_TIMEOUT (100 * GST_MSECOND) // Max 100 milliseconds
-//-----------------------------------------------------------------------------
-// wxGTK Debugging and idle stuff
-//-----------------------------------------------------------------------------
-#ifdef __WXGTK__
-
-# ifdef __WXDEBUG__
-# if wxUSE_THREADS
-# define DEBUG_MAIN_THREAD \
- if (wxThread::IsMain() && g_mainThreadLocked) \
- wxPrintf(wxT("gui reentrance"));
-# else
-# define DEBUG_MAIN_THREAD
-# endif
-# else
-# 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
-
//-----------------------------------------------------------------------------
// wxLogTrace mask string
//-----------------------------------------------------------------------------
virtual bool Load(const wxString& fileName);
virtual bool Load(const wxURI& location);
+ virtual bool Load(const wxURI& location,
+ const wxURI& proxy)
+ { return wxMediaBackendCommonBase::Load(location, proxy); }
+
virtual wxMediaState GetState();
friend class wxGStreamerMediaEventHandler;
friend class wxGStreamerLoadWaitTimer;
- DECLARE_DYNAMIC_CLASS(wxGStreamerMediaBackend);
+ DECLARE_DYNAMIC_CLASS(wxGStreamerMediaBackend)
};
//-----------------------------------------------------------------------------
// wxGStreamerMediaEventHandler
//
// OK, this will take an explanation - basically gstreamer callbacks
-// are issued in a seperate thread, and in this thread we may not set
+// are issued in a separate thread, and in this thread we may not set
// the state of the playbin, so we need to send a wx event in that
// callback so that we set the state of the media and other stuff
// like GUI calls.
if(event->count > 0)
return FALSE;
- GdkWindow *window = be->GetControl()->GTKGetDrawingWindow();
+ GdkWindow* window = gtk_widget_get_window(widget);
- // I've seen this reccommended somewhere...
+ // I've seen this recommended somewhere...
// TODO: Is this needed? Maybe it is just cruft...
// gst_x_overlay_set_xwindow_id( GST_X_OVERLAY(be->m_xoverlay),
// GDK_WINDOW_XWINDOW( window ) );
//-----------------------------------------------------------------------------
#ifdef __WXGTK__
extern "C" {
-static gint gtk_window_realize_callback(GtkWidget*,
+static gint gtk_window_realize_callback(GtkWidget* widget,
wxGStreamerMediaBackend* be)
{
- 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?!?!??
+ gdk_flush();
- GdkWindow *window = be->GetControl()->GTKGetDrawingWindow();
+ GdkWindow* window = gtk_widget_get_window(widget);
wxASSERT(window);
gst_x_overlay_set_xwindow_id( GST_X_OVERLAY(be->m_xoverlay),
// Called by gstreamer when the media is done playing ("end of stream")
//-----------------------------------------------------------------------------
extern "C" {
-static void gst_finish_callback(GstElement *play,
+static void gst_finish_callback(GstElement *WXUNUSED(play),
wxGStreamerMediaBackend* be)
{
wxLogTrace(wxTRACE_GStreamer, wxT("gst_finish_callback"));
// on the command line as well for those who want extra traces.
//-----------------------------------------------------------------------------
extern "C" {
-static void gst_error_callback(GstElement *play,
- GstElement *src,
+static void gst_error_callback(GstElement *WXUNUSED(play),
+ GstElement *WXUNUSED(src),
GError *err,
gchar *debug,
- wxGStreamerMediaBackend* be)
+ wxGStreamerMediaBackend* WXUNUSED(be))
{
wxString sError;
sError.Printf(wxT("gst_error_callback\n")
//-----------------------------------------------------------------------------
extern "C" {
static void gst_notify_caps_callback(GstPad* pad,
- GParamSpec* pspec,
+ GParamSpec* WXUNUSED(pspec),
wxGStreamerMediaBackend* be)
{
wxLogTrace(wxTRACE_GStreamer, wxT("gst_notify_caps_callback"));
//-----------------------------------------------------------------------------
#if GST_VERSION_MAJOR > 0 || GST_VERSION_MINOR >= 10
extern "C" {
-static void gst_notify_stream_info_callback(GstElement* element,
- GParamSpec* pspec,
+static void gst_notify_stream_info_callback(GstElement* WXUNUSED(element),
+ GParamSpec* WXUNUSED(pspec),
wxGStreamerMediaBackend* be)
{
wxLogTrace(wxTRACE_GStreamer, wxT("gst_notify_stream_info_callback"));
//-----------------------------------------------------------------------------
#if GST_VERSION_MAJOR > 0 || GST_VERSION_MINOR >= 10
extern "C" {
-static gboolean gst_bus_async_callback(GstBus* bus,
+static gboolean gst_bus_async_callback(GstBus* WXUNUSED(bus),
GstMessage* message,
wxGStreamerMediaBackend* be)
{
{
// Use the xoverlay extension to tell gstreamer to play in our window
#ifdef __WXGTK__
- if(!GTK_WIDGET_REALIZED(m_ctrl->m_wxwindow))
+ if (!gtk_widget_get_realized(m_ctrl->m_wxwindow))
{
// Not realized yet - set to connect at realization time
g_signal_connect (m_ctrl->m_wxwindow,
}
else
{
- wxYield(); // see realize callback...
- GdkWindow *window = m_ctrl->m_wxwindow->GTKGetDrawingWindow();
+ gdk_flush();
+
+ GdkWindow* window = gtk_widget_get_window(m_ctrl->m_wxwindow);
wxASSERT(window);
#endif
-
- gst_x_overlay_set_xwindow_id( GST_X_OVERLAY(m_xoverlay),
+ 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,
+ g_signal_connect(m_ctrl->m_wxwindow,
// m_ctrl->m_wxwindow/*m_ctrl->m_widget*/,
"expose_event",
G_CALLBACK(gtk_window_expose_callback), this);
char **argvGST = new char*[wxTheApp->argc + 1];
for ( i = 0; i < wxTheApp->argc; i++ )
{
- argvGST[i] = wxStrdupA(wxConvUTF8.cWX2MB(wxTheApp->argv[i]));
+ argvGST[i] = wxStrdupA(wxTheApp->argv[i].utf8_str());
}
argvGST[wxTheApp->argc] = NULL;
// Called when the window is moved - GStreamer takes care of this
// for us so nothing is needed
//-----------------------------------------------------------------------------
-void wxGStreamerMediaBackend::Move(int x, int y, int w, int h)
+void wxGStreamerMediaBackend::Move(int WXUNUSED(x),
+ int WXUNUSED(y),
+ int WXUNUSED(w),
+ int WXUNUSED(h))
{
}
m_dRate = dRate;
return true;
}
+#else
+ wxUnusedVar(dRate);
#endif
#endif