[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373
cmarrin at apple.com
cmarrin at apple.com
Thu Apr 8 00:32:58 UTC 2010
The following commit has been merged in the webkit-1.2 branch:
commit 9b3e96de7903de96a389483e3ed7478219bc00bd
Author: cmarrin at apple.com <cmarrin at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Dec 11 18:29:01 2009 +0000
Delay load DLLs for accelerated compositing
https://bugs.webkit.org/show_bug.cgi?id=31856
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@52006 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index d1e1e66..8834665 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,3 +1,19 @@
+2009-12-11 Chris Marrin <cmarrin at apple.com>
+
+ Reviewed by Adam Roben.
+
+ Add check for presence of QuartzCore headers
+ https://bugs.webkit.org/show_bug.cgi?id=31856
+
+ The script now checks for the presence of QuartzCore.h. If present
+ it will turn on ACCELERATED_COMPOSITING and 3D_RENDERING to enable
+ HW compositing on Windows. The script writes QuartzCorePresent.h to
+ the build directory which has a define telling whether QuartzCore is
+ present.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
+ * wtf/Platform.h:
+
2009-12-11 Kent Tamura <tkent at chromium.org>
Reviewed by Darin Adler.
diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh
index 6d6b588..2d460c6 100755
--- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh
+++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh
@@ -1,5 +1,13 @@
#!/usr/bin/bash
+# Determine if we have QuartzCore so we can turn on
+if [ -f ${WEBKITLIBRARIESDIR}/include/QuartzCore/QuartzCore.h ]
+then
+ echo "#define QUARTZCORE_PRESENT 1" > ${WEBKITOUTPUTDIR}/Include/QuartzCorePresent.h
+else
+ echo "#define QUARTZCORE_PRESENT 0" > ${WEBKITOUTPUTDIR}/Include/QuartzCorePresent.h
+fi
+
NUMCPUS=`../../../WebKitTools/Scripts/num-cpus`
XSRCROOT="`pwd`/../.."
diff --git a/JavaScriptCore/wtf/Platform.h b/JavaScriptCore/wtf/Platform.h
index 918cb47..72ec4b8 100644
--- a/JavaScriptCore/wtf/Platform.h
+++ b/JavaScriptCore/wtf/Platform.h
@@ -915,8 +915,15 @@ on MinGW. See https://bugs.webkit.org/show_bug.cgi?id=29268 */
#define WTF_USE_ACCELERATED_COMPOSITING 1
#endif
+/* FIXME: Defining ENABLE_3D_RENDERING here isn't really right, but it's always used with
+ with WTF_USE_ACCELERATED_COMPOSITING, and it allows the feature to be turned on and
+ off in one place. */
#if PLATFORM(WIN)
-#define WTF_USE_ACCELERATED_COMPOSITING 0
+#include "QuartzCorePresent.h"
+#if QUARTZCORE_PRESENT
+#define WTF_USE_ACCELERATED_COMPOSITING 1
+#define ENABLE_3D_RENDERING 1
+#endif
#endif
#if COMPILER(GCC)
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 9673822..ebe8c5a 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,40 @@
+<<<<<<< .mine
+2009-12-11 Chris Marrin <cmarrin at apple.com>
+
+ Reviewed by Adam Roben.
+
+ Delay load DLLs for accelerated compositing
+ https://bugs.webkit.org/show_bug.cgi?id=31856
+
+ Change calls that use the data export symbols from
+ QuartzCore to use the functions in QuartzCoreInterface.
+ This allows QuartzCore to be delay loaded.
+
+ * platform/graphics/win/GraphicsLayerCACF.cpp:
+ (WebCore::GraphicsLayerCACF::GraphicsLayerCACF):
+ (WebCore::GraphicsLayerCACF::updateLayerPreserves3D):
+ (WebCore::GraphicsLayerCACF::updateContentsImage):
+ * platform/graphics/win/WKCACFLayer.cpp:
+ (WebCore::toCACFLayerType):
+ (WebCore::toCACFContentsGravityType):
+ (WebCore::fromCACFContentsGravityType):
+ (WebCore::toCACFFilterType):
+ (WebCore::fromCACFFilterType):
+ (WebCore::WKCACFLayer::create):
+ (WebCore::WKCACFLayer::WKCACFLayer):
+ (WebCore::WKCACFLayer::setContentsGravity):
+ (WebCore::WKCACFLayer::contentsGravity):
+ (WebCore::WKCACFLayer::setMagnificationFilter):
+ (WebCore::WKCACFLayer::magnificationFilter):
+ (WebCore::WKCACFLayer::setMinificationFilter):
+ (WebCore::WKCACFLayer::minificationFilter):
+ * platform/graphics/win/WKCACFLayer.h:
+ (WebCore::WKCACFLayer::):
+ * platform/graphics/win/WKCACFLayerRenderer.cpp:
+ (WebCore::WKCACFLayerRenderer::acceleratedCompositingAvailable):
+ (WebCore::WKCACFLayerRenderer::createRenderer):
+
+=======
2009-12-11 Steve Block <steveblock at google.com>
Reviewed by Darin Fisher.
@@ -11,6 +48,7 @@
* platform/network/android/ResourceRequestAndroid.cpp: Added.
(WebCore::initializeMaximumHTTPConnectionCountPerHost): Android-specific implementation.
+>>>>>>> .r52005
2009-12-11 Kent Tamura <tkent at chromium.org>
Reviewed by Darin Fisher.
diff --git a/WebCore/platform/graphics/win/GraphicsLayerCACF.cpp b/WebCore/platform/graphics/win/GraphicsLayerCACF.cpp
index 22faeb8..5ec90b8 100644
--- a/WebCore/platform/graphics/win/GraphicsLayerCACF.cpp
+++ b/WebCore/platform/graphics/win/GraphicsLayerCACF.cpp
@@ -36,6 +36,7 @@
#include "PlatformString.h"
#include "SystemTime.h"
#include "WKCACFLayer.h"
+#include <QuartzCoreInterface/QuartzCoreInterface.h>
#include <wtf/CurrentTime.h>
#include <wtf/StringExtras.h>
@@ -123,7 +124,7 @@ GraphicsLayerCACF::GraphicsLayerCACF(GraphicsLayerClient* client)
, m_contentsLayerPurpose(NoContentsLayer)
, m_contentsLayerHasBackgroundColor(false)
{
- m_layer = WKCACFLayer::create(kCACFLayer, this);
+ m_layer = WKCACFLayer::create(WKCACFLayer::Layer, this);
updateDebugIndicators();
}
@@ -536,7 +537,7 @@ void GraphicsLayerCACF::updateLayerPreserves3D()
{
if (m_preserves3D && !m_transformLayer) {
// Create the transform layer.
- m_transformLayer = WKCACFLayer::create(kCACFTransformLayer, this);
+ m_transformLayer = WKCACFLayer::create(WKCACFLayer::TransformLayer, this);
#ifndef NDEBUG
m_transformLayer->setName(String().format("Transform Layer CATransformLayer(%p) GraphicsLayer(%p)", m_transformLayer.get(), this));
@@ -552,7 +553,7 @@ void GraphicsLayerCACF::updateLayerPreserves3D()
m_layer->setPosition(point);
m_layer->setAnchorPoint(CGPointMake(0.5f, 0.5f));
- m_layer->setTransform(CATransform3DIdentity);
+ m_layer->setTransform(wkqcCATransform3DIdentity());
// Set the old layer to opacity of 1. Further down we will set the opacity on the transform layer.
m_layer->setOpacity(1);
@@ -609,7 +610,7 @@ void GraphicsLayerCACF::updateContentsImage()
{
if (m_pendingContentsImage) {
if (!m_contentsLayer.get()) {
- RefPtr<WKCACFLayer> imageLayer = WKCACFLayer::create(kCACFLayer, this);
+ RefPtr<WKCACFLayer> imageLayer = WKCACFLayer::create(WKCACFLayer::Layer, this);
#ifndef NDEBUG
imageLayer->setName("Image Layer");
#endif
@@ -620,7 +621,7 @@ void GraphicsLayerCACF::updateContentsImage()
// FIXME: maybe only do trilinear if the image is being scaled down,
// but then what if the layer size changes?
- m_contentsLayer->setMinificationFilter(kCACFFilterTrilinear);
+ m_contentsLayer->setMinificationFilter(WKCACFLayer::Trilinear);
m_contentsLayer->setContents(m_pendingContentsImage.get());
m_pendingContentsImage = 0;
diff --git a/WebCore/platform/graphics/win/WKCACFLayer.cpp b/WebCore/platform/graphics/win/WKCACFLayer.cpp
index 21e010d..9a1aabc 100644
--- a/WebCore/platform/graphics/win/WKCACFLayer.cpp
+++ b/WebCore/platform/graphics/win/WKCACFLayer.cpp
@@ -30,12 +30,15 @@
#include "WKCACFLayer.h"
#include "WKCACFContextFlusher.h"
+#include "WKCACFLayerRenderer.h"
#include <stdio.h>
#include <QuartzCore/CACFContext.h>
#include <QuartzCore/CARender.h>
+#include <QuartzCoreInterface/QuartzCoreInterface.h>
-#pragma comment(lib, "QuartzCore")
+#pragma comment(lib, "QuartzCore")
+#pragma comment(lib, "QuartzCoreInterface")
namespace WebCore {
@@ -47,11 +50,135 @@ static void displayInContext(CACFLayerRef layer, CGContextRef context)
WKCACFLayer::layer(layer)->display(context);
}
+#define STATIC_CACF_STRING(name) \
+ static CFStringRef name() \
+ { \
+ static CFStringRef name = wkqcCFStringRef(wkqc##name); \
+ return name; \
+ }
+
+STATIC_CACF_STRING(kCACFLayer)
+STATIC_CACF_STRING(kCACFTransformLayer)
+STATIC_CACF_STRING(kCACFGravityCenter)
+STATIC_CACF_STRING(kCACFGravityTop)
+STATIC_CACF_STRING(kCACFGravityBottom)
+STATIC_CACF_STRING(kCACFGravityLeft)
+STATIC_CACF_STRING(kCACFGravityRight)
+STATIC_CACF_STRING(kCACFGravityTopLeft)
+STATIC_CACF_STRING(kCACFGravityTopRight)
+STATIC_CACF_STRING(kCACFGravityBottomLeft)
+STATIC_CACF_STRING(kCACFGravityBottomRight)
+STATIC_CACF_STRING(kCACFGravityResize)
+STATIC_CACF_STRING(kCACFGravityResizeAspect)
+STATIC_CACF_STRING(kCACFGravityResizeAspectFill)
+STATIC_CACF_STRING(kCACFFilterLinear)
+STATIC_CACF_STRING(kCACFFilterNearest)
+STATIC_CACF_STRING(kCACFFilterTrilinear)
+STATIC_CACF_STRING(kCACFFilterLanczos)
+
+static CFStringRef toCACFLayerType(WKCACFLayer::LayerType type)
+{
+ switch (type) {
+ case WKCACFLayer::Layer: return kCACFLayer();
+ case WKCACFLayer::TransformLayer: return kCACFTransformLayer();
+ default: return 0;
+ }
+}
+
+static CFStringRef toCACFContentsGravityType(WKCACFLayer::ContentsGravityType type)
+{
+ switch (type) {
+ case WKCACFLayer::Center: return kCACFGravityCenter();
+ case WKCACFLayer::Top: return kCACFGravityTop();
+ case WKCACFLayer::Bottom: return kCACFGravityBottom();
+ case WKCACFLayer::Left: return kCACFGravityLeft();
+ case WKCACFLayer::Right: return kCACFGravityRight();
+ case WKCACFLayer::TopLeft: return kCACFGravityTopLeft();
+ case WKCACFLayer::TopRight: return kCACFGravityTopRight();
+ case WKCACFLayer::BottomLeft: return kCACFGravityBottomLeft();
+ case WKCACFLayer::BottomRight: return kCACFGravityBottomRight();
+ case WKCACFLayer::Resize: return kCACFGravityResize();
+ case WKCACFLayer::ResizeAspect: return kCACFGravityResizeAspect();
+ case WKCACFLayer::ResizeAspectFill: return kCACFGravityResizeAspectFill();
+ default: return 0;
+ }
+}
+
+static WKCACFLayer::ContentsGravityType fromCACFContentsGravityType(CFStringRef string)
+{
+ if (CFEqual(string, kCACFGravityTop()))
+ return WKCACFLayer::Top;
+
+ if (CFEqual(string, kCACFGravityBottom()))
+ return WKCACFLayer::Bottom;
+
+ if (CFEqual(string, kCACFGravityLeft()))
+ return WKCACFLayer::Left;
+
+ if (CFEqual(string, kCACFGravityRight()))
+ return WKCACFLayer::Right;
+
+ if (CFEqual(string, kCACFGravityTopLeft()))
+ return WKCACFLayer::TopLeft;
+
+ if (CFEqual(string, kCACFGravityTopRight()))
+ return WKCACFLayer::TopRight;
+
+ if (CFEqual(string, kCACFGravityBottomLeft()))
+ return WKCACFLayer::BottomLeft;
+
+ if (CFEqual(string, kCACFGravityBottomRight()))
+ return WKCACFLayer::BottomRight;
+
+ if (CFEqual(string, kCACFGravityResize()))
+ return WKCACFLayer::Resize;
+
+ if (CFEqual(string, kCACFGravityResizeAspect()))
+ return WKCACFLayer::ResizeAspect;
+
+ if (CFEqual(string, kCACFGravityResizeAspectFill()))
+ return WKCACFLayer::ResizeAspectFill;
+
+ return WKCACFLayer::Center;
+}
+
+static CFStringRef toCACFFilterType(WKCACFLayer::FilterType type)
+{
+ switch (type) {
+ case WKCACFLayer::Linear: return kCACFFilterLinear();
+ case WKCACFLayer::Nearest: return kCACFFilterNearest();
+ case WKCACFLayer::Trilinear: return kCACFFilterTrilinear();
+ case WKCACFLayer::Lanczos: return kCACFFilterLanczos();
+ default: return 0;
+ }
+}
+
+static WKCACFLayer::FilterType fromCACFFilterType(CFStringRef string)
+{
+ if (CFEqual(string, kCACFFilterNearest()))
+ return WKCACFLayer::Nearest;
+
+ if (CFEqual(string, kCACFFilterTrilinear()))
+ return WKCACFLayer::Trilinear;
+
+ if (CFEqual(string, kCACFFilterLanczos()))
+ return WKCACFLayer::Lanczos;
+
+ return WKCACFLayer::Linear;
+}
+
+PassRefPtr<WKCACFLayer> WKCACFLayer::create(LayerType type, GraphicsLayerCACF* owner)
+{
+ if (!WKCACFLayerRenderer::acceleratedCompositingAvailable())
+ return 0;
+ return adoptRef(new WKCACFLayer(type, owner));
+}
+
// FIXME: It might be good to have a way of ensuring that all WKCACFLayers eventually
// get destroyed in debug builds. A static counter could accomplish this pretty easily.
-WKCACFLayer::WKCACFLayer(CFStringRef className, GraphicsLayerCACF* owner)
- : m_layer(AdoptCF, CACFLayerCreate(className))
+WKCACFLayer::WKCACFLayer(LayerType type, GraphicsLayerCACF* owner)
+ : m_layer(AdoptCF, CACFLayerCreate(toCACFLayerType(type)))
, m_needsDisplayOnBoundsChange(false)
, m_owner(owner)
{
@@ -291,6 +418,39 @@ void WKCACFLayer::setFrame(const CGRect& rect)
setNeedsDisplay();
}
+void WKCACFLayer::setContentsGravity(ContentsGravityType type)
+{
+ CACFLayerSetContentsGravity(layer(), toCACFContentsGravityType(type));
+ setNeedsCommit();
+}
+
+WKCACFLayer::ContentsGravityType WKCACFLayer::contentsGravity() const
+{
+ return fromCACFContentsGravityType(CACFLayerGetContentsGravity(layer()));
+}
+
+void WKCACFLayer::setMagnificationFilter(FilterType type)
+{
+ CACFLayerSetMagnificationFilter(layer(), toCACFFilterType(type));
+ setNeedsCommit();
+}
+
+WKCACFLayer::FilterType WKCACFLayer::magnificationFilter() const
+{
+ return fromCACFFilterType(CACFLayerGetMagnificationFilter(layer()));
+}
+
+void WKCACFLayer::setMinificationFilter(FilterType type)
+{
+ CACFLayerSetMinificationFilter(layer(), toCACFFilterType(type));
+ setNeedsCommit();
+}
+
+WKCACFLayer::FilterType WKCACFLayer::minificationFilter() const
+{
+ return fromCACFFilterType(CACFLayerGetMinificationFilter(layer()));
+}
+
WKCACFLayer* WKCACFLayer::rootLayer() const
{
WKCACFLayer* layer = const_cast<WKCACFLayer*>(this);
diff --git a/WebCore/platform/graphics/win/WKCACFLayer.h b/WebCore/platform/graphics/win/WKCACFLayer.h
index 6655f7a..6892c6e 100644
--- a/WebCore/platform/graphics/win/WKCACFLayer.h
+++ b/WebCore/platform/graphics/win/WKCACFLayer.h
@@ -50,7 +50,12 @@ class WKCACFTimingFunction;
class WKCACFLayer : public RefCounted<WKCACFLayer> {
public:
- static PassRefPtr<WKCACFLayer> create(CFStringRef className, GraphicsLayerCACF* owner = 0) { return adoptRef(new WKCACFLayer(className, owner)); }
+ enum LayerType { Layer, TransformLayer };
+ enum FilterType { Linear, Nearest, Trilinear, Lanczos };
+ enum ContentsGravityType { Center, Top, Bottom, Left, Right, TopLeft, TopRight,
+ BottomLeft, BottomRight, Resize, ResizeAspect, ResizeAspectFill };
+
+ static PassRefPtr<WKCACFLayer> create(LayerType, GraphicsLayerCACF* owner = 0);
static WKCACFLayer* layer(CACFLayerRef layer) { return static_cast<WKCACFLayer*>(CACFLayerGetUserData(layer)); }
~WKCACFLayer();
@@ -142,8 +147,8 @@ public:
void setContentsRect(const CGRect& contentsRect) { CACFLayerSetContentsRect(layer(), contentsRect); setNeedsCommit(); }
CGRect contentsRect() const { return CACFLayerGetContentsRect(layer()); }
- void setContentsGravity(CFStringRef str) { CACFLayerSetContentsGravity(layer(), str); setNeedsCommit(); }
- CFStringRef contentsGravity() const { return CACFLayerGetContentsGravity(layer()); }
+ void setContentsGravity(ContentsGravityType);
+ ContentsGravityType contentsGravity() const;
void setDoubleSided(bool b) { CACFLayerSetDoubleSided(layer(), b); setNeedsCommit(); }
bool doubleSided() const { return CACFLayerIsDoubleSided(layer()); }
@@ -163,11 +168,11 @@ public:
void setMasksToBounds(bool b) { CACFLayerSetMasksToBounds(layer(), b); }
bool masksToBounds() const { return CACFLayerGetMasksToBounds(layer()); }
- void setMagnificationFilter(const String& string) { CACFLayerSetMagnificationFilter(layer(), RetainPtr<CFStringRef>(AdoptCF, string.createCFString()).get()); }
- String magnificationFilter() const { return CACFLayerGetMagnificationFilter(layer()); }
+ void setMagnificationFilter(FilterType);
+ FilterType magnificationFilter() const;
- void setMinificationFilter(const String& string) { CACFLayerSetMinificationFilter(layer(), RetainPtr<CFStringRef>(AdoptCF, string.createCFString()).get()); }
- String minificationFilter() const { return CACFLayerGetMinificationFilter(layer()); }
+ void setMinificationFilter(FilterType);
+ FilterType minificationFilter() const;
void setMinificationFilterBias(float bias) { CACFLayerSetMinificationFilterBias(layer(), bias); }
float minificationFilterBias() const { return CACFLayerGetMinificationFilterBias(layer()); }
@@ -218,9 +223,9 @@ public:
void setGeometryFlipped(bool flipped) { CACFLayerSetGeometryFlipped(layer(), flipped); setNeedsCommit(); }
bool geometryFlipped() const { return CACFLayerIsGeometryFlipped(layer()); }
- WKCACFLayer(CFStringRef className, GraphicsLayerCACF* owner);
-
private:
+ WKCACFLayer(LayerType, GraphicsLayerCACF* owner);
+
void setNeedsCommit();
CACFLayerRef layer() const { return m_layer.get(); }
size_t numSublayers() const
diff --git a/WebCore/platform/graphics/win/WKCACFLayerRenderer.cpp b/WebCore/platform/graphics/win/WKCACFLayerRenderer.cpp
index 9fbd0fc..23670b2 100644
--- a/WebCore/platform/graphics/win/WKCACFLayerRenderer.cpp
+++ b/WebCore/platform/graphics/win/WKCACFLayerRenderer.cpp
@@ -34,15 +34,16 @@
#include <CoreGraphics/CGSRegion.h>
#include <QuartzCore/CACFContext.h>
#include <QuartzCore/CARenderOGL.h>
+#include <QuartzCoreInterface/QuartzCoreInterface.h>
#include <wtf/HashMap.h>
#include <wtf/OwnArrayPtr.h>
#include <d3d9.h>
#include <d3dx9.h>
#include <dxerr9.h>
-#pragma comment(lib, "d3d9")
-#pragma comment(lib, "d3dx9")
-#pragma comment(lib, "QuartzCore")
+#pragma comment(lib, "d3d9")
+#pragma comment(lib, "d3dx9")
+#pragma comment(lib, "QuartzCore")
static IDirect3D9* s_d3d = 0;
static IDirect3D9* d3d()
@@ -90,29 +91,29 @@ static D3DPRESENT_PARAMETERS initialPresentationParameters()
return parameters;
}
-bool WKCACFLayerRenderer::acceleratedCompositingAvailable()
-{
- static bool available;
- static bool tested;
-
- if (tested)
- return available;
-
- tested = true;
- HMODULE library = LoadLibrary(TEXT("d3d9.dll"));
- if (!library)
- return false;
-
- FreeLibrary(library);
- library = LoadLibrary(TEXT("QuartzCore.dll"));
- if (!library)
- return false;
-
- FreeLibrary(library);
- available = true;
- return available;
-}
-
+bool WKCACFLayerRenderer::acceleratedCompositingAvailable()
+{
+ static bool available;
+ static bool tested;
+
+ if (tested)
+ return available;
+
+ tested = true;
+ HMODULE library = LoadLibrary(TEXT("d3d9.dll"));
+ if (!library)
+ return false;
+
+ FreeLibrary(library);
+ library = LoadLibrary(TEXT("QuartzCore.dll"));
+ if (!library)
+ return false;
+
+ FreeLibrary(library);
+ available = true;
+ return available;
+}
+
void WKCACFLayerRenderer::didFlushContext(CACFContextRef context)
{
WKCACFLayerRenderer* window = windowsForContexts().get(context);
@@ -225,11 +226,11 @@ void WKCACFLayerRenderer::createRenderer()
windowsForContexts().set(m_context.get(), this);
m_renderContext = static_cast<CARenderContext*>(CACFContextGetRenderContext(m_context.get()));
- m_renderer = CARenderOGLNew(&kCARenderDX9Callbacks, m_d3dDevice.get(), 0);
+ m_renderer = CARenderOGLNew(wkqcCARenderOGLCallbacks(wkqckCARenderDX9Callbacks), m_d3dDevice.get(), 0);
// Create the root hierarchy
- m_rootLayer = WKCACFLayer::create(kCACFLayer);
- m_scrollLayer = WKCACFLayer::create(kCACFLayer);
+ m_rootLayer = WKCACFLayer::create(WKCACFLayer::Layer);
+ m_scrollLayer = WKCACFLayer::create(WKCACFLayer::Layer);
m_rootLayer->addSublayer(m_scrollLayer);
m_scrollLayer->setMasksToBounds(true);
diff --git a/WebKit/win/ChangeLog b/WebKit/win/ChangeLog
index 95705a9..6904aa8 100644
--- a/WebKit/win/ChangeLog
+++ b/WebKit/win/ChangeLog
@@ -1,3 +1,17 @@
+2009-12-11 Chris Marrin <cmarrin at apple.com>
+
+ Reviewed by Adam Roben.
+
+ Delay load DLLs for accelerated compositing
+ https://bugs.webkit.org/show_bug.cgi?id=31856
+
+ If the DLLs (d3d9 and QuartzCore). are not present it
+ turns off accelerated compositing and avoids calling
+ any of the functions in the DLLs.
+
+ * WebView.cpp:
+ (WebView::notifyPreferencesChanged):
+
2009-12-10 Jon Honeycutt <jhoneycutt at apple.com>
Pass more information about a plug-in to the PluginHalterDelegate
diff --git a/WebKit/win/WebView.cpp b/WebKit/win/WebView.cpp
index d98d390..07f8295 100644
--- a/WebKit/win/WebView.cpp
+++ b/WebKit/win/WebView.cpp
@@ -4504,6 +4504,10 @@ HRESULT WebView::notifyPreferencesChanged(IWebNotification* notification)
return hr;
settings->setPluginAllowedRunTime(runTime);
+#if USE(ACCELERATED_COMPOSITING)
+ settings->setAcceleratedCompositingEnabled(WKCACFLayerRenderer::acceleratedCompositingAvailable());
+#endif
+
#if ENABLE(3D_CANVAS)
settings->setExperimentalWebGLEnabled(true);
#endif // ENABLE(3D_CANVAS)
diff --git a/WebKitLibraries/ChangeLog b/WebKitLibraries/ChangeLog
index a0f1cef..dce8322 100644
--- a/WebKitLibraries/ChangeLog
+++ b/WebKitLibraries/ChangeLog
@@ -1,3 +1,19 @@
+2009-12-11 Chris Marrin <cmarrin at apple.com>
+
+ Reviewed by Adam Roben.
+
+ Add QuartzCore build files to OpenSource tree
+ https://bugs.webkit.org/show_bug.cgi?id=31856
+
+ This allows proper building and linking with QuartzCore
+ when present.
+
+ * win/bin: Added.
+ * win/bin/QuartzCoreInterface.dll: Added.
+ * win/include/QuartzCoreInterface: Added.
+ * win/include/QuartzCoreInterface/QuartzCoreInterface.h: Added.
+ * win/lib/QuartzCoreInterface.lib: Added.
+
2009-12-07 Adam Roben <aroben at apple.com>
Windows build fix for checkouts with a space in the path
diff --git a/WebKitLibraries/win/bin/QuartzCoreInterface.dll b/WebKitLibraries/win/bin/QuartzCoreInterface.dll
new file mode 100755
index 0000000..0b64349
Binary files /dev/null and b/WebKitLibraries/win/bin/QuartzCoreInterface.dll differ
diff --git a/WebKitLibraries/win/include/QuartzCoreInterface/QuartzCoreInterface.h b/WebKitLibraries/win/include/QuartzCoreInterface/QuartzCoreInterface.h
new file mode 100644
index 0000000..b3cef10
--- /dev/null
+++ b/WebKitLibraries/win/include/QuartzCoreInterface/QuartzCoreInterface.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2009 Apple Inc. All rights reserved.
+ */
+
+#ifndef QuartzCoreInterface_h
+#define QuartzCoreInterface_h
+
+#ifdef QUARTZCOREINTERFACE_EXPORTS
+#define QUARTZCOREINTERFACE_API __declspec(dllexport)
+#else
+#define QUARTZCOREINTERFACE_API __declspec(dllimport)
+#endif
+
+// Interface to give access to QuartzCore data symbols.
+enum WKQCStringRefType { wkqckCACFLayer, wkqckCACFTransformLayer, wkqckCACFFilterLinear, wkqckCACFFilterNearest,
+ wkqckCACFFilterTrilinear, wkqckCACFFilterLanczos, wkqckCACFGravityCenter, wkqckCACFGravityTop,
+ wkqckCACFGravityBottom, wkqckCACFGravityLeft, wkqckCACFGravityRight, wkqckCACFGravityTopLeft,
+ wkqckCACFGravityTopRight, wkqckCACFGravityBottomLeft, wkqckCACFGravityBottomRight,
+ wkqckCACFGravityResize, wkqckCACFGravityResizeAspect, wkqckCACFGravityResizeAspectFill };
+
+enum WKQCCARenderOGLCallbacksType { wkqckCARenderDX9Callbacks };
+
+typedef const struct __CFString * CFStringRef;
+typedef struct _CARenderOGLCallbacks CARenderOGLCallbacks;
+typedef struct CATransform3D CATransform3D;
+
+extern "C" {
+QUARTZCOREINTERFACE_API CFStringRef wkqcCFStringRef(WKQCStringRefType);
+QUARTZCOREINTERFACE_API const CARenderOGLCallbacks* wkqcCARenderOGLCallbacks(WKQCCARenderOGLCallbacksType);
+QUARTZCOREINTERFACE_API const CATransform3D& wkqcCATransform3DIdentity();
+}
+
+#endif // QuartzCoreInterface_h
diff --git a/WebKitLibraries/win/lib/QuartzCoreInterface.lib b/WebKitLibraries/win/lib/QuartzCoreInterface.lib
new file mode 100755
index 0000000..0a556d3
Binary files /dev/null and b/WebKitLibraries/win/lib/QuartzCoreInterface.lib differ
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list