Commit bd4d55d7 authored by Florian G. Pflug's avatar Florian G. Pflug

Made it possible to open a File after vlc was started (you can use vlc now

without starting it from the command line)

Cleaned up playlist handling in Intf_Vlc_Wrapper.
parent 52945c01
...@@ -58,13 +58,13 @@ ...@@ -58,13 +58,13 @@
- (void)applicationDidBecomeActive:(NSNotification*)aNotification { - (void)applicationDidBecomeActive:(NSNotification*)aNotification {
if (b_window_is_fullscreen) { if (b_window_is_fullscreen) {
[o_window orderFront:self] ; [o_window orderFront:self] ;
[o_vlc play] ; [o_vlc playlistPlayCurrent] ;
} }
} }
- (void)applicationDidResignActive:(NSNotification*)aNotification { - (void)applicationDidResignActive:(NSNotification*)aNotification {
if (b_window_is_fullscreen) { if (b_window_is_fullscreen) {
[o_vlc pause] ; [o_vlc playlistPause] ;
[o_window orderOut:self] ; [o_window orderOut:self] ;
} }
} }
...@@ -72,13 +72,28 @@ ...@@ -72,13 +72,28 @@
//Functions attached to user interface //Functions attached to user interface
- (IBAction) openFile:(id)sender {
NSOpenPanel *o_panel = [NSOpenPanel openPanel] ;
[o_panel setAllowsMultipleSelection:YES] ;
if ([o_panel runModalForDirectory:NSHomeDirectory() file:nil types:nil] == NSOKButton) {
NSEnumerator* o_files = [[o_panel filenames] objectEnumerator] ;
NSString* o_file ;
while ((o_file = (NSString*)[o_files nextObject])) {
[o_vlc playlistAdd:o_file] ;
}
}
[o_vlc playlistPlayCurrent] ;
}
- (IBAction) pause:(id)sender { - (IBAction) pause:(id)sender {
[o_vlc pause] ; [o_vlc playlistPause] ;
} }
- (IBAction) play:(id)sender { - (IBAction) play:(id)sender {
[o_vlc play] ; [o_vlc playlistPlayCurrent] ;
} }
- (IBAction) timeslider_update:(id)slider { - (IBAction) timeslider_update:(id)slider {
...@@ -168,21 +183,11 @@ ...@@ -168,21 +183,11 @@
@implementation Intf_PlaylistDS @implementation Intf_PlaylistDS
- (void ) awakeFromNib { - (void ) awakeFromNib {
o_vlc = [Intf_VlcWrapper instance] ; o_vlc = [Intf_VlcWrapper instance] ;
o_playlist = [[NSMutableArray arrayWithCapacity:10] retain] ; o_playlist = nil ;
} }
- (void) readPlaylist { - (void) readPlaylist {
static unsigned int i_length_old = 0; o_playlist = [[o_vlc playlistAsArray] retain] ;
unsigned int i ;
if (i_length_old == [o_vlc getPlaylistLength])
return ;
[o_playlist removeAllObjects] ;
[o_vlc lockPlaylist] ;
for(i=0; i < [o_vlc getPlaylistLength]; i++)
[o_playlist addObject:[o_vlc getPlaylistItem:i]] ;
[o_vlc unlockPlaylist] ;
} }
- (int) numberOfRowsInTableView:(NSTableView*)o_table { - (int) numberOfRowsInTableView:(NSTableView*)o_table {
......
...@@ -65,6 +65,7 @@ ...@@ -65,6 +65,7 @@
- (void)applicationDidResignActive:(NSNotification*)aNotification ; - (void)applicationDidResignActive:(NSNotification*)aNotification ;
//Functions atteched to user interface //Functions atteched to user interface
- (IBAction) openFile:(id)sender ;
- (IBAction) pause:(id)sender ; - (IBAction) pause:(id)sender ;
- (IBAction) play:(id)sender ; - (IBAction) play:(id)sender ;
- (IBAction) timeslider_update:(id)slider ; - (IBAction) timeslider_update:(id)slider ;
......
...@@ -54,6 +54,11 @@ ...@@ -54,6 +54,11 @@
#define p_area p_main->p_intf->p_input->stream.p_selected_area #define p_area p_main->p_intf->p_input->stream.p_selected_area
@interface Intf_VlcWrapper(Private)
- (struct vout_thread_s*) lockVout ;
- (void) unlockVout ;
@end
@implementation Intf_VlcWrapper @implementation Intf_VlcWrapper
//Initialization,..... //Initialization,.....
+ (Intf_VlcWrapper*) instance { + (Intf_VlcWrapper*) instance {
...@@ -139,63 +144,28 @@ ...@@ -139,63 +144,28 @@
//Playback control //Playback control
- (void) play {
if (![self hasInput]) return ;
switch (e_speed)
{
case SPEED_SLOW:
input_SetStatus(p_main->p_intf->p_input, INPUT_STATUS_SLOWER) ;
break ;
case SPEED_NORMAL:
input_SetStatus(p_main->p_intf->p_input, INPUT_STATUS_PLAY) ;
break ;
case SPEED_FAST:
input_SetStatus(p_main->p_intf->p_input, INPUT_STATUS_FASTER) ;
break ;
}
}
- (void) pause {
if (![self hasInput]) return ;
input_SetStatus(p_main->p_intf->p_input, INPUT_STATUS_PAUSE) ;
}
- (void) stop {
return ;
}
- (void) stepf {
return ;
}
- (void) stepr {
return ;
}
- (void) setSpeed:(intf_speed_t) _e_speed { - (void) setSpeed:(intf_speed_t) _e_speed {
e_speed = _e_speed ; e_speed = _e_speed ;
[self play] ; [self playlistPlayCurrent] ;
} }
- (NSString *) getTimeAsString { - (NSString *) getTimeAsString {
static char psz_currenttime[ OFFSETTOTIME_MAX_SIZE ] ; static char psz_currenttime[ OFFSETTOTIME_MAX_SIZE ] ;
if (![self hasInput]) return [NSString stringWithCString:"00:00:00"] ; if (!p_main->p_intf->p_input) return [NSString stringWithCString:"00:00:00"] ;
input_OffsetToTime( p_main->p_intf->p_input, psz_currenttime, p_area->i_tell ) ; input_OffsetToTime( p_main->p_intf->p_input, psz_currenttime, p_area->i_tell ) ;
return [NSString stringWithCString:psz_currenttime] ; return [NSString stringWithCString:psz_currenttime] ;
} }
- (float) getTimeAsFloat { - (float) getTimeAsFloat {
if (![self hasInput]) return 0.0 ; if (!p_main->p_intf->p_input) return 0.0 ;
return (float)p_area->i_tell / (float)p_area->i_size ; return (float)p_area->i_tell / (float)p_area->i_size ;
} }
- (void) setTimeAsFloat:(float) f_position { - (void) setTimeAsFloat:(float) f_position {
if (![self hasInput]) return ; if (!p_main->p_intf->p_input) return ;
input_Seek(p_main->p_intf->p_input, p_area->i_size * f_position) ; input_Seek(p_main->p_intf->p_input, p_area->i_size * f_position) ;
} }
...@@ -204,45 +174,114 @@ ...@@ -204,45 +174,114 @@
//Playlist control //Playlist control
- (void) lockPlaylist { - (NSArray*) playlistAsArray {
NSMutableArray* p_list = [NSMutableArray arrayWithCapacity:p_main->p_playlist->i_size] ;
int i ;
vlc_mutex_lock(&p_main->p_playlist->change_lock) ; vlc_mutex_lock(&p_main->p_playlist->change_lock) ;
for (i=0; i < p_main->p_playlist->i_size; i++)
[p_list addObject:[NSString stringWithCString:p_main->p_playlist->p_item[i].psz_name]] ;
vlc_mutex_unlock(&p_main->p_playlist->change_lock) ;
return [NSArray arrayWithArray:p_list] ;
} }
- (int) playlistLength {
return p_main->p_playlist->i_size ;
}
- (NSString*) playlistItem:(int) i_pos {
NSString* o_item = nil ;
- (void) unlockPlaylist { vlc_mutex_lock(&p_main->p_playlist->change_lock) ;
if (i_pos < p_main->p_playlist->i_size)
o_item = [NSString stringWithCString:p_main->p_playlist->p_item[i_pos].psz_name] ;
vlc_mutex_unlock(&p_main->p_playlist->change_lock) ; vlc_mutex_unlock(&p_main->p_playlist->change_lock) ;
return o_item ;
} }
- (int) getPlaylistLength { - (bool) playlistPlayCurrent {
return p_main->p_playlist->i_size ; if (p_main->p_intf->p_input) {
switch (e_speed)
{
case SPEED_SLOW:
input_SetStatus(p_main->p_intf->p_input, INPUT_STATUS_SLOWER) ;
break ;
case SPEED_NORMAL:
input_SetStatus(p_main->p_intf->p_input, INPUT_STATUS_PLAY) ;
break ;
case SPEED_FAST:
input_SetStatus(p_main->p_intf->p_input, INPUT_STATUS_FASTER) ;
break ;
}
p_main->p_playlist->b_stopped = 0 ;
}
else if (p_main->p_playlist->b_stopped) {
if (p_main->p_playlist->i_size)
intf_PlaylistJumpto(p_main->p_playlist, p_main->p_playlist->i_index) ;
else
return FALSE ;
}
return TRUE ;
}
- (void) playlistPause {
if (p_main->p_intf->p_input)
input_SetStatus(p_main->p_intf->p_input, INPUT_STATUS_PAUSE) ;
} }
- (NSString*) getPlaylistItem:(int) i_pos { - (void) playlistStop {
if (i_pos >= p_main->p_playlist->i_size) if (p_main->p_intf->p_input) p_main->p_intf->p_input->b_eof = 1 ;
return nil ; vlc_mutex_lock(&p_main->p_playlist->change_lock) ;
p_main->p_playlist->i_index-- ;
return [NSString stringWithCString:p_main->p_playlist->p_item[i_pos].psz_name] ; p_main->p_playlist->b_stopped = 1 ;
vlc_mutex_unlock(&p_main->p_playlist->change_lock) ;
} }
- (void) playNextPlaylistItem { - (void) playlistPlayNext {
intf_PlaylistNext(p_main->p_playlist) ; [self playlistStop] ;
vlc_mutex_lock(&p_main->p_playlist->change_lock) ;
p_main->p_playlist->i_index++ ;
vlc_mutex_unlock(&p_main->p_playlist->change_lock) ;
[self playlistPlayCurrent] ;
} }
- (void) playPrevPlaylistItem { - (void) playlistPlayPrev {
intf_PlaylistPrev(p_main->p_playlist) ; [self playlistStop] ;
vlc_mutex_lock(&p_main->p_playlist->change_lock) ;
p_main->p_playlist->i_index-- ;
vlc_mutex_unlock(&p_main->p_playlist->change_lock) ;
[self playlistPlayCurrent] ;
}
- (void) playlistPlayItem:(int)i_item {
[self playlistStop] ;
vlc_mutex_lock(&p_main->p_playlist->change_lock) ;
if (i_item < p_main->p_playlist->i_size)
p_main->p_playlist->i_index-- ;
vlc_mutex_unlock(&p_main->p_playlist->change_lock) ;
[self playlistPlayCurrent] ;
} }
- (void) addPlaylistItem:(NSString*)o_filename { - (void) playlistAdd:(NSString*)o_filename {
intf_PlaylistAdd(p_main->p_playlist, PLAYLIST_END, [o_filename lossyCString]) ; intf_PlaylistAdd(p_main->p_playlist, PLAYLIST_END, [o_filename lossyCString]) ;
} }
- (void) clearPlaylist {
int i ;
vlc_mutex_lock(&p_main->p_playlist->change_lock) ;
for(i=0; i < p_main->p_playlist->i_size; i++)
intf_PlaylistDelete(p_main->p_playlist, i) ;
vlc_mutex_unlock(&p_main->p_playlist->change_lock) ;
}
// Private Functions. This are just some utilities for other functions // Private Functions. This are just some utilities for other functions
- (bool) hasInput {
return (p_main->p_intf->p_input != NULL) ? TRUE : FALSE ;
}
- (struct vout_thread_s*) lockVout { - (struct vout_thread_s*) lockVout {
vlc_mutex_lock(&p_vout_bank->lock) ; vlc_mutex_lock(&p_vout_bank->lock) ;
if (p_vout_bank->i_count) { if (p_vout_bank->i_count) {
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
struct vlc_thread_s ;
typedef enum intf_speed_e {SPEED_SLOW=0, SPEED_NORMAL, SPEED_FAST} intf_speed_t ; typedef enum intf_speed_e {SPEED_SLOW=0, SPEED_NORMAL, SPEED_FAST} intf_speed_t ;
@protocol VlcWrapper_Delegate @protocol VlcWrapper_Delegate
- (void) requestQDPortFullscreen:(bool)b_fullscreen ; - (void) requestQDPortFullscreen:(bool)b_fullscreen ;
...@@ -52,28 +51,22 @@ typedef enum intf_speed_e {SPEED_SLOW=0, SPEED_NORMAL, SPEED_FAST} intf_speed_t ...@@ -52,28 +51,22 @@ typedef enum intf_speed_e {SPEED_SLOW=0, SPEED_NORMAL, SPEED_FAST} intf_speed_t
- (NSSize) videoSize ; - (NSSize) videoSize ;
// Playback control // Playback control
- (void) play ;
- (void) pause ;
- (void) stop ;
- (void) stepf ;
- (void) stepr ;
- (void) setSpeed:(intf_speed_t)e_speed ; - (void) setSpeed:(intf_speed_t)e_speed ;
- (NSString*) getTimeAsString ; - (NSString*) getTimeAsString ;
- (float) getTimeAsFloat ; - (float) getTimeAsFloat ;
- (void) setTimeAsFloat:(float)i_offset ; - (void) setTimeAsFloat:(float)i_offset ;
// Playlist control // Playlist control
- (void) lockPlaylist ; - (NSArray*) playlistAsArray ;
- (void) unlockPlaylist ; - (int) playlistLength ;
- (int) getPlaylistLength ; - (NSString*) playlistItem:(int) i_pos ;
- (NSString*) getPlaylistItem:(int)i_pos ; - (bool) playlistPlayCurrent ;
- (void) playNextPlaylistItem ; - (void) playlistPause ;
- (void) playPrevPlaylistItem ; - (void) playlistStop ;
- (void) addPlaylistItem:(NSString*)o_filename ; - (void) playlistPlayNext ;
- (void) playlistPlayPrev ;
//private - (void) playlistPlayItem:(int)i_item ;
- (bool) hasInput ; - (void) playlistAdd:(NSString*)o_filename ;
- (struct vout_thread_s*) lockVout ; - (void) clearPlaylist ;
- (void) unlockVout ;
@end @end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment