vlc/vlc-2.0 | branch: master | Felix Paul Kühne <[email protected]> | Mon
Jan 21 22:08:39 2013 +0100| [7ce065dd2c3817bf278d5044c1c810939a1e6789] |
committer: Felix Paul Kühne
vout_macosx: protect vout_display_SendEvent calls to prevent potential crashes
(cherry picked from commit 0a86a76fec01fe495ace7894c4ecb6be32b4fef7)
Conflicts:
modules/video_output/macosx.m
> http://git.videolan.org/gitweb.cgi/vlc/vlc-2.0.git/?a=commit;h=7ce065dd2c3817bf278d5044c1c810939a1e6789
---
NEWS | 1 +
modules/video_output/macosx.m | 29 +++++++++++++++++++++--------
2 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/NEWS b/NEWS
index d5e0f53..612ffbf 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,7 @@ Mac OS X:
* Fix listing of the lua interfaces (web, telnet and console)
in the advanced preferences panel
* Fix spatializer audio filter panel
+ * Fix crash within the video output code
Changes between 2.0.4 and 2.0.5:
diff --git a/modules/video_output/macosx.m b/modules/video_output/macosx.m
index c25112a..336541a 100644
--- a/modules/video_output/macosx.m
+++ b/modules/video_output/macosx.m
@@ -708,10 +708,13 @@ static void OpenglSwap (vlc_gl_t *gl)
- (void)mouseDown:(NSEvent *)o_event
{
- if ([o_event type] == NSLeftMouseDown && !([o_event modifierFlags] &
NSControlKeyMask))
- {
- if ([o_event clickCount] <= 1)
- vout_display_SendEventMousePressed (vd, MOUSE_BUTTON_LEFT);
+ @synchronized (self) {
+ if (vd) {
+ if ([o_event type] == NSLeftMouseDown && !([o_event modifierFlags]
& NSControlKeyMask)) {
+ if ([o_event clickCount] <= 1)
+ vout_display_SendEventMousePressed (vd, MOUSE_BUTTON_LEFT);
+ }
+ }
}
[super mouseDown:o_event];
@@ -719,22 +722,32 @@ static void OpenglSwap (vlc_gl_t *gl)
- (void)otherMouseDown:(NSEvent *)o_event
{
- vout_display_SendEventMousePressed (vd, MOUSE_BUTTON_CENTER);
+ @synchronized (self) {
+ if (vd)
+ vout_display_SendEventMousePressed (vd, MOUSE_BUTTON_CENTER);
+ }
[super otherMouseDown: o_event];
}
- (void)mouseUp:(NSEvent *)o_event
{
- if ([o_event type] == NSLeftMouseUp)
- vout_display_SendEventMouseReleased (vd, MOUSE_BUTTON_LEFT);
+ @synchronized (self) {
+ if (vd) {
+ if ([o_event type] == NSLeftMouseUp)
+ vout_display_SendEventMouseReleased (vd, MOUSE_BUTTON_LEFT);
+ }
+ }
[super mouseUp: o_event];
}
- (void)otherMouseUp:(NSEvent *)o_event
{
- vout_display_SendEventMouseReleased (vd, MOUSE_BUTTON_CENTER);
+ @synchronized (self) {
+ if (vd)
+ vout_display_SendEventMouseReleased (vd, MOUSE_BUTTON_CENTER);
+ }
[super otherMouseUp: o_event];
}
_______________________________________________
vlc-commits mailing list
[email protected]
http://mailman.videolan.org/listinfo/vlc-commits