From: Felix Paul Kühne Date: Fri, 3 Mar 2006 13:51:04 +0000 (+0000) Subject: * added a NSTimer to update the statistics every second X-Git-Tag: 0.9.0-test0~12070 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=ebb944ae6802848268a8b367abafc47d3ddca59c;p=vlc * added a NSTimer to update the statistics every second --- diff --git a/modules/gui/macosx/playlistinfo.h b/modules/gui/macosx/playlistinfo.h index f9b302526e..7a87f92d6b 100644 --- a/modules/gui/macosx/playlistinfo.h +++ b/modules/gui/macosx/playlistinfo.h @@ -97,6 +97,7 @@ IBOutlet id o_video_decoded_txt; playlist_item_t * p_item; + NSTimer * o_statUpdateTimer; } - (IBAction)togglePlaylistInfoPanel:(id)sender; @@ -108,10 +109,7 @@ - (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 diff --git a/modules/gui/macosx/playlistinfo.m b/modules/gui/macosx/playlistinfo.m index 498a100d3a..3066edaf46 100644 --- a/modules/gui/macosx/playlistinfo.m +++ b/modules/gui/macosx/playlistinfo.m @@ -115,6 +115,7 @@ { if( [o_info_window isVisible] ) { + [o_statUpdateTimer invalidate]; [o_info_window orderOut: sender]; } else @@ -128,6 +129,12 @@ 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]; } } @@ -137,7 +144,7 @@ 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: @@ -179,7 +186,7 @@ [[VLCInfoTreeItem rootItem] refresh]; [o_outline_view reloadData]; - [self updateStatistics]; + [self updateStatistics: nil]; [o_info_window makeKeyAndOrderFront: sender]; } @@ -194,45 +201,50 @@ [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