[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

kdecker at apple.com kdecker at apple.com
Thu Apr 8 01:03:40 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit d1a7cb55c9f5e94ba7f6164bb23b45067f018751
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