summaryrefslogtreecommitdiffstats
path: root/video/out/cocoa/view.m
diff options
context:
space:
mode:
authorStefano Pigozzi <stefano.pigozzi@gmail.com>2014-10-04 11:47:17 +0200
committerStefano Pigozzi <stefano.pigozzi@gmail.com>2014-10-04 11:47:17 +0200
commitd1bdf9ea1195c5f81906631ab789cb741a96968c (patch)
tree50f5eb9218907dd07df3a6f7f15a8bbca9f8a99f /video/out/cocoa/view.m
parentd10b8c7e84c8073ccf64d1371168f54b1c0db1f1 (diff)
downloadmpv-d1bdf9ea1195c5f81906631ab789cb741a96968c.tar.bz2
mpv-d1bdf9ea1195c5f81906631ab789cb741a96968c.tar.xz
cocoa: move to a simpler threading model
Unfortunately using dispatch_sync for synchronization turned out to be really bad for us. It caused a wide array of race conditions, deadlocks, etc. Moving to a very simple mutex. It's not clear to me how to do liveresizing with this, for now it just flickers with is unacceptable (maybe I'll draw black instead). This should fix all the threading cocoa bugs. Reopen if it's not the case! Fixes #751 Fixes #1129
Diffstat (limited to 'video/out/cocoa/view.m')
-rw-r--r--video/out/cocoa/view.m3
1 files changed, 2 insertions, 1 deletions
diff --git a/video/out/cocoa/view.m b/video/out/cocoa/view.m
index f5b69a7fbc..0c5a92123e 100644
--- a/video/out/cocoa/view.m
+++ b/video/out/cocoa/view.m
@@ -229,8 +229,9 @@
- (void)drawRect:(NSRect)rect
{
- [self.adapter performAsyncResize:[self frameInPixels].size];
+ [self.adapter lock];
[self.adapter setNeedsResize];
+ [self.adapter unlock];
}
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender