summaryrefslogtreecommitdiffstats
path: root/osdep
diff options
context:
space:
mode:
authorStefano Pigozzi <stefano.pigozzi@gmail.com>2013-06-19 19:25:19 +0200
committerStefano Pigozzi <stefano.pigozzi@gmail.com>2013-06-19 21:24:26 +0200
commit0407869ae3aeea0d015b18bd8a901034ed45e76f (patch)
treee5cc59f788329dff3783da64f92c24f475e93688 /osdep
parenta9f76c6d86d6fbbc91878995f0d3ff8d94690418 (diff)
downloadmpv-0407869ae3aeea0d015b18bd8a901034ed45e76f.tar.bz2
mpv-0407869ae3aeea0d015b18bd8a901034ed45e76f.tar.xz
OSX: fix compilation with 10.7 SDK
Recent work in the OS X parts of the code started using clang's support for Obj-C's support for Literals and Subscripting. These particular language features remove a lot of boilerplate code and allow to interact with collections as consicely as one would do in scripting languages like Ruby or Python. Even if these are compiler features, Subscripting needs some runtime support. This is provided with libarclite (coming with the compiler), but we need to add the proper method definitions since the 10.7 SDK headers do not include them. That is because 10.7 shipped before this language features. This will cause some warnings when compiling with the 10.7 SDK because the commit also redefines BOOL to make autoboxing/unboxing of BOOL literals to work. If you need to test this for whatever reason on 10.8, just pass in the correct SDK to configure's extra cflags: ./configure --extra-cflags='-mmacosx-version-min=10.7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk' Fixes #117
Diffstat (limited to 'osdep')
-rw-r--r--osdep/macosx_application.m1
-rw-r--r--osdep/macosx_compat.h57
-rw-r--r--osdep/macosx_events.m4
3 files changed, 61 insertions, 1 deletions
diff --git a/osdep/macosx_application.m b/osdep/macosx_application.m
index 665a04b222..f3fb5db3a5 100644
--- a/osdep/macosx_application.m
+++ b/osdep/macosx_application.m
@@ -24,6 +24,7 @@
#include "core/input/keycodes.h"
#include "osdep/macosx_application_objc.h"
+#include "osdep/macosx_compat.h"
static pthread_t playback_thread_id;
diff --git a/osdep/macosx_compat.h b/osdep/macosx_compat.h
new file mode 100644
index 0000000000..f248538619
--- /dev/null
+++ b/osdep/macosx_compat.h
@@ -0,0 +1,57 @@
+/*
+ * Application Event Handling
+ *
+ * This file is part of mpv.
+ *
+ * mpv is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * mpv is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with mpv. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef MPV_MACOSX_COMPAT
+#define MPV_MACOSX_COMPAT
+
+#import <Cocoa/Cocoa.h>
+
+#if !defined(MAC_OS_X_VERSION_10_8)
+# define MAC_OS_X_VERSION_10_8 MAC_OS_X_VERSION_10_7 + 1
+#endif
+
+#if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_8)
+@interface NSArray (SubscriptingAdditions)
+- (id)objectAtIndexedSubscript:(NSUInteger)index;
+@end
+
+@interface NSMutableArray (SubscriptingAdditions)
+- (void)setObject: (id)object atIndexedSubscript:(NSUInteger)index;
+@end
+
+@interface NSDictionary (SubscriptingAdditions)
+- (id)objectForKeyedSubscript:(id)key;
+@end
+
+@interface NSMutableDictionary (SubscriptingAdditions)
+- (void)setObject: (id)object forKeyedSubscript:(id)key;
+@end
+
+#if __has_feature(objc_bool)
+ #define YES __objc_yes
+ #define NO __objc_no
+#else
+ #define YES ((BOOL)1)
+ #define NO ((BOOL)0)
+#endif
+
+#endif
+
+#endif /* MPV_MACOSX_COMPAT */
diff --git a/osdep/macosx_events.m b/osdep/macosx_events.m
index ebeb260221..9a27f7049b 100644
--- a/osdep/macosx_events.m
+++ b/osdep/macosx_events.m
@@ -30,8 +30,10 @@
#include "core/mp_fifo.h"
// doesn't make much sense, but needed to access keymap functionality
#include "video/out/vo.h"
-#include "osdep/macosx_events.h"
+
#import "osdep/macosx_application_objc.h"
+#include "osdep/macosx_events.h"
+#include "osdep/macosx_compat.h"
#define NSLeftAlternateKeyMask (0x000020 | NSAlternateKeyMask)
#define NSRightAlternateKeyMask (0x000040 | NSAlternateKeyMask)