MacOSX/Framework/VLCMediaPlayer.m: -isSeekable.
authorPierre d'Herbemont <pdherbemont@videolan.org>
Sat, 29 Dec 2007 03:31:25 +0000 (03:31 +0000)
committerPierre d'Herbemont <pdherbemont@videolan.org>
Sat, 29 Dec 2007 03:31:25 +0000 (03:31 +0000)
extras/MacOSX/Framework/Headers/Public/VLCMediaPlayer.h
extras/MacOSX/Framework/Sources/VLCMediaPlayer.m

index a684b9d..307960f 100644 (file)
@@ -192,4 +192,7 @@ extern NSString *VLCMediaPlayerStateToString(VLCMediaPlayerState state);
  */
 - (float)position;
 - (void)setPosition:(float)newPosition;
+
+- (BOOL)isSeekable;
+
 @end
index 7a02d72..5fba940 100644 (file)
@@ -58,7 +58,6 @@ static void HandleMediaInstanceVolumeChanged(const libvlc_event_t *event, void *
 static void HandleMediaTimeChanged(const libvlc_event_t * event, void * self)
 {
     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-    NSLog(@"time!");
     [[VLCEventManager sharedManager] callOnMainThreadObject:self 
                                                  withMethod:@selector(mediaPlayerTimeChanged:) 
                                        withArgumentAsObject:[NSNumber numberWithLongLong:event->u.media_instance_time_changed.new_time]];
@@ -120,9 +119,6 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t *event, void *s
 @end
 
 @implementation VLCMediaPlayer
-+ (void)initialize {
-    [self setKeys:[NSArray arrayWithObject:@"state"] triggerChangeNotificationsForDependentKey:@"playing"];
-}
 
 - (id)init
 {
@@ -133,6 +129,8 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t *event, void *s
 {
     if (self = [super init])
     {
+        [VLCMediaPlayer setKeys:[NSArray arrayWithObject:@"state"] triggerChangeNotificationsForDependentKey:@"playing"];
+        [VLCMediaPlayer setKeys:[NSArray arrayWithObjects:@"state", @"media", nil] triggerChangeNotificationsForDependentKey:@"seekable"];
         delegate = nil;
         media = nil;
         cachedTime = [[VLCTime nullTime] retain];
@@ -542,10 +540,12 @@ static const VLCMediaPlayerState libvlc_to_local_state[] =
 {
     return cachedState;
 }
+
 - (float)position
 {
     return position;
 }
+
 - (void)setPosition:(float)newPosition
 {
     libvlc_exception_t ex;
@@ -553,6 +553,16 @@ static const VLCMediaPlayerState libvlc_to_local_state[] =
     libvlc_media_instance_set_position( instance, newPosition, &ex );
     quit_on_exception( &ex );
 }
+
+- (BOOL)isSeekable
+{
+    libvlc_exception_t ex;
+    libvlc_exception_init( &ex );
+    BOOL ret = libvlc_media_instance_is_seekable( instance, &ex );
+    quit_on_exception( &ex );
+    return ret;
+}
+
 @end
 
 @implementation VLCMediaPlayer (Private)