summaryrefslogtreecommitdiffstats
path: root/sys/osxvideo
diff options
context:
space:
mode:
Diffstat (limited to 'sys/osxvideo')
-rw-r--r--sys/osxvideo/osxvideosink.h1
-rw-r--r--sys/osxvideo/osxvideosink.m5
2 files changed, 5 insertions, 1 deletions
diff --git a/sys/osxvideo/osxvideosink.h b/sys/osxvideo/osxvideosink.h
index bb16a425..a21ac6b1 100644
--- a/sys/osxvideo/osxvideosink.h
+++ b/sys/osxvideo/osxvideosink.h
@@ -77,6 +77,7 @@ struct _GstOSXVideoSink {
gint fps_d;
GstTask *event_task;
+ GStaticRecMutex event_task_lock;
/* Unused */
gint pixel_width, pixel_height;
diff --git a/sys/osxvideo/osxvideosink.m b/sys/osxvideo/osxvideosink.m
index 5ed1541c..f14cbcab 100644
--- a/sys/osxvideo/osxvideosink.m
+++ b/sys/osxvideo/osxvideosink.m
@@ -125,7 +125,7 @@ cocoa_event_loop (GstOSXVideoSink * vsink)
untilDate:[NSDate distantPast]
inMode:NSDefaultRunLoopMode dequeue:YES ];
if ( event == nil ) {
- g_usleep (100);
+ g_usleep (2000);
break;
} else {
switch ([event type]) {
@@ -280,8 +280,10 @@ gst_osx_video_sink_osxwindow_new (GstOSXVideoSink * osxvideosink, gint width,
[NSApp setDelegate:[[GstAppDelegate alloc] init]];
[NSApp setRunning];
+ g_static_rec_mutex_init (&osxvideosink->event_task_lock);
osxvideosink->event_task = gst_task_create ((GstTaskFunction)cocoa_event_loop,
osxvideosink);
+ gst_task_set_lock (osxvideosink->event_task, &osxvideosink->event_task_lock);
gst_task_start (osxvideosink->event_task);
} else {
GstStructure *s;
@@ -327,6 +329,7 @@ gst_osx_video_sink_osxwindow_destroy (GstOSXVideoSink * osxvideosink,
gst_task_join (osxvideosink->event_task);
gst_object_unref (osxvideosink->event_task);
osxvideosink->event_task = NULL;
+ g_static_rec_mutex_free (&osxvideosink->event_task_lock);
}
g_free (osxwindow);