From 056a2b9a08b01403b0111797372a042abab33953 Mon Sep 17 00:00:00 2001 From: David Fuhrmann Date: Thu, 20 Jun 2013 20:53:18 +0200 Subject: [PATCH] macosx: delay start in fullscreen animation to allow to finish resize animation before (close #8780) --- modules/gui/macosx/VLCVoutWindowController.m | 30 +++++++++++++++++++- modules/gui/macosx/intf.m | 19 ------------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/modules/gui/macosx/VLCVoutWindowController.m b/modules/gui/macosx/VLCVoutWindowController.m index ff90a198d9..0bd56d3453 100644 --- a/modules/gui/macosx/VLCVoutWindowController.m +++ b/modules/gui/macosx/VLCVoutWindowController.m @@ -148,9 +148,37 @@ } } + NSSize videoViewSize = NSMakeSize(videoViewPosition.size.width, videoViewPosition.size.height); + + // TODO: find a cleaner way for "start in fullscreen" + // Start in fs, because either prefs settings, or fullscreen button was pressed before + if (var_InheritBool(VLCIntf, "fullscreen") || var_GetBool(pl_Get(VLCIntf), "fullscreen")) { + + // this is not set when we start in fullscreen because of + // fullscreen settings in video prefs the second time + var_SetBool(p_wnd->p_parent, "fullscreen", 1); + + int i_full = 1; + + SEL sel = @selector(setFullscreen:forWindow:); + NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:sel]]; + [inv setTarget:self]; + [inv setSelector:sel]; + [inv setArgument:&i_full atIndex:2]; + [inv setArgument:&p_wnd atIndex:3]; + + NSTimeInterval resizeTime = 0.; + if(!b_nonembedded && !b_video_wallpaper) { + NSRect window_rect = [o_new_video_window getWindowRectForProposedVideoViewSize:videoViewSize]; + resizeTime = [o_new_video_window animationResizeTime:window_rect]; + resizeTime += 0.1; + } + + [NSTimer scheduledTimerWithTimeInterval:resizeTime invocation:inv repeats:NO]; + } + if (!b_video_wallpaper) { // set window size - NSSize videoViewSize = NSMakeSize(videoViewPosition.size.width, videoViewPosition.size.height); if (b_nonembedded) { NSRect window_rect = [o_new_video_window getWindowRectForProposedVideoViewSize:videoViewSize]; diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m index 9ecdcf88ea..179aafb12e 100644 --- a/modules/gui/macosx/intf.m +++ b/modules/gui/macosx/intf.m @@ -178,25 +178,6 @@ int WindowOpen(vout_window_t *p_wnd, const vout_window_cfg_t *cfg) msg_Dbg(VLCIntf, "returning videoview with proposed position x=%i, y=%i, width=%i, height=%i", cfg->x, cfg->y, cfg->width, cfg->height); p_wnd->handle.nsobject = videoView; - // TODO: find a cleaner way for "start in fullscreen" - // either prefs settings, or fullscreen button was pressed before - if (var_InheritBool(VLCIntf, "fullscreen") || var_GetBool(pl_Get(VLCIntf), "fullscreen")) { - - // this is not set when we start in fullscreen because of - // fullscreen settings in video prefs the second time - var_SetBool(p_wnd->p_parent, "fullscreen", 1); - - int i_full = 1; - - SEL sel = @selector(setFullscreen:forWindow:); - NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[o_vout_controller methodSignatureForSelector:sel]]; - [inv setTarget:o_vout_controller]; - [inv setSelector:sel]; - [inv setArgument:&i_full atIndex:2]; - [inv setArgument:&p_wnd atIndex:3]; - [inv performSelectorOnMainThread:@selector(invoke) withObject:nil - waitUntilDone:NO]; - } [o_vout_provider_lock unlock]; [[VLCMain sharedInstance] setActiveVideoPlayback: YES]; -- 2.39.2