mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 20:42:30 +00:00
seek: Add window-embedding support for OS X/Quartz
osxvideosink implements the GstXOverlay interface since some time now.
This commit is contained in:
parent
662830c21d
commit
775d851d66
1 changed files with 10 additions and 5 deletions
|
@ -40,6 +40,8 @@
|
||||||
#include <gdk/gdkx.h>
|
#include <gdk/gdkx.h>
|
||||||
#elif defined (GDK_WINDOWING_WIN32)
|
#elif defined (GDK_WINDOWING_WIN32)
|
||||||
#include <gdk/gdkwin32.h>
|
#include <gdk/gdkwin32.h>
|
||||||
|
#elif defined (GDK_WINDOWING_QUARTZ)
|
||||||
|
#include <gdk/gdkquartzwindow.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <gst/interfaces/xoverlay.h>
|
#include <gst/interfaces/xoverlay.h>
|
||||||
|
@ -2457,10 +2459,10 @@ msg_clock_lost (GstBus * bus, GstMessage * message, GstPipeline * data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined (GDK_WINDOWING_X11) || defined (GDK_WINDOWING_WIN32)
|
#if defined (GDK_WINDOWING_X11) || defined (GDK_WINDOWING_WIN32) || defined (GDK_WINDOWING_QUARTZ)
|
||||||
|
|
||||||
static GstElement *xoverlay_element = NULL;
|
static GstElement *xoverlay_element = NULL;
|
||||||
static gulong embed_xid = 0;
|
static guintptr embed_xid = 0;
|
||||||
|
|
||||||
/* We set the xid here in response to the prepare-xwindow-id message via a
|
/* We set the xid here in response to the prepare-xwindow-id message via a
|
||||||
* bus sync handler because we don't know the actual videosink used from the
|
* bus sync handler because we don't know the actual videosink used from the
|
||||||
|
@ -2529,7 +2531,10 @@ realize_cb (GtkWidget * widget, gpointer data)
|
||||||
#if defined (GDK_WINDOWING_WIN32)
|
#if defined (GDK_WINDOWING_WIN32)
|
||||||
embed_xid = GDK_WINDOW_HWND (window);
|
embed_xid = GDK_WINDOW_HWND (window);
|
||||||
g_print ("Window realize: video window HWND = %lu\n", embed_xid);
|
g_print ("Window realize: video window HWND = %lu\n", embed_xid);
|
||||||
#else
|
#elif defined (GDK_WINDOWING_QUARTZ)
|
||||||
|
embed_xid = gdk_quartz_window_get_nsview (window);
|
||||||
|
g_print ("Window realize: video window NSView = %p\n", embed_xid);
|
||||||
|
#elif defined (GDK_WINDOWING_X11)
|
||||||
embed_xid = GDK_WINDOW_XID (window);
|
embed_xid = GDK_WINDOW_XID (window);
|
||||||
g_print ("Window realize: video window XID = %lu\n", embed_xid);
|
g_print ("Window realize: video window XID = %lu\n", embed_xid);
|
||||||
#endif
|
#endif
|
||||||
|
@ -2563,7 +2568,7 @@ connect_bus_signals (GstElement * pipeline)
|
||||||
{
|
{
|
||||||
GstBus *bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
|
GstBus *bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
|
||||||
|
|
||||||
#if defined (GDK_WINDOWING_X11) || defined (GDK_WINDOWING_WIN32)
|
#if defined (GDK_WINDOWING_X11) || defined (GDK_WINDOWING_WIN32) || defined (GDK_WINDOWING_QUARTZ)
|
||||||
/* handle prepare-xwindow-id element message synchronously */
|
/* handle prepare-xwindow-id element message synchronously */
|
||||||
gst_bus_set_sync_handler (bus, (GstBusSyncHandler) bus_sync_handler,
|
gst_bus_set_sync_handler (bus, (GstBusSyncHandler) bus_sync_handler,
|
||||||
pipeline);
|
pipeline);
|
||||||
|
@ -3014,7 +3019,7 @@ main (int argc, char **argv)
|
||||||
* asks for the XID of the window to render onto */
|
* asks for the XID of the window to render onto */
|
||||||
gtk_widget_realize (window);
|
gtk_widget_realize (window);
|
||||||
|
|
||||||
#if defined (GDK_WINDOWING_X11) || defined (GDK_WINDOWING_WIN32)
|
#if defined (GDK_WINDOWING_X11) || defined (GDK_WINDOWING_WIN32) || defined (GDK_WINDOWING_QUARTZ)
|
||||||
/* we should have the XID now */
|
/* we should have the XID now */
|
||||||
g_assert (embed_xid != 0);
|
g_assert (embed_xid != 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue