diff options
Diffstat (limited to 'WebKit/mac/Plugins')
-rw-r--r-- | WebKit/mac/Plugins/WebBaseNetscapePluginView.h | 4 | ||||
-rw-r--r-- | WebKit/mac/Plugins/WebBaseNetscapePluginView.mm | 8 | ||||
-rw-r--r-- | WebKit/mac/Plugins/WebPluginController.h | 7 | ||||
-rw-r--r-- | WebKit/mac/Plugins/WebPluginController.mm | 43 |
4 files changed, 62 insertions, 0 deletions
diff --git a/WebKit/mac/Plugins/WebBaseNetscapePluginView.h b/WebKit/mac/Plugins/WebBaseNetscapePluginView.h index 81d801a..4c8ea84 100644 --- a/WebKit/mac/Plugins/WebBaseNetscapePluginView.h +++ b/WebKit/mac/Plugins/WebBaseNetscapePluginView.h @@ -140,6 +140,10 @@ class WebHaltablePlugin; - (void)invalidatePluginContentRect:(NSRect)rect; +#ifndef BUILDING_ON_TIGER +- (CALayer *)pluginLayer; +#endif + @end diff --git a/WebKit/mac/Plugins/WebBaseNetscapePluginView.mm b/WebKit/mac/Plugins/WebBaseNetscapePluginView.mm index bcef2a1..6ae7334 100644 --- a/WebKit/mac/Plugins/WebBaseNetscapePluginView.mm +++ b/WebKit/mac/Plugins/WebBaseNetscapePluginView.mm @@ -948,6 +948,14 @@ String WebHaltablePlugin::pluginName() const } } +#ifndef BUILDING_ON_TIGER +- (CALayer *)pluginLayer +{ + ASSERT_NOT_REACHED(); + return nil; +} +#endif + @end namespace WebKit { diff --git a/WebKit/mac/Plugins/WebPluginController.h b/WebKit/mac/Plugins/WebPluginController.h index ffc07a4..dc1f413 100644 --- a/WebKit/mac/Plugins/WebPluginController.h +++ b/WebKit/mac/Plugins/WebPluginController.h @@ -42,6 +42,9 @@ NSMutableArray *_views; BOOL _started; NSMutableSet *_checksInProgress; +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) + NSMutableArray *_viewsNotInDocument; +#endif } + (NSView *)plugInViewWithArguments:(NSDictionary *)arguments fromPluginPackage:(WebPluginPackage *)plugin; @@ -53,6 +56,10 @@ - (void)addPlugin:(NSView *)view; - (void)destroyPlugin:(NSView *)view; +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) +- (void)pluginViewCreated:(NSView *)view; ++ (void)pluginViewHidden:(NSView *)view; +#endif - (void)startAllPlugins; - (void)stopAllPlugins; diff --git a/WebKit/mac/Plugins/WebPluginController.mm b/WebKit/mac/Plugins/WebPluginController.mm index 1c85862..9c037c2 100644 --- a/WebKit/mac/Plugins/WebPluginController.mm +++ b/WebKit/mac/Plugins/WebPluginController.mm @@ -138,6 +138,9 @@ static NSMutableSet *pluginViews = nil; { [_views release]; [_checksInProgress release]; +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) + [_viewsNotInDocument release]; +#endif [super dealloc]; } @@ -198,9 +201,30 @@ static NSMutableSet *pluginViews = nil; for (i = 0; i < count; i++) [self stopOnePlugin:[_views objectAtIndex:i]]; +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) + count = [_viewsNotInDocument count]; + for (i = 0; i < count; i++) + [self stopOnePlugin:[_viewsNotInDocument objectAtIndex:i]]; +#endif + _started = NO; } +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) +- (void)pluginViewCreated:(NSView *)view +{ + if (!_viewsNotInDocument) + _viewsNotInDocument= [[NSMutableArray alloc] init]; + if (![_viewsNotInDocument containsObject:view]) + [_viewsNotInDocument addObject:view]; +} + ++ (void)pluginViewHidden:(NSView *)view +{ + [pluginViews removeObject:view]; +} +#endif + - (void)addPlugin:(NSView *)view { if (!_documentView) { @@ -212,6 +236,11 @@ static NSMutableSet *pluginViews = nil; [_views addObject:view]; [[_documentView _webView] addPluginInstanceView:view]; +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) + if ([_viewsNotInDocument containsObject:view]) + [_viewsNotInDocument removeObject:view]; +#endif + BOOL oldDefersCallbacks = [[self webView] defersCallbacks]; if (!oldDefersCallbacks) [[self webView] setDefersCallbacks:YES]; @@ -251,7 +280,11 @@ static NSMutableSet *pluginViews = nil; - (void)destroyPlugin:(NSView *)view { +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) + if ([_views containsObject:view] || [_viewsNotInDocument containsObject:view]) { +#else if ([_views containsObject:view]) { +#endif if (_started) [self stopOnePlugin:view]; [self destroyOnePlugin:view]; @@ -264,6 +297,9 @@ static NSMutableSet *pluginViews = nil; [pluginViews removeObject:view]; [[_documentView _webView] removePluginInstanceView:view]; [_views removeObject:view]; +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) + [_viewsNotInDocument removeObject:view]; +#endif } } @@ -310,6 +346,13 @@ static void cancelOutstandingCheck(const void *item, void *context) [pluginViews removeObject:aView]; [[_documentView _webView] removePluginInstanceView:aView]; } + +#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) + count = [_viewsNotInDocument count]; + for (i = 0; i < count; i++) + [self destroyOnePlugin:[_viewsNotInDocument objectAtIndex:i]]; +#endif + [_views makeObjectsPerformSelector:@selector(removeFromSuperviewWithoutNeedingDisplay)]; [_views release]; _views = nil; |