Commit 3e621f3f authored by Rémi Duraffort's avatar Rémi Duraffort

Fix the update system now we can't close vlc and stop the download correctly.

Should fixe #1635
parent 0b2ea3de
...@@ -1524,9 +1524,12 @@ static void update_DownloadReal( update_download_thread_t *p_udt ) ...@@ -1524,9 +1524,12 @@ static void update_DownloadReal( update_download_thread_t *p_udt )
free( psz_status ); free( psz_status );
} }
while( ( i_read = stream_Read( p_stream, p_buffer, 1 << 10 ) ) && vlc_object_lock( p_udt );
while( vlc_object_alive( p_udt ) &&
( i_read = stream_Read( p_stream, p_buffer, 1 << 10 ) ) &&
!intf_ProgressIsCancelled( p_udt, i_progress ) ) !intf_ProgressIsCancelled( p_udt, i_progress ) )
{ {
vlc_object_unlock( p_udt );
if( fwrite( p_buffer, i_read, 1, p_file ) < 1 ) if( fwrite( p_buffer, i_read, 1, p_file ) < 1 )
{ {
msg_Err( p_udt, "Failed to write into %s", psz_destfile ); msg_Err( p_udt, "Failed to write into %s", psz_destfile );
...@@ -1545,14 +1548,17 @@ static void update_DownloadReal( update_download_thread_t *p_udt ) ...@@ -1545,14 +1548,17 @@ static void update_DownloadReal( update_download_thread_t *p_udt )
free( psz_status ); free( psz_status );
} }
free( psz_downloaded ); free( psz_downloaded );
vlc_object_lock( p_udt );
} }
/* Finish the progress bar or delete the file if the user had canceled */ /* Finish the progress bar or delete the file if the user had canceled */
fclose( p_file ); fclose( p_file );
p_file = NULL; p_file = NULL;
if( !intf_ProgressIsCancelled( p_udt, i_progress ) ) if( vlc_object_alive( p_udt ) &&
!intf_ProgressIsCancelled( p_udt, i_progress ) )
{ {
vlc_object_unlock( p_udt );
if( asprintf( &psz_status, "%s\nDone %s (100.0%%)", if( asprintf( &psz_status, "%s\nDone %s (100.0%%)",
p_update->release.psz_url, psz_size ) != -1 ) p_update->release.psz_url, psz_size ) != -1 )
{ {
...@@ -1562,6 +1568,7 @@ static void update_DownloadReal( update_download_thread_t *p_udt ) ...@@ -1562,6 +1568,7 @@ static void update_DownloadReal( update_download_thread_t *p_udt )
} }
else else
{ {
vlc_object_unlock( p_udt );
utf8_unlink( psz_destfile ); utf8_unlink( psz_destfile );
goto end; goto 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