]> git.sesse.net Git - vlc/commitdiff
* added a NSTimer to update the statistics every second
authorFelix Paul Kühne <fkuehne@videolan.org>
Fri, 3 Mar 2006 13:51:04 +0000 (13:51 +0000)
committerFelix Paul Kühne <fkuehne@videolan.org>
Fri, 3 Mar 2006 13:51:04 +0000 (13:51 +0000)
modules/gui/macosx/playlistinfo.h
modules/gui/macosx/playlistinfo.m

index f9b302526e64536a4f3d53d82013bb5cc6e4fea6..7a87f92d6bbbf4ffef1007397b2dd658d45086aa 100644 (file)
@@ -97,6 +97,7 @@
     IBOutlet id o_video_decoded_txt;
 
     playlist_item_t * p_item;
+    NSTimer * o_statUpdateTimer;
 }
 
 - (IBAction)togglePlaylistInfoPanel:(id)sender;
 - (BOOL)isItemInPlaylist:(playlist_item_t *)p_item;
 
 - (void)setMeta: (char *)meta forLabel: (id)theItem;
-- (void)updateStatistics;
-/*- (void)setIntStat: (int)value forLabel: (id)theItem withFormat: (NSString *)format;
-- (void)setFloatStat: (float)value forLabel: (id)theItem withFormat: (NSString *)format;
-*/
+- (void)updateStatistics: (NSTimer*)theTimer;
 @end
 
 @interface VLCInfoTreeItem : NSObject
index 498a100d3a472fc09ad620f4c1385e2105f406aa..3066edaf46a6ac458d8dc5ffa4c20e93d56d7410 100644 (file)
 {
     if( [o_info_window isVisible] )
     {
+        [o_statUpdateTimer invalidate];
         [o_info_window orderOut: sender];
     }
     else
             p_item = p_playlist->status.p_item;
             vlc_object_release( p_playlist );
         }
+        o_statUpdateTimer = [NSTimer scheduledTimerWithTimeInterval: 1 \
+            target: self selector: @selector(updateStatistics:) \
+            userInfo: nil repeats: YES]; 
+        [o_statUpdateTimer fire];
+        [o_statUpdateTimer retain];
+
         [self initPanel:sender];
     }
 }
     char *psz_temp;
     vlc_mutex_lock( &p_item->input.lock );
 
-    /*fill uri / title / author info */
+    /* fill uri / title / author info */
     if( p_item->input.psz_uri )
     {
         [o_uri_txt setStringValue:
     [[VLCInfoTreeItem rootItem] refresh];
     [o_outline_view reloadData];
     
-    [self updateStatistics];
+    [self updateStatistics: nil];
 
     [o_info_window makeKeyAndOrderFront: sender];
 }
         [theItem setStringValue: @"-"];
 }
 
