2011-01-18 Anders Carlsson <andersca@apple.com>
authorandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 18 Jan 2011 23:40:46 +0000 (23:40 +0000)
committerandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 18 Jan 2011 23:40:46 +0000 (23:40 +0000)
        Reviewed by Dan Bernstein.

        Pass the web page proxy to BackingStore::create
        https://bugs.webkit.org/show_bug.cgi?id=52673

        * UIProcess/BackingStore.cpp:
        (WebKit::BackingStore::create):
        Add WebPageProxy parameter.

        (WebKit::BackingStore::BackingStore):
        Add WebPageProxy parameter.

        * UIProcess/BackingStore.h:
        Add WebPageProxy member variable.

        * UIProcess/DrawingAreaProxyImpl.cpp:
        (WebKit::DrawingAreaProxyImpl::incorporateUpdate):
        Pass the web page proxy when creating the backing store.

        * UIProcess/mac/BackingStoreMac.mm:
        (WebKit::BackingStore::backingStoreContext):
        Set the default blend mode.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@76077 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/BackingStore.cpp
Source/WebKit2/UIProcess/BackingStore.h
Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp
Source/WebKit2/UIProcess/mac/BackingStoreMac.mm

index 3d3bd87733398738e1091c959d6525523988af45..4ba5f2a611f233691c427844a5d5747f33ee9f2b 100644 (file)
@@ -1,3 +1,28 @@
+2011-01-18  Anders Carlsson  <andersca@apple.com>
+
+        Reviewed by Dan Bernstein.
+
+        Pass the web page proxy to BackingStore::create
+        https://bugs.webkit.org/show_bug.cgi?id=52673
+
+        * UIProcess/BackingStore.cpp:
+        (WebKit::BackingStore::create):
+        Add WebPageProxy parameter.
+    
+        (WebKit::BackingStore::BackingStore):
+        Add WebPageProxy parameter.
+
+        * UIProcess/BackingStore.h:
+        Add WebPageProxy member variable.
+
+        * UIProcess/DrawingAreaProxyImpl.cpp:
+        (WebKit::DrawingAreaProxyImpl::incorporateUpdate):
+        Pass the web page proxy when creating the backing store.
+
+        * UIProcess/mac/BackingStoreMac.mm:
+        (WebKit::BackingStore::backingStoreContext):
+        Set the default blend mode.
+
 2011-01-18  Anders Carlsson  <andersca@apple.com>
 
         Reviewed by Darin Adler.
index 06d66aff0ac6acdbc859c02c50425d12b4732453..765af0a2229bccb4480f83f8690fe4c505bffd08 100644 (file)
@@ -33,13 +33,14 @@ using namespace WebCore;
 
 namespace WebKit {
 
-PassOwnPtr<BackingStore> BackingStore::create(const IntSize& size)
+PassOwnPtr<BackingStore> BackingStore::create(const IntSize& size, WebPageProxy* webPageProxy)
 {
-    return adoptPtr(new BackingStore(size));
+    return adoptPtr(new BackingStore(size, webPageProxy));
 }
 
-BackingStore::BackingStore(const IntSize& size)
+BackingStore::BackingStore(const IntSize& size, WebPageProxy* webPageProxy)
     : m_size(size)
+    , m_webPageProxy(webPageProxy)
 {
     ASSERT(!m_size.isEmpty());
 }
index de9152ade5893ca42d891d31716aa0d852cb714e..e4ee2a116febf7be2acc926b6349b1df71519f5d 100644 (file)
@@ -47,7 +47,7 @@ class BackingStore {
     WTF_MAKE_NONCOPYABLE(BackingStore);
 
 public:
-    static PassOwnPtr<BackingStore> create(const WebCore::IntSize&);
+    static PassOwnPtr<BackingStore> create(const WebCore::IntSize&, WebPageProxy*);
     ~BackingStore();
 
 #if PLATFORM(MAC)
@@ -58,15 +58,17 @@ public:
     void incorporateUpdate(const UpdateInfo&);
 
 private:
-    explicit BackingStore(const WebCore::IntSize&);
+    BackingStore(const WebCore::IntSize&, WebPageProxy*);
 
     void scroll(const WebCore::IntRect& scrollRect, const WebCore::IntSize& scrollOffset);
 
     WebCore::IntSize m_size;
+    WebPageProxy* m_webPageProxy;
 
 #if PLATFORM(MAC)
     CGContextRef backingStoreContext();
 
+    RetainPtr<CGLayerRef> m_cgLayer;
     RetainPtr<CGContextRef> m_bitmapContext;
 #endif
 };
index d6c287e5efdfc3148676cbea49d542d9dcf5d71f..d34bc0e0463f3ca73e1a0170e3bf565d7863440f 100644 (file)
@@ -113,7 +113,7 @@ void DrawingAreaProxyImpl::incorporateUpdate(const UpdateInfo& updateInfo)
     // FIXME: Check for the update bounds being empty here.
 
     if (!m_backingStore)
-        m_backingStore = BackingStore::create(updateInfo.viewSize);
+        m_backingStore = BackingStore::create(updateInfo.viewSize, m_webPageProxy);
 
     m_backingStore->incorporateUpdate(updateInfo);
 
index db06e79411e71ef1ea6925c1eb396cbfea5bb90b..ffaefd7702594c7a37f6715596b1afcd85e10002 100644 (file)
@@ -47,7 +47,9 @@ CGContextRef BackingStore::backingStoreContext()
         RetainPtr<CGColorSpaceRef> colorSpace(AdoptCF, CGColorSpaceCreateDeviceRGB());
         
         m_bitmapContext.adoptCF(CGBitmapContextCreate(0, m_size.width(), m_size.height(), 8, m_size.width() * 4, colorSpace.get(), kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host));
-        
+
+        CGContextSetBlendMode(m_bitmapContext.get(), kCGBlendModeCopy);
+
         // We want the origin to be in the top left corner so flip the backing store context.
         CGContextTranslateCTM(m_bitmapContext.get(), 0, m_size.height());
         CGContextScaleCTM(m_bitmapContext.get(), 1, -1);