[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.18-1-697-g2f78b87
kdecker at apple.com
kdecker at apple.com
Wed Jan 20 22:22:25 UTC 2010
The following commit has been merged in the debian/unstable branch:
commit f57dd66575270220522459d9f8a24a597178f448
Author: kdecker at apple.com <kdecker at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Jan 13 20:34:01 2010 +0000
https://bugs.webkit.org/show_bug.cgi?id=33610
<rdar://problem/7288546> Silverlight full screen performance problem seen on Snow Leopard.
* Plugins/WebNetscapePluginView.mm:
(-[WebNetscapePluginView _workaroundSilverlightFullScreenBug:]): Added. Work around Silverlight full screen
performance issue by maintaining an accelerated GL pixel format. We can safely remove this at some point in
the future when both Microsoft releases a genuine fix for 7288546 and enough Silverlight users update to the
new Silverlight. For now, we'll distinguish older broken versions of Silverlight by asking the plug-in if it
resolved its full screen badness.
(-[WebNetscapePluginView _createPlugin]): Call _workaroundSilverlightFullScreenBug:YES if this is Silverlight.
(-[WebNetscapePluginView _destroyPlugin]): Call _workaroundSilverlightFullScreenBug:NO if this is Silverlight.
https://bugs.webkit.org/show_bug.cgi?id=33610
<rdar://problem/7288546> Silverlight full screen performance problem seen on Snow Leopard.
* WebKit.xcodeproj/project.pbxproj: Link the project against OpenGL.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@53195 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index dbc20ec..07b094c 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,12 @@
+2010-01-13 Kevin Decker <kdecker at apple.com>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=33610
+ <rdar://problem/7288546> Silverlight full screen performance problem seen on Snow Leopard.
+
+ * WebKit.xcodeproj/project.pbxproj: Link the project against OpenGL.
+
2009-12-25 Darin Adler <darin at apple.com>
* StringsNotToBeLocalized.txt: Updated for recent changes.
diff --git a/WebKit/WebKit.xcodeproj/project.pbxproj b/WebKit/WebKit.xcodeproj/project.pbxproj
index d658b0d..92a49b3 100644
--- a/WebKit/WebKit.xcodeproj/project.pbxproj
+++ b/WebKit/WebKit.xcodeproj/project.pbxproj
@@ -15,6 +15,7 @@
0A2D87FE107AF52B00CDDEE3 /* WebPluginHalterClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0A2D87FC107AF52B00CDDEE3 /* WebPluginHalterClient.mm */; };
0AB752370FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AB752350FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.h */; };
0AB752380FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0AB752360FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm */; };
+ 0ACE917310FE47E30096A45F /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0ACE917210FE47E30096A45F /* OpenGL.framework */; };
0AEBFF630F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AEBFF610F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
0AEBFF640F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0AEBFF620F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.mm */; };
0FD3B0F21076C3E900039B96 /* WebVideoFullscreenController.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD3B0EE1076C3E900039B96 /* WebVideoFullscreenController.h */; };
@@ -366,6 +367,7 @@
0A2D87FC107AF52B00CDDEE3 /* WebPluginHalterClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebPluginHalterClient.mm; sourceTree = "<group>"; };
0AB752350FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebNetscapeContainerCheckContextInfo.h; sourceTree = "<group>"; };
0AB752360FA2E4DB00D7CBB1 /* WebNetscapeContainerCheckContextInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNetscapeContainerCheckContextInfo.mm; sourceTree = "<group>"; };
+ 0ACE917210FE47E30096A45F /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
0AEBFF610F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = WebNetscapeContainerCheckPrivate.h; sourceTree = "<group>"; };
0AEBFF620F9FA8BE000D486B /* WebNetscapeContainerCheckPrivate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNetscapeContainerCheckPrivate.mm; sourceTree = "<group>"; };
0FD3B0EE1076C3E900039B96 /* WebVideoFullscreenController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebVideoFullscreenController.h; sourceTree = "<group>"; };
@@ -727,6 +729,7 @@
1A20D08B0ED384F20043FA9F /* QuartzCore.framework in Frameworks */,
9398112F0824BF01008DF038 /* Security.framework in Frameworks */,
9398112C0824BF01008DF038 /* WebCore.framework in Frameworks */,
+ 0ACE917310FE47E30096A45F /* OpenGL.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -779,6 +782,7 @@
1A20D08A0ED384F20043FA9F /* QuartzCore.framework */,
830E81E005853AC000AD0891 /* Security.framework */,
F738C9EA03FAD3DF0321FBE0 /* WebCore.framework */,
+ 0ACE917210FE47E30096A45F /* OpenGL.framework */,
);
name = "Frameworks and Libraries";
sourceTree = "<group>";
diff --git a/WebKit/mac/ChangeLog b/WebKit/mac/ChangeLog
index afbc7b8..73d5149 100644
--- a/WebKit/mac/ChangeLog
+++ b/WebKit/mac/ChangeLog
@@ -1,3 +1,19 @@
+2010-01-13 Kevin Decker <kdecker at apple.com>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=33610
+ <rdar://problem/7288546> Silverlight full screen performance problem seen on Snow Leopard.
+
+ * Plugins/WebNetscapePluginView.mm:
+ (-[WebNetscapePluginView _workaroundSilverlightFullScreenBug:]): Added. Work around Silverlight full screen
+ performance issue by maintaining an accelerated GL pixel format. We can safely remove this at some point in
+ the future when both Microsoft releases a genuine fix for 7288546 and enough Silverlight users update to the
+ new Silverlight. For now, we'll distinguish older broken versions of Silverlight by asking the plug-in if it
+ resolved its full screen badness.
+ (-[WebNetscapePluginView _createPlugin]): Call _workaroundSilverlightFullScreenBug:YES if this is Silverlight.
+ (-[WebNetscapePluginView _destroyPlugin]): Call _workaroundSilverlightFullScreenBug:NO if this is Silverlight.
+
2010-01-11 Mark Rowe <mrowe at apple.com>
Reviewed by Darin Adler.
diff --git a/WebKit/mac/Plugins/WebNetscapePluginView.mm b/WebKit/mac/Plugins/WebNetscapePluginView.mm
index 7057da4..4a4a435 100644
--- a/WebKit/mac/Plugins/WebNetscapePluginView.mm
+++ b/WebKit/mac/Plugins/WebNetscapePluginView.mm
@@ -82,6 +82,7 @@
#define LoginWindowDidSwitchFromUserNotification @"WebLoginWindowDidSwitchFromUserNotification"
#define LoginWindowDidSwitchToUserNotification @"WebLoginWindowDidSwitchToUserNotification"
#define WKNVSupportsCompositingCoreAnimationPluginsBool 74656 /* TRUE if the browser supports hardware compositing of Core Animation plug-ins */
+static const int WKNVSilverlightFullScreenPerformanceIssueFixed = 7288546; /* TRUE if Siverlight addressed its underlying bug in <rdar://problem/7288546> */
using namespace WebCore;
using namespace WebKit;
@@ -2319,6 +2320,39 @@ static inline void getNPRect(const NSRect& nr, NPRect& npr)
return NO;
}
+// Work around Silverlight full screen performance issue by maintaining an accelerated GL pixel format.
+// We can safely remove it at some point in the future when both:
+// 1) Microsoft releases a genuine fix for 7288546.
+// 2) Enough Silverlight users update to the new Silverlight.
+// For now, we'll distinguish older broken versions of Silverlight by asking the plug-in if it resolved its full screen badness.
+- (void)_workaroundSilverlightFullScreenBug:(BOOL)initializedPlugin
+{
+#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
+ ASSERT(_isSilverlight);
+ NPBool isFullScreenPerformanceIssueFixed = 0;
+ NPPluginFuncs *pluginFuncs = [_pluginPackage.get() pluginFuncs];
+ if (pluginFuncs->getvalue && pluginFuncs->getvalue(plugin, static_cast<NPPVariable>(WKNVSilverlightFullScreenPerformanceIssueFixed), &isFullScreenPerformanceIssueFixed) == NPERR_NO_ERROR && isFullScreenPerformanceIssueFixed)
+ return;
+
+ static CGLPixelFormatObj pixelFormatObject = 0;
+ static unsigned refCount = 0;
+
+ if (initializedPlugin) {
+ refCount++;
+ if (refCount == 1) {
+ const CGLPixelFormatAttribute attributes[] = { kCGLPFAAccelerated, static_cast<CGLPixelFormatAttribute>(0) };
+ GLint npix;
+ CGLChoosePixelFormat(attributes, &pixelFormatObject, &npix);
+ }
+ } else {
+ ASSERT(pixelFormatObject);
+ refCount--;
+ if (!refCount)
+ CGLReleasePixelFormat(pixelFormatObject);
+ }
+#endif
+}
+
- (NPError)_createPlugin
{
plugin = (NPP)calloc(1, sizeof(NPP_t));
@@ -2337,6 +2371,8 @@ static inline void getNPRect(const NSRect& nr, NPRect& npr)
[[self class] setCurrentPluginView:self];
NPError npErr = [_pluginPackage.get() pluginFuncs]->newp((char *)[_MIMEType.get() cString], plugin, _mode, argsCount, cAttributes, cValues, NULL);
[[self class] setCurrentPluginView:nil];
+ if (_isSilverlight)
+ [self _workaroundSilverlightFullScreenBug:YES];
LOG(Plugins, "NPP_New: %d", npErr);
return npErr;
}
@@ -2345,6 +2381,9 @@ static inline void getNPRect(const NSRect& nr, NPRect& npr)
{
PluginMainThreadScheduler::scheduler().unregisterPlugin(plugin);
+ if (_isSilverlight)
+ [self _workaroundSilverlightFullScreenBug:NO];
+
NPError npErr;
npErr = ![_pluginPackage.get() pluginFuncs]->destroy(plugin, NULL);
LOG(Plugins, "NPP_Destroy: %d", npErr);
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list