{
gst_d3dvideosink_clear (sink);
- sink->d3d_device_lock = g_mutex_new ();
+ g_mutex_init (&sink->d3d_device_lock);
sink->par = g_new0 (GValue, 1);
g_value_init (sink->par, GST_TYPE_FRACTION);
sink->par = NULL;
}
- g_mutex_free (sink->d3d_device_lock);
- sink->d3d_device_lock = NULL;
+ g_mutex_clear (&sink->d3d_device_lock);
G_OBJECT_CLASS (parent_class)->finalize (gobject);
}
if (shared.hidden_window_created_signal == NULL)
goto failed;
- shared.hidden_window_thread = g_thread_create ((GThreadFunc)
- gst_d3dvideosink_shared_hidden_window_thread, sink, TRUE, NULL);
+ shared.hidden_window_thread = g_thread_try_new ("shared hidden window thread",
+ (GThreadFunc) gst_d3dvideosink_shared_hidden_window_thread, sink, NULL);
/* wait maximum 60 seconds for window to be created */
if (WaitForSingleObject (shared.hidden_window_created_signal,
if (sink->window_created_signal == NULL)
goto failed;
- sink->window_thread =
- g_thread_create ((GThreadFunc) gst_d3dvideosink_window_thread, sink, TRUE,
- NULL);
+ sink->window_thread = g_thread_try_new ("window thread",
+ (GThreadFunc) gst_d3dvideosink_window_thread, sink, NULL);
/* wait maximum 10 seconds for window to be created */
if (WaitForSingleObject (sink->window_created_signal, 10000) != WAIT_OBJECT_0)
typedef struct _GstD3DVideoSink GstD3DVideoSink;
typedef struct _GstD3DVideoSinkClass GstD3DVideoSinkClass;
-#define GST_D3DVIDEOSINK_D3D_DEVICE_LOCK(sink) g_mutex_lock (GST_D3DVIDEOSINK (sink)->d3d_device_lock)
-#define GST_D3DVIDEOSINK_D3D_DEVICE_TRYLOCK(sink) g_mutex_trylock (GST_D3DVIDEOSINK (sink)->d3d_device_lock)
-#define GST_D3DVIDEOSINK_D3D_DEVICE_UNLOCK(sink) g_mutex_unlock (GST_D3DVIDEOSINK (sink)->d3d_device_lock)
+#define GST_D3DVIDEOSINK_D3D_DEVICE_LOCK(sink) g_mutex_lock (&GST_D3DVIDEOSINK (sink)->d3d_device_lock)
+#define GST_D3DVIDEOSINK_D3D_DEVICE_TRYLOCK(sink) g_mutex_trylock (&GST_D3DVIDEOSINK (sink)->d3d_device_lock)
+#define GST_D3DVIDEOSINK_D3D_DEVICE_UNLOCK(sink) g_mutex_unlock (&GST_D3DVIDEOSINK (sink)->d3d_device_lock)
struct _GstD3DVideoSink
{
GstVideoSink sink;
/* source rectangle */
- //gint width;
- //gint height;
GstVideoFormat format;
GstVideoInfo info;
WNDPROC prevWndProc;
gboolean is_hooked;
- GMutex *d3d_device_lock;
+ GMutex d3d_device_lock;
LPDIRECT3DSURFACE9 d3d_offscreen_surface;
LPDIRECT3DDEVICE9 d3ddev;
D3DPRESENT_PARAMETERS d3dpp;
static DirectXAPI *directx_determine_best_available_api (void);
/* Mutex macros */
-#define DIRECTX_LOCK g_static_rec_mutex_lock (&dx_lock);
-#define DIRECTX_UNLOCK g_static_rec_mutex_unlock (&dx_lock);
+#define DIRECTX_LOCK g_rec_mutex_lock (&dx_lock);
+#define DIRECTX_UNLOCK g_rec_mutex_unlock (&dx_lock);
typedef struct _DirectXInfo DirectXInfo;
struct _DirectXInfo
/* Private vars */
static DirectXInfo dx;
-static GStaticRecMutex dx_lock = G_STATIC_REC_MUTEX_INIT;
+static GRecMutex dx_lock;
gboolean
directx_initialize (DirectXInitParams * init_params)