Skip to content

Commit

Permalink
OSX: fix compilation with 10.7 SDK
Browse files Browse the repository at this point in the history
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
  • Loading branch information
pigoz committed Jun 19, 2013
1 parent a9f76c6 commit 0407869
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 1 deletion.
1 change: 1 addition & 0 deletions osdep/macosx_application.m
Expand Up @@ -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;

Expand Down
57 changes: 57 additions & 0 deletions 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 */
4 changes: 3 additions & 1 deletion osdep/macosx_events.m
Expand Up @@ -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)
Expand Down
1 change: 1 addition & 0 deletions video/out/cocoa_common.m
Expand Up @@ -38,6 +38,7 @@

#include "osdep/macosx_application.h"
#include "osdep/macosx_events.h"
#include "osdep/macosx_compat.h"

@interface GLMPlayerWindow : NSWindow <NSWindowDelegate>
- (BOOL)canBecomeKeyWindow;
Expand Down

0 comments on commit 0407869

Please sign in to comment.