diff options
author | Steve Block <steveblock@google.com> | 2009-11-05 09:23:40 +0000 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2009-11-10 22:41:12 +0000 |
commit | cac0f67c402d107cdb10971b95719e2ff9c7c76b (patch) | |
tree | d182c7f87211c6f201a5f038e332336493ebdbe7 /WebKit/mac/WebView/WebVideoFullscreenController.mm | |
parent | 4b2ef0f288e7c6c4602f621b7a0e9feed304b70e (diff) | |
download | external_webkit-cac0f67c402d107cdb10971b95719e2ff9c7c76b.zip external_webkit-cac0f67c402d107cdb10971b95719e2ff9c7c76b.tar.gz external_webkit-cac0f67c402d107cdb10971b95719e2ff9c7c76b.tar.bz2 |
Merge webkit.org at r50258 : Initial merge by git.
Change-Id: I1a9e1dc4ed654b69174ad52a4f031a07240f37b0
Diffstat (limited to 'WebKit/mac/WebView/WebVideoFullscreenController.mm')
-rw-r--r-- | WebKit/mac/WebView/WebVideoFullscreenController.mm | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/WebKit/mac/WebView/WebVideoFullscreenController.mm b/WebKit/mac/WebView/WebVideoFullscreenController.mm index 6592ad2..fe07f3e 100644 --- a/WebKit/mac/WebView/WebVideoFullscreenController.mm +++ b/WebKit/mac/WebView/WebVideoFullscreenController.mm @@ -42,6 +42,10 @@ SOFT_LINK_FRAMEWORK(QTKit) SOFT_LINK_CLASS(QTKit, QTMovieView) +SOFT_LINK_POINTER(QTKit, QTMovieRateDidChangeNotification, NSString *) + +#define QTMovieRateDidChangeNotification getQTMovieRateDidChangeNotification() + @interface WebVideoFullscreenWindow : NSWindow #if !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_TIGER) <NSAnimationDelegate> @@ -76,6 +80,7 @@ SOFT_LINK_CLASS(QTKit, QTMovieView) { ASSERT(!_backgroundFullscreenWindow); ASSERT(!_fadeAnimation); + [[NSNotificationCenter defaultCenter] removeObserver:self]; [super dealloc]; } @@ -109,7 +114,15 @@ SOFT_LINK_CLASS(QTKit, QTMovieView) _mediaElement = mediaElement; if ([self isWindowLoaded]) { QTMovieView *movieView = [[self fullscreenWindow] movieView]; - [movieView setMovie:_mediaElement->platformMedia().qtMovie]; + QTMovie *movie = _mediaElement->platformMedia().qtMovie; + + ASSERT(movieView); + ASSERT(movie); + [movieView setMovie:movie]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(rateChanged:) + name:QTMovieRateDidChangeNotification + object:movie]; } } @@ -135,6 +148,9 @@ SOFT_LINK_CLASS(QTKit, QTMovieView) - (void)windowDidExitFullscreen { + // If we don't clear the movie, underlying movie data structures are leaked and the movie keeps playing <rdar://problem/7295070> + [[[self fullscreenWindow] movieView] setMovie:nil]; + [self clearFadeAnimation]; [[self window] close]; [self setWindow:nil]; @@ -264,14 +280,21 @@ static NSWindow *createBackgroundFullscreenWindow(NSRect frame, int level) #pragma mark - #pragma mark Window callback +- (void)_requestExit +{ + if (_mediaElement) + _mediaElement->exitFullscreen(); + _forceDisableAnimation = NO; +} + - (void)requestExitFullscreenWithAnimation:(BOOL)animation { if (_isEndingFullscreen) return; _forceDisableAnimation = !animation; - _mediaElement->exitFullscreen(); - _forceDisableAnimation = NO; + [self performSelector:@selector(_requestExit) withObject:nil afterDelay:0]; + } - (void)requestExitFullscreen @@ -283,6 +306,16 @@ static NSWindow *createBackgroundFullscreenWindow(NSRect frame, int level) { [_hudController fadeWindowIn]; } + +#pragma mark - +#pragma mark QTMovie callbacks + +- (void)rateChanged:(NSNotification *)unusedNotification +{ + UNUSED_PARAM(unusedNotification); + [_hudController updateRate]; +} + @end @implementation WebVideoFullscreenWindow @@ -439,6 +472,7 @@ static NSWindow *createBackgroundFullscreenWindow(NSRect frame, int level) [super resignKeyWindow]; [[self windowController] requestExitFullscreenWithAnimation:NO]; } + @end #endif /* ENABLE(VIDEO) */ |