From: Felix Paul Kühne Date: Sat, 27 May 2006 17:00:27 +0000 (+0000) Subject: * playlistinfo.m: fixed a rare crash and made sure that the timer is run in every... X-Git-Tag: 0.9.0-test0~11133 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=bd475b063164cc97addcc8088c6090306bc469a4;p=vlc * playlistinfo.m: fixed a rare crash and made sure that the timer is run in every case * playlist.m: minor update to the new playlist plus removal of an unpurposelly commited debug-msg --- diff --git a/modules/gui/macosx/playlist.m b/modules/gui/macosx/playlist.m index 4809f9816d..e884ab2ae0 100644 --- a/modules/gui/macosx/playlist.m +++ b/modules/gui/macosx/playlist.m @@ -578,7 +578,6 @@ belongs to an Apple hidden private API, and then can "disapear" at any time*/ [NSString stringWithFormat: @"%p", [[o_array objectAtIndex:j] pointerValue]]] ) != nil ) { - msg_Err( p_playlist, "o_item: %p", o_item ); [o_outline_view expandItem: o_item]; } diff --git a/modules/gui/macosx/playlistinfo.m b/modules/gui/macosx/playlistinfo.m index 2ee9f0071a..3b5384e362 100644 --- a/modules/gui/macosx/playlistinfo.m +++ b/modules/gui/macosx/playlistinfo.m @@ -101,9 +101,13 @@ - (void)dealloc { - /* make sure that it is released in any case */ + /* make sure that the timer is released in any case */ + if( [o_statUpdateTimer isValid] ) + [o_statUpdateTimer invalidate]; + if ( o_statUpdateTimer ) [o_statUpdateTimer release]; + [super dealloc]; } @@ -140,27 +144,27 @@ vlc_object_release( p_playlist ); } - BOOL b_stats = config_GetInt(VLCIntf, "stats"); - if( b_stats ) - { - o_statUpdateTimer = [NSTimer scheduledTimerWithTimeInterval: 1 \ - target: self selector: @selector(updateStatistics:) \ - userInfo: nil repeats: YES]; - [o_statUpdateTimer fire]; - [o_statUpdateTimer retain]; - } - else - { - if( [o_tab_view numberOfTabViewItems] > 2 ) - [o_tab_view removeTabViewItem: [o_tab_view tabViewItemAtIndex: 2]]; - } - [self initPanel:sender]; } } - (void)initPanel:(id)sender { + BOOL b_stats = config_GetInt(VLCIntf, "stats"); + if( b_stats ) + { + o_statUpdateTimer = [NSTimer scheduledTimerWithTimeInterval: 1 + target: self selector: @selector(updateStatistics:) + userInfo: nil repeats: YES]; + [o_statUpdateTimer fire]; + [o_statUpdateTimer retain]; + } + else + { + if( [o_tab_view numberOfTabViewItems] > 2 ) + [o_tab_view removeTabViewItem: [o_tab_view tabViewItemAtIndex: 2]]; + } + [self updatePanel]; [o_info_window makeKeyAndOrderFront: sender]; } @@ -183,7 +187,7 @@ vlc_mutex_lock( &p_item->p_input->lock ); - /* fill uri / title / author info */ + /* fill uri info */ if( p_item->p_input->psz_uri ) { [o_uri_txt setStringValue: @@ -192,16 +196,9 @@ [NSString stringWithUTF8String:p_item->p_input->psz_uri]]; } - if( p_item->p_input->psz_name ) - { - [o_title_txt setStringValue: - ([NSString stringWithUTF8String:p_item->p_input->psz_name] == nil ) ? - [NSString stringWithCString:p_item->p_input->psz_name] : - [NSString stringWithUTF8String:p_item->p_input->psz_name]]; - } - /* fill the other fields */ #define p_m p_item->p_input->p_meta + [self setMeta: p_m->psz_title forLabel: o_title_txt]; [self setMeta: p_m->psz_artist forLabel: o_author_txt]; [self setMeta: p_m->psz_album forLabel: o_collection_txt]; [self setMeta: p_m->psz_tracknum forLabel: o_seqNum_txt]; @@ -243,37 +240,37 @@ vlc_mutex_lock( &p_item->p_input->p_stats->lock ); /* input */ - [o_read_bytes_txt setStringValue: [NSString stringWithFormat: \ + [o_read_bytes_txt setStringValue: [NSString stringWithFormat: @"%8.0f kB", (float)(p_item->p_input->p_stats->i_read_bytes)/1000]]; - [o_input_bitrate_txt setStringValue: [NSString stringWithFormat: \ + [o_input_bitrate_txt setStringValue: [NSString stringWithFormat: @"%6.0f kb/s", (float)(p_item->p_input->p_stats->f_input_bitrate)*8000]]; - [o_demux_bytes_txt setStringValue: [NSString stringWithFormat: \ + [o_demux_bytes_txt setStringValue: [NSString stringWithFormat: @"%8.0f kB", (float)(p_item->p_input->p_stats->i_demux_read_bytes)/1000]]; - [o_demux_bitrate_txt setStringValue: [NSString stringWithFormat: \ + [o_demux_bitrate_txt setStringValue: [NSString stringWithFormat: @"%6.0f kb/s", (float)(p_item->p_input->p_stats->f_demux_bitrate)*8000]]; /* Video */ - [o_video_decoded_txt setStringValue: [NSString stringWithFormat: @"%5i", \ + [o_video_decoded_txt setStringValue: [NSString stringWithFormat: @"%5i", p_item->p_input->p_stats->i_decoded_video]]; - [o_displayed_txt setStringValue: [NSString stringWithFormat: @"%5i", \ + [o_displayed_txt setStringValue: [NSString stringWithFormat: @"%5i", p_item->p_input->p_stats->i_displayed_pictures]]; - [o_lost_frames_txt setStringValue: [NSString stringWithFormat: @"%5i", \ + [o_lost_frames_txt setStringValue: [NSString stringWithFormat: @"%5i", p_item->p_input->p_stats->i_lost_pictures]]; /* Sout */ - [o_sent_packets_txt setStringValue: [NSString stringWithFormat: @"%5i", \ + [o_sent_packets_txt setStringValue: [NSString stringWithFormat: @"%5i", p_item->p_input->p_stats->i_sent_packets]]; - [o_sent_bytes_txt setStringValue: [NSString stringWithFormat: @"%8.0f kB", \ + [o_sent_bytes_txt setStringValue: [NSString stringWithFormat: @"%8.0f kB", (float)(p_item->p_input->p_stats->i_sent_bytes)/1000]]; - [o_sent_bitrate_txt setStringValue: [NSString stringWithFormat: \ + [o_sent_bitrate_txt setStringValue: [NSString stringWithFormat: @"%6.0f kb/s", (float)(p_item->p_input->p_stats->f_send_bitrate*8)*1000]]; /* Audio */ - [o_audio_decoded_txt setStringValue: [NSString stringWithFormat: @"%5i", \ + [o_audio_decoded_txt setStringValue: [NSString stringWithFormat: @"%5i", p_item->p_input->p_stats->i_decoded_audio]]; - [o_played_abuffers_txt setStringValue: [NSString stringWithFormat: @"%5i", \ + [o_played_abuffers_txt setStringValue: [NSString stringWithFormat: @"%5i", p_item->p_input->p_stats->i_played_abuffers]]; - [o_lost_abuffers_txt setStringValue: [NSString stringWithFormat: @"%5i", \ + [o_lost_abuffers_txt setStringValue: [NSString stringWithFormat: @"%5i", p_item->p_input->p_stats->i_lost_abuffers]]; vlc_mutex_unlock( &p_item->p_input->p_stats->lock ); @@ -342,11 +339,12 @@ - (BOOL)windowShouldClose:(id)sender { - if( o_statUpdateTimer ) - { + if( [o_statUpdateTimer isValid] ) [o_statUpdateTimer invalidate]; + + if( o_statUpdateTimer ) [o_statUpdateTimer release]; - } + return YES; }