[vlc-devel] commit: update: Various fixes to make it work on Mac OS X. (Pierre d' Herbemont )
git version control
git at videolan.org
Sun Aug 10 23:07:41 CEST 2008
vlc | branch: master | Pierre d'Herbemont <pdherbemont at videolan.org> | Sun Aug 10 23:10:28 2008 +0200| [45c3c5f4c0d8413799253968f4210cc6f5cc776c] | committer: Pierre d'Herbemont
update: Various fixes to make it work on Mac OS X.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=45c3c5f4c0d8413799253968f4210cc6f5cc776c
---
include/vlc_update.h | 1 +
modules/gui/macosx/update.m | 5 ++++-
src/libvlccore.sym | 1 +
src/misc/update.c | 25 +++++++++++++++++++++++++
4 files changed, 31 insertions(+), 1 deletions(-)
diff --git a/include/vlc_update.h b/include/vlc_update.h
index 4bc7fd3..c7795c9 100644
--- a/include/vlc_update.h
+++ b/include/vlc_update.h
@@ -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( void, update_Download, ( update_t *, const char* ) );
VLC_EXPORT( update_release_t*, update_GetRelease, ( update_t * ) );
+VLC_EXPORT( void, update_WaitDownload, ( update_t * ) );
/**
* @}
diff --git a/modules/gui/macosx/update.m b/modules/gui/macosx/update.m
index 4346af3..88ed6bd 100644
--- a/modules/gui/macosx/update.m
+++ b/modules/gui/macosx/update.m
@@ -151,7 +151,7 @@ static VLCUpdate *_o_sharedInstance = nil;
if( returnCode == NSOKButton )
{
/* perform download and pass the selected path */
- [self performDownload: [sheet filename]];
+ [NSThread detachNewThreadSelector:@selector(performDownload:) toTarget:self withObject:[sheet filename]];
}
[sheet release];
}
@@ -215,11 +215,14 @@ static void updateCallback( void * p_data, bool b_success )
- (void)performDownload:(NSString *)path
{
+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
update_Download( p_u, [path UTF8String] );
[o_btn_DownloadNow setEnabled: NO];
[o_update_window orderOut: self];
+ update_WaitDownload( p_u );
update_Delete( p_u );
p_u = nil;
+ [pool release];
}
@end
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 839260f..c2937f5 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -362,6 +362,7 @@ update_Download
update_GetRelease
update_NeedUpgrade
__update_New
+update_WaitDownload
us_atof
us_strtod
utf8_fopen
diff --git a/src/misc/update.c b/src/misc/update.c
index d1620eb..96a3948 100644
--- a/src/misc/update.c
+++ b/src/misc/update.c
@@ -1456,6 +1456,14 @@ static char *size_str( long int l_size )
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 );
/**
@@ -1504,6 +1512,8 @@ static void* update_DownloadReal( vlc_object_t *p_this )
update_t *p_update = p_udt->p_update;
char *psz_destdir = p_udt->psz_destdir;
+ msg_Dbg( p_udt, "Opening Stream '%s'", p_update->release.psz_url );
+
/* Open the stream */
p_stream = stream_UrlNew( p_udt, p_update->release.psz_url );
if( !p_stream )
@@ -1536,7 +1546,12 @@ static void* update_DownloadReal( vlc_object_t *p_this )
/* Create a buffer and fill it with the downloaded file */
p_buffer = (void *)malloc( 1 << 10 );
if( !p_buffer )
+ {
+ msg_Err( p_udt, "Can't malloc (1 << 10) bytes! download cancelled." );
goto end;
+ }
+
+ msg_Dbg( p_udt, "Downloading Stream '%s'", p_update->release.psz_url );
psz_size = size_str( l_size );
if( asprintf( &psz_status, "%s\nDownloading... O.O/%s %.1f%% done",
@@ -1585,6 +1600,7 @@ static void* update_DownloadReal( vlc_object_t *p_this )
p_update->release.psz_url, psz_size ) != -1 )
{
intf_ProgressUpdate( p_udt, i_progress, psz_status, 100.0, 0 );
+ i_progress = 0;
free( psz_status );
}
}
@@ -1674,6 +1690,10 @@ static void* update_DownloadReal( vlc_object_t *p_this )
free( p_hash );
end:
+ if( i_progress )
+ {
+ intf_ProgressUpdate( p_udt, i_progress, "Cancelled", 100.0, 0 );
+ }
if( p_stream )
stream_Delete( p_stream );
if( p_file )
@@ -1715,6 +1735,11 @@ bool update_NeedUpgrade( update_t *p_update )
return false;
}
+void update_WaitDownload( update_t *p_update )
+{
+ (void)p_update;
+}
+
void update_Download( update_t *p_update, const char *psz_destdir )
{
(void)p_update; (void)psz_destdir;
More information about the vlc-devel
mailing list