Commit cd19d6a4 authored by Felix Paul Kühne's avatar Felix Paul Kühne

* collection of various fixes and edits

    - removed <10.3 support in the preferences' code
    - added preliminary support for Obj-C 2.0 / Garbage Collection
        - needs to be enabled manually in intf.h for now and is restricted to future Darwin release
    - updated various copyright dates to approbate values
    - configured the source tree in the Xcode project for future Xcode releases
    - finally renamed the Xcode project to the correct bundle extension
parent b181bb11
......@@ -207,6 +207,7 @@
showBookmarks = id;
showExtended = id;
showMessagesPanel = id;
showOrHidePlaylistColumns = id;
showSFilters = id;
showWizard = id;
timesliderUpdate = id;
......@@ -324,6 +325,7 @@
"o_mu_ffmpeg_pp" = id;
"o_mu_file" = id;
"o_mu_help" = id;
"o_mu_plcolumns" = id;
"o_mu_program" = id;
"o_mu_screen" = id;
"o_mu_subtitle" = id;
......
......@@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>IBDocumentLocation</key>
<string>647 66 478 430 0 0 1440 878 </string>
<string>555 99 478 430 0 0 1440 878 </string>
<key>IBEditorPositions</key>
<dict>
<key>1617</key>
......@@ -25,10 +25,11 @@
<array/>
<key>IBOpenObjects</key>
<array>
<integer>2416</integer>
<integer>29</integer>
<integer>2769</integer>
<integer>29</integer>
<integer>2197</integer>
<integer>2730</integer>
<integer>2416</integer>
<integer>21</integer>
</array>
<key>IBSystem Version</key>
......
......@@ -1292,9 +1292,12 @@
089C1669FE841209C02AAC07 /* Project object */ = {
isa = PBXProject;
buildConfigurationList = C2F2A6EA09588F1B00018C74 /* Build configuration list for PBXProject "vlc" */;
compatibilityVersion = "Xcode 2.4";
hasScannedForEncodings = 1;
mainGroup = 089C166AFE841209C02AAC07 /* vlc */;
projectDirPath = "";
projectRoot = ../..;
shouldCheckCompatibility = 1;
targets = (
089C1673FE841209C02AAC07 /* vlc */,
);
......
......@@ -27,12 +27,12 @@
*****************************************************************************
*
* Note that changes made by any members or contributors of the VideoLAN team
* (i.e. changes that were checked in into one of VideoLAN's source code
* (i.e. changes that were checked in exclusively into one of VideoLAN's source code
* repositories) are licensed under the GNU General Public License version 2,
* or (at your option) any later version.
* Thus, the following statements apply to our changes:
*
* Copyright (C) 2006 the VideoLAN team
* Copyright (C) 2006-2007 the VideoLAN team
* Authors: Eric Petit <titer@m0k.org>
* Felix Kühne <fkuehne at videolan dot org>
*
......
......@@ -27,12 +27,12 @@
*****************************************************************************
*
* Note that changes made by any members or contributors of the VideoLAN team
* (i.e. changes that were checked in to one of VideoLAN's source code
* (i.e. changes that were exclusively checked in to one of VideoLAN's source code
* repositories) are licensed under the GNU General Public License version 2,
* or (at your option) any later version.
* Thus, the following statements apply to our changes:
*
* Copyright (C) 2006 the VideoLAN team
* Copyright (C) 2006-2007 the VideoLAN team
* Authors: Eric Petit <titer@m0k.org>
* Felix Kühne <fkuehne at videolan dot org>
*
......@@ -53,6 +53,9 @@
#import "AppleRemote.h"
/* this was added by the VideoLAN team to ensure Leopard-compatibility and is VLC-only */
#import "intf.h"
const char* AppleRemoteDeviceName = "AppleIRController";
const int REMOTE_SWITCH_COOKIE=19;
const NSTimeInterval DEFAULT_MAXIMUM_CLICK_TIME_DIFFERENCE=0.35;
......@@ -95,6 +98,15 @@ const NSTimeInterval HOLD_RECOGNITION_TIME_INTERVAL=0.4;
[super dealloc];
}
/* this was added by the VideoLAN team to ensure Leopard-compatibility and is VLC-only */
#if GC_ENABLED
- (void)finalize
{
[self stopListening: self];
[super finalize];
}
#endif
- (int) remoteId {
return remoteId;
}
......
/*****************************************************************************
* about.m: MacOS X About Panel
*****************************************************************************
* Copyright (C) 2001-2005 the VideoLAN team
* Copyright (C) 2001-2007 the VideoLAN team
* $Id$
*
* Authors: Derk-Jan Hartman <thedj@users.sourceforge.net>
......
/*****************************************************************************
* bookmarks.m: MacOS X Bookmarks window
*****************************************************************************
* Copyright (C) 2005, 2006 the VideoLAN team
* Copyright (C) 2005 - 2007 the VideoLAN team
* $Id$
*
* Authors: Felix Kühne <fkuehne@users.sf.net>
......@@ -78,12 +78,20 @@ static VLCBookmarks *_o_sharedInstance = nil;
- (void)dealloc
{
if( p_old_input )
{
vlc_object_release( p_old_input );
}
[super dealloc];
}
#if GC_ENABLED
- (void)finalize
{
/* release old input even if GC is enabled on 10.5 */
if( p_old_input )
vlc_object_release( p_old_input );
[super finalize];
}
#endif
- (void)initStrings
{
/* localise the items */
......@@ -253,9 +261,7 @@ static VLCBookmarks *_o_sharedInstance = nil;
i = [o_tbl_dataTable selectedRow];
if( pp_bookmarks[i]->psz_name )
{
free( pp_bookmarks[i]->psz_name );
}
pp_bookmarks[i]->psz_name = strdup([[o_edit_fld_name stringValue] UTF8String]);
pp_bookmarks[i]->i_byte_offset = [[o_edit_fld_bytes stringValue] intValue];
......@@ -354,10 +360,7 @@ static VLCBookmarks *_o_sharedInstance = nil;
(input_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_INPUT,
FIND_ANYWHERE );
if( !p_input )
{
return;
}
if( !p_input ) return;
input_Control( p_input, INPUT_SET_BOOKMARK, [o_tbl_dataTable selectedRow] );
......@@ -375,10 +378,9 @@ static VLCBookmarks *_o_sharedInstance = nil;
if( !p_input ) return;
int i_focused = [o_tbl_dataTable selectedRow];
if( i_focused >= 0 )
{
input_Control( p_input, INPUT_DEL_BOOKMARK, i_focused );
}
vlc_object_release( p_input );
......@@ -407,10 +409,7 @@ static VLCBookmarks *_o_sharedInstance = nil;
seekpoint_t **pp_bookmarks;
int i_bookmarks;
if( !p_input )
{
return 0;
}
if( !p_input ) return 0;
else if( input_Control( p_input, INPUT_GET_BOOKMARKS, &pp_bookmarks,
&i_bookmarks ) != VLC_SUCCESS )
{
......@@ -435,10 +434,7 @@ static VLCBookmarks *_o_sharedInstance = nil;
char *toBeReturned;
int i_toBeReturned = 0;
if( !p_input )
{
return @"";
}
if( !p_input ) return @"";
else if( input_Control( p_input, INPUT_GET_BOOKMARKS, &pp_bookmarks,
&i_bookmarks ) != VLC_SUCCESS )
{
......@@ -468,11 +464,10 @@ static VLCBookmarks *_o_sharedInstance = nil;
}
else
{
/* may not happen, but just in case */
/* may not happen, just in case */
vlc_object_release( p_input );
msg_Err(p_intf, "unknown table column identifier (%s) while "
"updating the bookmark table", [[theTableColumn identifier]
UTF8String] );
return @"unknown identifier";
}
......
/*****************************************************************************
* equalizer.h: MacOS X interface module
*****************************************************************************
* Copyright (C) 2004 the VideoLAN team
* Copyright (C) 2004-2006 the VideoLAN team
* $Id$
*
* Authors: Jérôme Decoodt <djc@videolan.org>
......
/*****************************************************************************
* equalizer.m: MacOS X interface module
*****************************************************************************
* Copyright (C) 2004 the VideoLAN team
* Copyright (C) 2004-2006 the VideoLAN team
* $Id$
*
* Authors: Jerome Decoodt <djc@videolan.org>
......
/*****************************************************************************
* fspanel.h: MacOS X full screen panel
*****************************************************************************
* Copyright (C) 2006 the VideoLAN team
* Copyright (C) 2006-2007 the VideoLAN team
* $Id$
*
* Authors: Jrme Decoodt <djc at videolan dot org>
......
/*****************************************************************************
* fspanel.m: MacOS X full screen panel
*****************************************************************************
* Copyright (C) 2006 the VideoLAN team
* Copyright (C) 2006-2007 the VideoLAN team
* $Id$
*
* Authors: Jrme Decoodt <djc at videolan dot org>
......@@ -30,7 +30,7 @@
#import "vout.h"
#import "fspanel.h"
#define KEEP_VISIBLE_AFTER_ACTION 4 /* time in half-sec until this panel will hide again after an user's action */
#define KEEP_VISIBLE_AFTER_ACTION 4 /* time in half-sec until this panel will hide again after a user's action */
/*****************************************************************************
* VLCFSPanel
......@@ -92,6 +92,17 @@
return YES;
}
#if GC_ENABLED
- (void)finalize
{
/* dealloc isn't called on 10.5 in case that GC is enabled, so we need to provide the functionality here */
[[NSNotificationCenter defaultCenter] removeObserver: self];
[self setFadeTimer:nil];
[super finalize];
}
#endif
-(void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver: self];
......
/*****************************************************************************
* interaction.h: Mac OS X interaction dialogs
*****************************************************************************
* Copyright (C) 2005-2006 the VideoLAN team
* Copyright (C) 2005-2007 the VideoLAN team
* $Id$
*
* Authors: Derk-Jan Hartman <hartman at videolan dot org>
......@@ -94,6 +94,16 @@
return o_error_panel;
}
#if GC_ENABLED
-(void)finalize
{
/* dealloc doesn't get called on 10.5 if GC is enabled, so we need to provide the basic functionality here */
[[NSNotificationCenter defaultCenter] removeObserver:self];
[o_interaction_list removeAllObjects];
[super finalize];
}
#endif
-(void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
......
......@@ -51,6 +51,9 @@ unsigned int CocoaKeyToVLC( unichar i_key );
@"/System/Library/CoreServices/SystemVersion.plist"] \
objectForKey: @"ProductVersion"] floatValue]
/* switch this to 1, if you want to use Obj-C with GC */
#define GC_ENABLED 0
/*****************************************************************************
* intf_sys_t: description and status of the interface
*****************************************************************************/
......@@ -315,6 +318,7 @@ struct intf_sys_t
- (void)manage;
- (void)manageIntf:(NSTimer *)o_timer;
- (void)setupMenus;
- (void)refreshVoutDeviceMenu:(NSNotification *)o_notification;
- (void)setScrollField:(NSString *)o_string stopAfter:(int )timeout;
- (void)resetScrollField;
......
/*****************************************************************************
* intf.m: MacOS X interface module
*****************************************************************************
* Copyright (C) 2002-2006 the VideoLAN team
* Copyright (C) 2002-2007 the VideoLAN team
* $Id$
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
......@@ -483,6 +483,11 @@ static VLCMain *_o_sharedMainInstance = nil;
/* update the playmode stuff */
p_intf->p_sys->b_playmode_update = VLC_TRUE;
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(refreshVoutDeviceMenu:)
name: NSApplicationDidChangeScreenParametersNotification
object: nil];
nib_main_loaded = TRUE;
}
......@@ -1335,6 +1340,32 @@ static VLCMain *_o_sharedMainInstance = nil;
#undef p_input
}
- (void)refreshVoutDeviceMenu:(NSNotification *)o_notification
{
int x,y = 0;
vout_thread_t * p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT,
FIND_ANYWHERE );
if(! p_vout )
return;
/* clean the menu before adding new entries */
if( [o_mi_screen hasSubmenu] )
{
y = [[o_mi_screen submenu] numberOfItems] - 1;
msg_Dbg( VLCIntf, "%i items in submenu", y );
while( x != y )
{
msg_Dbg( VLCIntf, "removing item %i of %i", x, y );
[[o_mi_screen submenu] removeItemAtIndex: x];
x++;
}
}
[o_controls setupVarMenuItem: o_mi_screen target: (vlc_object_t *)p_vout
var: "video-device" selector: @selector(toggleVar:)];
}
- (void)setScrollField:(NSString *)o_string stopAfter:(int)timeout
{
if( timeout != -1 )
......@@ -1572,6 +1603,11 @@ static VLCMain *_o_sharedMainInstance = nil;
p_intf->b_interaction = VLC_FALSE;
var_DelCallback( p_intf, "interaction", InteractCallback, self );
/* remove global observer watching for vout device changes correctly */
[[NSNotificationCenter defaultCenter] removeObserver: self
name: NSApplicationDidChangeScreenParametersNotification
object: nil];
/* release some other objects here, because it isn't sure whether dealloc
* will be called later on -- FK (10/6/05) */
......
/*****************************************************************************
* macosx.m: Mac OS X module for vlc
*****************************************************************************
* Copyright (C) 2001-2005 the VideoLAN team
* Copyright (C) 2001-2006 the VideoLAN team
* $Id$
*
* Authors: Colin Delacroix <colin@zoy.org>
......
/*****************************************************************************
* misc.m: code not specific to vlc
*****************************************************************************
* Copyright (C) 2003-2005 the VideoLAN team
* Copyright (C) 2003-2007 the VideoLAN team
* $Id$
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
......@@ -67,6 +67,15 @@
[super dealloc];
}
#if GC_ENABLED
- (void)finalize
{
/* dealloc doesn't get called on 10.5 if GC is enabled, so we need to provide the basic functionality here */
[self unregisterDraggedTypes];
[super finalize];
}
#endif
- (void)awakeFromNib
{
[self registerForDraggedTypes:[NSArray arrayWithObjects:NSTIFFPboardType,
......@@ -145,6 +154,15 @@
[super dealloc];
}
#if GC_ENABLED
- (void)finalize
{
/* dealloc doesn't get called on 10.5 if GC is enabled, so we need to provide the basic functionality here */
[self unregisterDraggedTypes];
[super finalize];
}
#endif
- (void)awakeFromNib
{
[self registerForDraggedTypes:[NSArray arrayWithObjects:NSTIFFPboardType,
......
/*****************************************************************************
* output.h: MacOS X Output Dialog
*****************************************************************************
* Copyright (C) 2002-2003 the VideoLAN team
* Copyright (C) 2002-2006 the VideoLAN team
* $Id$
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
......
/*****************************************************************************
* output.m: MacOS X Output Dialog
*****************************************************************************
* Copyright (C) 2002-2003 the VideoLAN team
* Copyright (C) 2002-2006 the VideoLAN team
* $Id$
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
......
/*****************************************************************************
r playlistinfo.m: MacOS X interface module
*****************************************************************************
* Copyright (C) 2002-2006 the VideoLAN team
* Copyright (C) 2002-2007 the VideoLAN team
* $Id$
*
* Authors: Benjamin Pracht <bigben at videolan dot org>
......@@ -111,6 +111,16 @@
[super dealloc];
}
#if GC_ENABLED
- (void)finalize
{
/* since dealloc isn't called with enabled GC on 10.5, we need this to prevent core crashes */
if( [o_statUpdateTimer isValid] )
[o_statUpdateTimer invalidate];
[super finalize];
}
#endif
- (IBAction)togglePlaylistInfoPanel:(id)sender
{
if( [o_info_window isVisible] )
......
/*****************************************************************************
* prefs_widgets.h: Preferences controls
*****************************************************************************
* Copyright (C) 2002-2003 the VideoLAN team
* Copyright (C) 2002-2007 the VideoLAN team
* $Id$
*
* Authors: Derk-Jan Hartman <hartman at videolan.org>
......@@ -183,21 +183,7 @@ static NSMenu *o_keys_menu = nil;
@end
@interface KeyConfigControlBefore103 : VLCConfigControl
{
NSButton *o_cmd_checkbox;
NSButton *o_ctrl_checkbox;
NSButton *o_alt_checkbox;
NSButton *o_shift_checkbox;
NSPopUpButton *o_popup;
}
- (id) initWithItem: (module_config_t *)_p_item
withView: (NSView *)o_parent_view;
@end
@interface KeyConfigControlAfter103 : VLCConfigControl
@interface KeyConfigControl : VLCConfigControl
{
NSPopUpButton *o_popup;
}
......
/*****************************************************************************
* prefs_widgets.m: Preferences controls
*****************************************************************************
* Copyright (C) 2002-2003 the VideoLAN team
* Copyright (C) 2002-2007 the VideoLAN team
* $Id$
*
* Authors: Derk-Jan Hartman <hartman at videolan.org>
......@@ -51,13 +51,10 @@
action:nil keyEquivalent:@""]; \
[o_mi setKeyEquivalentModifierMask: \
0]; \
if( MACOS_VERSION >= 10.3 ) \
[o_mi setAlternate: NO]; \
[o_mi setTag: \
( value )]; \
[o_menu addItem: o_mi]; \
if( MACOS_VERSION >= 10.3 ) \
{ \
/* Ctrl */ \
o_mi = [[NSMenuItem alloc] initWithTitle: \
[[NSString stringWithUTF8String: \
......@@ -245,7 +242,6 @@ if( MACOS_VERSION >= 10.3 ) \
[o_mi setTag: \
KEY_MODIFIER_COMMAND | ( value )]; \
[o_menu addItem: o_mi]; \
} \
}
#define ADD_LABEL( o_label, superFrame, x_offset, my_y_offset, label ) \
......@@ -413,6 +409,16 @@ if( MACOS_VERSION >= 10.3 ) \
[self setFrame:frame];
}
#if GC_ENABLED
- (void)finalize
{
/* since dealloc isn't called on 10.5 if GC is enabled and since GC is
* Obj-C only, we need to do this: */
if( psz_name ) free( psz_name );
[super finalize];
}
#endif
- (void)dealloc
{
if( o_label ) [o_label release];
......@@ -890,18 +896,9 @@ if( MACOS_VERSION >= 10.3 ) \
}
break;
case CONFIG_ITEM_KEY:
if( MACOS_VERSION < 10.3 )
{
p_control = [[KeyConfigControlBefore103 alloc]
initWithItem: _p_item
withView: o_parent_view];
}
else
{
p_control = [[KeyConfigControlAfter103 alloc]
p_control = [[KeyConfigControl alloc]
initWithItem: _p_item
withView: o_parent_view];
}
break;
case CONFIG_ITEM_MODULE_LIST:
case CONFIG_ITEM_MODULE_LIST_CAT:
......@@ -1974,155 +1971,7 @@ if( MACOS_VERSION >= 10.3 ) \
@end
@implementation KeyConfigControlBefore103
- (id) initWithItem: (module_config_t *)_p_item
withView: (NSView *)o_parent_view
{
NSRect mainFrame = [o_parent_view frame];
NSString *o_labelString, *o_tooltip;
mainFrame.size.height = 37;
mainFrame.size.width = mainFrame.size.width - LEFTMARGIN - RIGHTMARGIN + 1;
mainFrame.origin.x = LEFTMARGIN;
mainFrame.origin.y = 0;
if( [super initWithFrame: mainFrame item: _p_item] != nil )
{
i_view_type = CONFIG_ITEM_KEY_BEFORE_10_3;
/* add the label */
if( p_item->psz_text )
o_labelString = [[VLCMain sharedInstance]
localizedString: (char *)p_item->psz_text];
else
o_labelString = [NSString stringWithString:@""];
ADD_LABEL( o_label, mainFrame, 0, -10, o_labelString )
[o_label setAutoresizingMask:NSViewNotSizable ];
[self addSubview: o_label];
/* add the checkboxes */
o_tooltip = [[VLCMain sharedInstance] wrapString:
[[VLCMain sharedInstance]
localizedString: (char *)p_item->psz_longtext ] toWidth: PREFS_WRAP];
ADD_CHECKBOX( o_cmd_checkbox, mainFrame,
[o_label frame].size.width + 2, 0,