[vlc-commits] macosx: delay the 'rebuilding fontcache' dialog (close #6040)
Felix Paul Kühne
git at videolan.org
Sun Feb 19 22:20:24 CET 2012
vlc | branch: master | Felix Paul Kühne <fkuehne at videolan.org> | Sun Feb 19 22:19:53 2012 +0100| [5b459832fe73699efcce93910ca4bf33d0599973] | committer: Felix Paul Kühne
macosx: delay the 'rebuilding fontcache' dialog (close #6040)
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5b459832fe73699efcce93910ca4bf33d0599973
---
modules/gui/macosx/coredialogs.h | 1 +
modules/gui/macosx/coredialogs.m | 10 +++++++++-
2 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/modules/gui/macosx/coredialogs.h b/modules/gui/macosx/coredialogs.h
index 777ead1..fda0b8e 100644
--- a/modules/gui/macosx/coredialogs.h
+++ b/modules/gui/macosx/coredialogs.h
@@ -87,6 +87,7 @@
-(void)showLoginDialog: (NSValue *)o_value;
-(IBAction)loginDialogAction:(id)sender;
+-(void)showProgressDialogOnMainThread: (NSValue *)o_value;
-(void)showProgressDialog: (NSValue *)o_value;
-(IBAction)progDialogAction:(id)sender;
-(BOOL)progressCancelled;
diff --git a/modules/gui/macosx/coredialogs.m b/modules/gui/macosx/coredialogs.m
index 86adb1f..9a0178a 100644
--- a/modules/gui/macosx/coredialogs.m
+++ b/modules/gui/macosx/coredialogs.m
@@ -79,7 +79,7 @@ static VLCCoreDialogProvider *_o_sharedInstance = nil;
else if( [o_type isEqualToString: @"dialog-login"] )
[self performSelectorOnMainThread:@selector(showLoginDialog:) withObject:o_value waitUntilDone:YES];
else if( [o_type isEqualToString: @"dialog-progress-bar"] )
- [self performSelectorOnMainThread:@selector(showProgressDialog:) withObject:o_value waitUntilDone:YES];
+ [self performSelector:@selector(showProgressDialogOnMainThread:) withObject: o_value afterDelay:3.00];
else
msg_Err( VLCIntf, "unhandled dialog type: '%s'", type );
}
@@ -161,6 +161,14 @@ static VLCCoreDialogProvider *_o_sharedInstance = nil;
[NSApp stopModalWithCode: 0];
}
+-(void)showProgressDialogOnMainThread: (NSValue *)o_value
+{
+ /* we work-around a Cocoa limitation here, since you cannot delay an execution
+ * on the main thread within a single call */
+ if (VLCIntf)
+ [self performSelectorOnMainThread:@selector(showProgressDialog:) withObject:o_value waitUntilDone:YES];
+}
+
-(void)showProgressDialog: (NSValue *)o_value
{
dialog_progress_bar_t *p_dialog = [o_value pointerValue];
More information about the vlc-commits
mailing list