summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2016-03-07 08:52:54 +0200
committerSebastian Dröge <sebastian@centricular.com>2016-03-07 08:54:47 +0200
commit5f925a15805dd2384436c36ec1cc4248f8bb370b (patch)
tree695503e67a3f325ff770af16037202b2b223d91b
parent797d6415dfd6e111efb2cab544958a67cbf22b17 (diff)
downloadgstreamer-plugins-bad-5f925a15805dd2384436c36ec1cc4248f8bb370b.tar.gz
Revert "libgstgl: cocoa, eagl: don't marshal GL calls to the context thread"
This reverts commit 797d6415dfd6e111efb2cab544958a67cbf22b17. We're frozen for 1.8.0 release and this change might have bigger impact.
-rw-r--r--gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h6
-rw-r--r--gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m25
-rw-r--r--gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m26
-rw-r--r--gst-libs/gst/gl/eagl/gstglcontext_eagl.h4
-rw-r--r--gst-libs/gst/gl/eagl/gstglcontext_eagl.m31
-rw-r--r--gst-libs/gst/gl/eagl/gstglwindow_eagl.m27
6 files changed, 3 insertions, 116 deletions
diff --git a/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h b/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h
index 2459e2a28..ae7abc8a6 100644
--- a/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h
+++ b/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h
@@ -40,7 +40,6 @@ struct _GstGLContextCocoaPrivate
GstGLAPI context_api;
gint source_id;
- GRecMutex current_lock;
};
@@ -60,13 +59,8 @@ struct _GstGLContextCocoaPrivate
gboolean gst_gl_window_cocoa_create_window (GstGLWindowCocoa *window_cocoa);
-
void _invoke_on_main (GstGLWindowCB func, gpointer data);
-typedef void (*GstGLContextCocoaInvokeFunc) (gpointer data);
-void _gst_gl_context_cocoa_invoke (GstGLContext * context,
- GstGLContextCocoaInvokeFunc func, gpointer data, GDestroyNotify notify);
-
G_END_DECLS
#endif /* __GST_GL_COCOA_PRIVATE_H__ */
diff --git a/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m b/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m
index c50d0069f..ac1e0d692 100644
--- a/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m
+++ b/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m
@@ -43,18 +43,14 @@ GST_DEBUG_CATEGORY_STATIC (gst_gl_context_cocoa_debug);
G_DEFINE_TYPE_WITH_CODE (GstGLContextCocoa, gst_gl_context_cocoa,
GST_GL_TYPE_CONTEXT, GST_DEBUG_CATEGORY_INIT (gst_gl_context_cocoa_debug, "glcontext_cocoa", 0, "Cocoa GL Context"); );
-static void gst_gl_context_cocoa_finalize (GObject * object);
static void
gst_gl_context_cocoa_class_init (GstGLContextCocoaClass * klass)
{
- GObjectClass *gobject_class = (GObjectClass *) klass;
GstGLContextClass *context_class = (GstGLContextClass *) klass;
g_type_class_add_private (klass, sizeof (GstGLContextCocoaPrivate));
- gobject_class->finalize = gst_gl_context_cocoa_finalize;
-
context_class->destroy_context =
GST_DEBUG_FUNCPTR (gst_gl_context_cocoa_destroy_context);
context_class->create_context =
@@ -72,13 +68,6 @@ static void
gst_gl_context_cocoa_init (GstGLContextCocoa * context)
{
context->priv = GST_GL_CONTEXT_COCOA_GET_PRIVATE (context);
- g_rec_mutex_init (&context->priv->current_lock);
-}
-
-static void gst_gl_context_cocoa_finalize (GObject * object)
-{
- g_rec_mutex_clear (&GST_GL_CONTEXT_COCOA (object)->priv->current_lock);
- G_OBJECT_CLASS (gst_gl_context_cocoa_parent_class)->finalize (object);
}
/* Must be called in the gl thread */
@@ -338,17 +327,3 @@ gst_gl_context_cocoa_get_current_context (void)
{
return (guintptr) CGLGetCurrentContext ();
}
-
-void
-_gst_gl_context_cocoa_invoke (GstGLContext * context,
- GstGLContextCocoaInvokeFunc func, gpointer data, GDestroyNotify destroy)
-{
- GstGLContextCocoa *context_cocoa = (GstGLContextCocoa *) context;
-
- g_rec_mutex_lock (&context_cocoa->priv->current_lock);
- gst_gl_context_activate (context, TRUE);
- func (data);
- if (destroy)
- destroy (data);
- g_rec_mutex_unlock (&context_cocoa->priv->current_lock);
-}
diff --git a/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m b/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
index 3d771fb6d..0d027c5a1 100644
--- a/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
+++ b/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
@@ -77,10 +77,6 @@ static void gst_gl_window_cocoa_set_preferred_size (GstGLWindow * window,
gint width, gint height);
static void gst_gl_window_cocoa_show (GstGLWindow * window);
static void gst_gl_window_cocoa_queue_resize (GstGLWindow * window);
-static void gst_gl_window_cocoa_send_message_async (GstGLWindow * window,
- GstGLWindowCB callback, gpointer data, GDestroyNotify destroy);
-static void gst_gl_window_cocoa_send_message (GstGLWindow * window,
- GstGLWindowCB callback, gpointer data);
struct _GstGLWindowCocoaPrivate
{
@@ -115,10 +111,6 @@ gst_gl_window_cocoa_class_init (GstGLWindowCocoaClass * klass)
GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_set_preferred_size);
window_class->show = GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_show);
window_class->queue_resize = GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_queue_resize);
- window_class->send_message_async =
- GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_send_message_async);
- window_class->send_message =
- GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_send_message);
gobject_class->finalize = gst_gl_window_cocoa_finalize;
}
@@ -378,24 +370,6 @@ gst_gl_cocoa_resize_cb (GstGLNSView * view, guint width, guint height)
[pool release];
}
-static void
-gst_gl_window_cocoa_send_message_async (GstGLWindow * window,
- GstGLWindowCB callback, gpointer data, GDestroyNotify destroy)
-{
- GstGLContext *context = gst_gl_window_get_context (window);
- _gst_gl_context_cocoa_invoke (context, callback, data, destroy);
- gst_object_unref (context);
-}
-
-static void
-gst_gl_window_cocoa_send_message (GstGLWindow * window,
- GstGLWindowCB callback, gpointer data)
-{
- GstGLContext *context = gst_gl_window_get_context (window);
- _gst_gl_context_cocoa_invoke (context, callback, data, NULL);
- gst_object_unref (context);
-}
-
/* =============================================================*/
/* */
/* GstGLNSWindow implementation */
diff --git a/gst-libs/gst/gl/eagl/gstglcontext_eagl.h b/gst-libs/gst/gl/eagl/gstglcontext_eagl.h
index 0a36cb9e4..262281029 100644
--- a/gst-libs/gst/gl/eagl/gstglcontext_eagl.h
+++ b/gst-libs/gst/gl/eagl/gstglcontext_eagl.h
@@ -65,10 +65,6 @@ void gst_gl_context_eagl_prepare_draw (GstGLContextEagl * context);
void gst_gl_context_eagl_finish_draw (GstGLContextEagl * context);
guintptr gst_gl_context_eagl_get_current_context (void);
-/* private */
-typedef void (*GstGLContextEaglInvokeFunc) (gpointer data);
-void _gst_gl_context_eagl_invoke (GstGLContext * context,
- GstGLContextEaglInvokeFunc func, gpointer data, GDestroyNotify destroy);
G_END_DECLS
#endif /* __GST_GL_CONTEXT_EAGL_H__ */
diff --git a/gst-libs/gst/gl/eagl/gstglcontext_eagl.m b/gst-libs/gst/gl/eagl/gstglcontext_eagl.m
index 293a80d9c..42dde56cf 100644
--- a/gst-libs/gst/gl/eagl/gstglcontext_eagl.m
+++ b/gst-libs/gst/gl/eagl/gstglcontext_eagl.m
@@ -31,7 +31,6 @@
#define GST_CAT_DEFAULT gst_gl_context_debug
-static void gst_gl_context_eagl_finalize (GObject * object);
static gboolean gst_gl_context_eagl_create_context (GstGLContext * context,
GstGLAPI gl_api, GstGLContext * other_context, GError ** error);
static void gst_gl_context_eagl_destroy_context (GstGLContext * context);
@@ -54,7 +53,6 @@ struct _GstGLContextEaglPrivate
GLuint framebuffer;
GLuint color_renderbuffer;
GLuint depth_renderbuffer;
- GRecMutex current_lock;
};
#define GST_GL_CONTEXT_EAGL_GET_PRIVATE(o) \
@@ -65,12 +63,11 @@ G_DEFINE_TYPE (GstGLContextEagl, gst_gl_context_eagl, GST_GL_TYPE_CONTEXT);
static void
gst_gl_context_eagl_class_init (GstGLContextEaglClass * klass)
{
- GObjectClass *gobject_class = (GObjectClass *) klass;
- GstGLContextClass *context_class = (GstGLContextClass *) klass;
+ GstGLContextClass *context_class;
- g_type_class_add_private (klass, sizeof (GstGLContextEaglPrivate));
+ context_class = (GstGLContextClass *) klass;
- gobject_class->finalize = gst_gl_context_eagl_finalize;
+ g_type_class_add_private (klass, sizeof (GstGLContextEaglPrivate));
context_class->destroy_context =
GST_DEBUG_FUNCPTR (gst_gl_context_eagl_destroy_context);
@@ -93,14 +90,6 @@ static void
gst_gl_context_eagl_init (GstGLContextEagl * context)
{
context->priv = GST_GL_CONTEXT_EAGL_GET_PRIVATE (context);
- g_rec_mutex_init (&context->priv->current_lock);
-}
-
-static void
-gst_gl_context_eagl_finalize (GObject * object)
-{
- g_rec_mutex_clear (&GST_GL_CONTEXT_EAGL (object)->priv->current_lock);
- G_OBJECT_CLASS (gst_gl_context_eagl_parent_class)->finalize (object);
}
/* Must be called in the gl thread */
@@ -374,20 +363,6 @@ gst_gl_context_eagl_activate (GstGLContext * context, gboolean activate)
return TRUE;
}
-void
-_gst_gl_context_eagl_invoke (GstGLContext * context,
- GstGLContextEaglInvokeFunc func, gpointer data, GDestroyNotify destroy)
-{
- GstGLContextEagl *context_eagl = (GstGLContextEagl *) context;
-
- g_rec_mutex_lock (&context_eagl->priv->current_lock);
- gst_gl_context_activate (context, TRUE);
- func (data);
- if (destroy)
- destroy (data);
- g_rec_mutex_unlock (&context_eagl->priv->current_lock);
-}
-
static GstGLAPI
gst_gl_context_eagl_get_gl_api (GstGLContext * context)
{
diff --git a/gst-libs/gst/gl/eagl/gstglwindow_eagl.m b/gst-libs/gst/gl/eagl/gstglwindow_eagl.m
index c90a3816d..eb9d4f7f4 100644
--- a/gst-libs/gst/gl/eagl/gstglwindow_eagl.m
+++ b/gst-libs/gst/gl/eagl/gstglwindow_eagl.m
@@ -48,10 +48,6 @@ static void gst_gl_window_eagl_set_window_handle (GstGLWindow * window,
static void gst_gl_window_eagl_set_preferred_size (GstGLWindow * window,
gint width, gint height);
static void gst_gl_window_eagl_draw (GstGLWindow * window);
-static void gst_gl_window_eagl_send_message_async (GstGLWindow * window,
- GstGLWindowCB callback, gpointer data, GDestroyNotify destroy);
-static void gst_gl_window_eagl_send_message (GstGLWindow * window,
- GstGLWindowCB callback, gpointer data);
struct _GstGLWindowEaglPrivate
{
@@ -76,10 +72,6 @@ gst_gl_window_eagl_class_init (GstGLWindowEaglClass * klass)
window_class->draw = GST_DEBUG_FUNCPTR (gst_gl_window_eagl_draw);
window_class->set_preferred_size =
GST_DEBUG_FUNCPTR (gst_gl_window_eagl_set_preferred_size);
- window_class->send_message_async =
- GST_DEBUG_FUNCPTR (gst_gl_window_eagl_send_message_async);
- window_class->send_message =
- GST_DEBUG_FUNCPTR (gst_gl_window_eagl_send_message);
}
static void
@@ -133,25 +125,6 @@ gst_gl_window_eagl_set_preferred_size (GstGLWindow * window, gint width, gint he
window_eagl->priv->preferred_width = width;
window_eagl->priv->preferred_height = height;
}
-
-static void
-gst_gl_window_eagl_send_message_async (GstGLWindow * window,
- GstGLWindowCB callback, gpointer data, GDestroyNotify destroy)
-{
- GstGLContext *context = gst_gl_window_get_context (window);
- _gst_gl_context_eagl_invoke (context, callback, data, destroy);
- gst_object_unref (context);
-}
-
-static void
-gst_gl_window_eagl_send_message (GstGLWindow * window,
- GstGLWindowCB callback, gpointer data)
-{
- GstGLContext *context = gst_gl_window_get_context (window);
- _gst_gl_context_eagl_invoke (context, callback, data, NULL);
- gst_object_unref (context);
-}
-
static void
draw_cb (gpointer data)