-- (void)updateStatistics
+- (void)updateStatistics:(NSTimer*)theTimer
 {
-    vlc_mutex_lock( &p_item->input.p_stats->lock );
-
-    /* input */
-    [o_read_bytes_txt setStringValue: [NSString stringWithFormat: @"%8.0f kB", \
-        (float)(p_item->input.p_stats->i_read_bytes)/1000]];
-    [o_input_bitrate_txt setStringValue: [NSString stringWithFormat: @"%6.0f kb/s", \
-        (float)(p_item->input.p_stats->f_input_bitrate)/1000]];
-    [o_demux_bytes_txt setStringValue: [NSString stringWithFormat: @"%8.0f kB",\
-        (float)(p_item->input.p_stats->i_demux_read_bytes)/1000]];
-    [o_demux_bitrate_txt setStringValue: [NSString stringWithFormat: @"%6.0f kb/s", \
-        (float)(p_item->input.p_stats->f_demux_bitrate)/1000]];
-
-    /* Video */
-    [o_video_decoded_txt setStringValue: [NSString stringWithFormat: @"%8.0f kB", \
-        p_item->input.p_stats->i_decoded_video]];
-    [o_displayed_txt setStringValue: [NSString stringWithFormat: @"%5i", \
-        p_item->input.p_stats->i_displayed_pictures]];
-    [o_lost_frames_txt setStringValue: [NSString stringWithFormat: @"%5i", \
-        p_item->input.p_stats->i_lost_pictures]];
-
-    /* Sout */
-    [o_sent_packets_txt setStringValue: [NSString stringWithFormat: @"%5i", \
-        p_item->input.p_stats->i_sent_packets]];
-    [o_sent_bytes_txt setStringValue: [NSString stringWithFormat: @"%6.0f kB", \
-        (float)(p_item->input.p_stats->i_sent_bytes)/1000]];
-    [o_sent_bitrate_txt setStringValue: [NSString stringWithFormat: @"%6.0f kb/s", \
-        (float)(p_item->input.p_stats->f_send_bitrate*8)*1000]];
-
-    /* Audio */
-    [o_audio_decoded_txt setStringValue: [NSString stringWithFormat: @"%5i", \
-        p_item->input.p_stats->i_decoded_audio]];
-    [o_played_abuffers_txt setStringValue: [NSString stringWithFormat: @"%5i", \
-        p_item->input.p_stats->i_played_abuffers]];
-    [o_lost_abuffers_txt setStringValue: [NSString stringWithFormat: @"%5i", \
-        p_item->input.p_stats->i_lost_abuffers]];
-
-    vlc_mutex_unlock( &p_item->input.p_stats->lock );
+    if( [self isItemInPlaylist: p_item] )
+    {
+        /* we can only do that if there's a valid input around */
+        
+        vlc_mutex_lock( &p_item->input.p_stats->lock );
+
+        /* input */
+        [o_read_bytes_txt setStringValue: [NSString stringWithFormat: \
+            @"%8.0f kB", (float)(p_item->input.p_stats->i_read_bytes)/1000]];
+        [o_input_bitrate_txt setStringValue: [NSString stringWithFormat: \
+            @"%6.0f kb/s", (float)(p_item->input.p_stats->f_input_bitrate)*8000]];
+        [o_demux_bytes_txt setStringValue: [NSString stringWithFormat: \
+            @"%8.0f kB", (float)(p_item->input.p_stats->i_demux_read_bytes)/1000]];
+        [o_demux_bitrate_txt setStringValue: [NSString stringWithFormat: \
+            @"%6.0f kb/s", (float)(p_item->input.p_stats->f_demux_bitrate)*8000]];
+
+        /* Video */
+        [o_video_decoded_txt setStringValue: [NSString stringWithFormat: @"%5i", \
+            p_item->input.p_stats->i_decoded_video]];
+        [o_displayed_txt setStringValue: [NSString stringWithFormat: @"%5i", \
+            p_item->input.p_stats->i_displayed_pictures]];
+        [o_lost_frames_txt setStringValue: [NSString stringWithFormat: @"%5i", \
+            p_item->input.p_stats->i_lost_pictures]];
+
+        /* Sout */
+        [o_sent_packets_txt setStringValue: [NSString stringWithFormat: @"%5i", \
+            p_item->input.p_stats->i_sent_packets]];
+        [o_sent_bytes_txt setStringValue: [NSString stringWithFormat: @"%8.0f kB", \
+            (float)(p_item->input.p_stats->i_sent_bytes)/1000]];
+        [o_sent_bitrate_txt setStringValue: [NSString stringWithFormat: \
+            @"%6.0f kb/s", (float)(p_item->input.p_stats->f_send_bitrate*8)*1000]];
+
+        /* Audio */
+        [o_audio_decoded_txt setStringValue: [NSString stringWithFormat: @"%5i", \
+            p_item->input.p_stats->i_decoded_audio]];
+        [o_played_abuffers_txt setStringValue: [NSString stringWithFormat: @"%5i", \
+            p_item->input.p_stats->i_played_abuffers]];
+        [o_lost_abuffers_txt setStringValue: [NSString stringWithFormat: @"%5i", \
+            p_item->input.p_stats->i_lost_abuffers]];
+
+        vlc_mutex_unlock( &p_item->input.p_stats->lock );
+    }
 }
 
 - (IBAction)infoCancel:(id)sender