Commit 45c3c5f4 authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

update: Various fixes to make it work on Mac OS X.

parent e7d43dd4
...@@ -59,6 +59,7 @@ VLC_EXPORT( void, update_Check, ( update_t *, void (*callback)( void*, bool ), v ...@@ -59,6 +59,7 @@ VLC_EXPORT( void, update_Check, ( update_t *, void (*callback)( void*, bool ), v
VLC_EXPORT( bool, update_NeedUpgrade, ( update_t * ) ); VLC_EXPORT( bool, update_NeedUpgrade, ( update_t * ) );
VLC_EXPORT( void, update_Download, ( update_t *, const char* ) ); VLC_EXPORT( void, update_Download, ( update_t *, const char* ) );
VLC_EXPORT( update_release_t*, update_GetRelease, ( update_t * ) ); VLC_EXPORT( update_release_t*, update_GetRelease, ( update_t * ) );
VLC_EXPORT( void, update_WaitDownload, ( update_t * ) );
/** /**
* @} * @}
......
...@@ -151,7 +151,7 @@ static VLCUpdate *_o_sharedInstance = nil; ...@@ -151,7 +151,7 @@ static VLCUpdate *_o_sharedInstance = nil;
if( returnCode == NSOKButton ) if( returnCode == NSOKButton )
{ {
/* perform download and pass the selected path */ /* perform download and pass the selected path */
[self performDownload: [sheet filename]]; [NSThread detachNewThreadSelector:@selector(performDownload:) toTarget:self withObject:[sheet filename]];
} }
[sheet release]; [sheet release];
} }
...@@ -215,11 +215,14 @@ static void updateCallback( void * p_data, bool b_success ) ...@@ -215,11 +215,14 @@ static void updateCallback( void * p_data, bool b_success )
- (void)performDownload:(NSString *)path - (void)performDownload:(NSString *)path
{ {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
update_Download( p_u, [path UTF8String] ); update_Download( p_u, [path UTF8String] );
[o_btn_DownloadNow setEnabled: NO]; [o_btn_DownloadNow setEnabled: NO];
[o_update_window orderOut: self]; [o_update_window orderOut: self];
update_WaitDownload( p_u );
update_Delete( p_u ); update_Delete( p_u );
p_u = nil; p_u = nil;
[pool release];
} }
@end @end
......
...@@ -362,6 +362,7 @@ update_Download ...@@ -362,6 +362,7 @@ update_Download
update_GetRelease update_GetRelease
update_NeedUpgrade update_NeedUpgrade
__update_New __update_New
update_WaitDownload
us_atof us_atof
us_strtod us_strtod
utf8_fopen utf8_fopen
......
...@@ -1456,6 +1456,14 @@ static char *size_str( long int l_size ) ...@@ -1456,6 +1456,14 @@ static char *size_str( long int l_size )
return i_retval == -1 ? NULL : psz_tmp; return i_retval == -1 ? NULL : psz_tmp;
} }
void update_WaitDownload( update_t *p_update )
{
if(p_update->p_download)
vlc_thread_join( p_update->p_download );
vlc_object_release( p_update->p_download );
p_update->p_download = NULL;
}
static void* update_DownloadReal( vlc_object_t *p_this ); static void* update_DownloadReal( vlc_object_t *p_this );
/** /**
...@@ -1504,6 +1512,8 @@ static void* update_DownloadReal( vlc_object_t *p_this ) ...@@ -1504,6 +1512,8 @@ static void* update_DownloadReal( vlc_object_t *p_this )
update_t *p_update = p_udt->p_update; update_t *p_update = p_udt->p_update;
char *psz_destdir = p_udt->psz_destdir; char *psz_destdir = p_udt->psz_destdir;
msg_Dbg( p_udt, "Opening Stream '%s'", p_update->release.psz_url );
/* Open the stream */ /* Open the stream */
p_stream = stream_UrlNew( p_udt, p_update->release.psz_url ); p_stream = stream_UrlNew( p_udt, p_update->release.psz_url );
if( !p_stream ) if( !p_stream )
...@@ -1536,7 +1546,12 @@ static void* update_DownloadReal( vlc_object_t *p_this ) ...@@ -1536,7 +1546,12 @@ static void* update_DownloadReal( vlc_object_t *p_this )
/* Create a buffer and fill it with the downloaded file */ /* Create a buffer and fill it with the downloaded file */
p_buffer = (void *)malloc( 1 << 10 ); p_buffer = (void *)malloc( 1 << 10 );
if( !p_buffer ) if( !p_buffer )
{
msg_Err( p_udt, "Can't malloc (1 << 10) bytes! download cancelled." );
goto end; goto end;
}
msg_Dbg( p_udt, "Downloading Stream '%s'", p_update->release.psz_url );
psz_size = size_str( l_size ); psz_size = size_str( l_size );
if( asprintf( &psz_status, "%s\nDownloading... O.O/%s %.1f%% done", if( asprintf( &psz_status, "%s\nDownloading... O.O/%s %.1f%% done",
...@@ -1585,6 +1600,7 @@ static void* update_DownloadReal( vlc_object_t *p_this ) ...@@ -1585,6 +1600,7 @@ static void* update_DownloadReal( vlc_object_t *p_this )
p_update->release.psz_url, psz_size ) != -1 ) p_update->release.psz_url, psz_size ) != -1 )
{ {
intf_ProgressUpdate( p_udt, i_progress, psz_status, 100.0, 0 ); intf_ProgressUpdate( p_udt, i_progress, psz_status, 100.0, 0 );
i_progress = 0;
free( psz_status ); free( psz_status );
} }
} }
...@@ -1674,6 +1690,10 @@ static void* update_DownloadReal( vlc_object_t *p_this ) ...@@ -1674,6 +1690,10 @@ static void* update_DownloadReal( vlc_object_t *p_this )
free( p_hash ); free( p_hash );
end: end:
if( i_progress )
{
intf_ProgressUpdate( p_udt, i_progress, "Cancelled", 100.0, 0 );
}
if( p_stream ) if( p_stream )
stream_Delete( p_stream ); stream_Delete( p_stream );
if( p_file ) if( p_file )
...@@ -1715,6 +1735,11 @@ bool update_NeedUpgrade( update_t *p_update ) ...@@ -1715,6 +1735,11 @@ bool update_NeedUpgrade( update_t *p_update )
return false; return false;
} }
void update_WaitDownload( update_t *p_update )
{
(void)p_update;
}
void update_Download( update_t *p_update, const char *psz_destdir ) void update_Download( update_t *p_update, const char *psz_destdir )
{ {
(void)p_update; (void)psz_destdir; (void)p_update; (void)psz_destdir;
......
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