⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 100060 in webkit


Ignore:
Timestamp:
Nov 11, 2011, 6:56:27 PM (15 years ago)
Author:
jamesr@google.com
Message:

Rollout http://trac.webkit.org/changeset/99844
Solution is more complicated than the problem it was intended to solve.

Source/WebCore:

  • platform/graphics/chromium/LayerChromium.cpp:
  • platform/graphics/chromium/LayerChromium.h:
  • platform/graphics/chromium/cc/CCLayerImpl.cpp:
  • platform/graphics/chromium/cc/CCLayerImpl.h:
  • platform/graphics/chromium/cc/CCLayerTreeHost.cpp:

(WebCore::CCLayerTreeHost::applyScrollAndScale):

  • platform/graphics/chromium/cc/CCLayerTreeHost.h:
  • platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp:
  • platform/graphics/chromium/cc/CCLayerTreeHostCommon.h:
  • platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:

(WebCore::CCLayerTreeHostImpl::processScrollDeltas):

  • platform/graphics/chromium/cc/CCThreadProxy.cpp:

(WebCore::CCThreadProxy::beginFrameAndCommit):
(WebCore::CCThreadProxy::beginFrameCompleteOnImplThread):

  • platform/graphics/chromium/cc/CCThreadProxy.h:

Source/WebKit/chromium:

  • tests/CCLayerTreeHostImplTest.cpp:

(WebKit::TEST_F):

Location:
trunk/Source
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r100059 r100060  
     12011-11-11  James Robinson  <jamesr@chromium.org>
     2
     3        Rollout http://trac.webkit.org/changeset/99844
     4        Solution is more complicated than the problem it was intended to solve.
     5
     6        * platform/graphics/chromium/LayerChromium.cpp:
     7        * platform/graphics/chromium/LayerChromium.h:
     8        * platform/graphics/chromium/cc/CCLayerImpl.cpp:
     9        * platform/graphics/chromium/cc/CCLayerImpl.h:
     10        * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
     11        (WebCore::CCLayerTreeHost::applyScrollAndScale):
     12        * platform/graphics/chromium/cc/CCLayerTreeHost.h:
     13        * platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp:
     14        * platform/graphics/chromium/cc/CCLayerTreeHostCommon.h:
     15        * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
     16        (WebCore::CCLayerTreeHostImpl::processScrollDeltas):
     17        * platform/graphics/chromium/cc/CCThreadProxy.cpp:
     18        (WebCore::CCThreadProxy::beginFrameAndCommit):
     19        (WebCore::CCThreadProxy::beginFrameCompleteOnImplThread):
     20        * platform/graphics/chromium/cc/CCThreadProxy.h:
     21
    1222011-11-11  Levi Weintraub  <leviw@chromium.org>
    223
  • trunk/Source/WebCore/platform/graphics/chromium/LayerChromium.cpp

    r99844 r100060  
    105105}
    106106
    107 void LayerChromium::applyScrollAndScale(const IntSize& scrollDelta, float pageScale)
    108 {
    109     // FIXME: apply scroll delta not just to CCLayerTreeHostClient.
    110     if (!layerTreeHost() || !layerTreeHost()->client())
    111         return;
    112 
    113     layerTreeHost()->client()->applyScrollAndScale(scrollDelta, pageScale);
    114 }
    115 
    116107void LayerChromium::setLayerTreeHost(CCLayerTreeHost* host)
    117108{
  • trunk/Source/WebCore/platform/graphics/chromium/LayerChromium.h

    r99844 r100060  
    136136
    137137    IntSize scrollDelta() const { return IntSize(); }
    138     void applyScrollAndScale(const IntSize& scrollDelta, float pageScale);
    139138
    140139    bool doubleSided() const { return m_doubleSided; }
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp

    r99844 r100060  
    396396}
    397397
    398 void CCLayerImpl::applyScrollAndScale(const IntSize& scrollDelta, float pageScale)
    399 {
    400     m_scrollDelta -= scrollDelta;
    401 }
    402 
    403398void CCLayerImpl::setDoubleSided(bool doubleSided)
    404399{
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h

    r99844 r100060  
    163163    void setScrollable(bool scrollable) { m_scrollable = scrollable; }
    164164
    165     void applyScrollAndScale(const IntSize& scrollDelta, float pageScale);
    166 
    167165    const IntRect& visibleLayerRect() const { return m_visibleLayerRect; }
    168166    void setVisibleLayerRect(const IntRect& visibleLayerRect) { m_visibleLayerRect = visibleLayerRect; }
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp

    r99844 r100060  
    462462}
    463463
     464void CCLayerTreeHost::applyScrollAndScale(const CCScrollAndScaleSet& info)
     465{
     466    // FIXME: pushing scroll offsets to non-root layers not implemented
     467    if (!info.scrolls.size())
     468        return;
     469
     470    ASSERT(info.scrolls.size() == 1);
     471    IntSize scrollDelta = info.scrolls[0].scrollDelta;
     472    m_client->applyScrollAndScale(scrollDelta, info.pageScale);
     473}
     474
    464475void CCLayerTreeHost::startRateLimiter(GraphicsContext3D* context)
    465476{
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h

    r99844 r100060  
    175175
    176176    void updateCompositorResources(GraphicsContext3D*, CCTextureUpdater&);
     177    void applyScrollAndScale(const CCScrollAndScaleSet&);
    177178    void startRateLimiter(GraphicsContext3D*);
    178179    void stopRateLimiter(GraphicsContext3D*);
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp

    r99844 r100060  
    434434}
    435435
    436 template<typename LayerType>
    437 static void applyScrollAndScaleInternal(LayerType* rootLayer, const CCScrollAndScaleSet& scrollInfo)
    438 {
    439     if (!rootLayer || !scrollInfo.scrolls.size())
    440         return;
    441 
    442     // FIXME: apply scroll deltas from layer other than the root.
    443     ASSERT(scrollInfo.scrolls.size() == 1 && scrollInfo.scrolls[0].layerId == rootLayer->id());
    444     rootLayer->applyScrollAndScale(scrollInfo.scrolls[0].scrollDelta, scrollInfo.pageScale);
    445 }
    446 
    447436void CCLayerTreeHostCommon::calculateDrawTransformsAndVisibility(LayerChromium* layer, LayerChromium* rootLayer, const TransformationMatrix& parentMatrix, const TransformationMatrix& fullHierarchyMatrix, Vector<RefPtr<LayerChromium> >& renderSurfaceLayerList, Vector<RefPtr<LayerChromium> >& layerList, int maxTextureSize)
    448437{
     
    455444}
    456445
    457 void CCLayerTreeHostCommon::applyScrollAndScale(LayerChromium* rootLayer, const CCScrollAndScaleSet& scrollInfo)
    458 {
    459     applyScrollAndScaleInternal(rootLayer, scrollInfo);
    460 }
    461 
    462 void CCLayerTreeHostCommon::applyScrollAndScale(CCLayerImpl* rootLayer, const CCScrollAndScaleSet& scrollInfo)
    463 {
    464     applyScrollAndScaleInternal(rootLayer, scrollInfo);
    465 }
    466 
    467446} // namespace WebCore
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.h

    r99844 r100060  
    5050        IntSize scrollDelta;
    5151    };
    52     struct ScrollAndScaleSet {
    53         Vector<ScrollUpdateInfo> scrolls;
    54         float pageScale;
    55     };
    56 
    57     static void applyScrollAndScale(LayerChromium* rootLayer, const ScrollAndScaleSet& scrollInfo);
    58     static void applyScrollAndScale(CCLayerImpl* rootLayer, const ScrollAndScaleSet& scrollInfo);
    5952};
    6053
    61 typedef CCLayerTreeHostCommon::ScrollAndScaleSet CCScrollAndScaleSet;
     54struct CCScrollAndScaleSet {
     55    Vector<CCLayerTreeHostCommon::ScrollUpdateInfo> scrolls;
     56    float pageScale;
     57};
    6258
    6359template<typename LayerType>
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp

    r99844 r100060  
    339339    scrollInfo->scrolls.append(scroll);
    340340
     341    m_scrollLayerImpl->setScrollPosition(m_scrollLayerImpl->scrollPosition() + m_scrollLayerImpl->scrollDelta());
     342    m_scrollLayerImpl->setPosition(m_scrollLayerImpl->position() - m_scrollLayerImpl->scrollDelta());
     343    m_scrollLayerImpl->setScrollDelta(IntSize());
     344
    341345    return scrollInfo.release();
    342346}
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp

    r100055 r100060  
    3333#include "cc/CCInputHandler.h"
    3434#include "cc/CCLayerTreeHost.h"
    35 #include "cc/CCLayerTreeHostCommon.h"
    3635#include "cc/CCMainThreadTask.h"
    3736#include "cc/CCScheduler.h"
     
    356355
    357356    // Scroll deltas need to be applied even if the commit will be dropped.
    358     CCLayerTreeHostCommon::applyScrollAndScale(m_layerTreeHost->rootLayer(), *scrollInfo);
     357    m_layerTreeHost->applyScrollAndScale(*scrollInfo.get());
    359358
    360359    // Drop beginFrameAndCommit calls that occur out of sequence. See createBeginFrameAndCommitTaskOnImplThread for
     
    388387        TRACE_EVENT("commit", this, 0);
    389388        CCCompletionEvent completion;
    390         s_ccThread->postTask(createCCThreadTask(this, &CCThreadProxy::beginFrameCompleteOnImplThread, AllowCrossThreadAccess(&completion), scrollInfo));
     389        s_ccThread->postTask(createCCThreadTask(this, &CCThreadProxy::beginFrameCompleteOnImplThread, AllowCrossThreadAccess(&completion)));
    391390        completion.wait();
    392391    }
     
    397396}
    398397
    399 void CCThreadProxy::beginFrameCompleteOnImplThread(CCCompletionEvent* completion, PassOwnPtr<CCScrollAndScaleSet> scrollInfo)
     398void CCThreadProxy::beginFrameCompleteOnImplThread(CCCompletionEvent* completion)
    400399{
    401400    TRACE_EVENT("CCThreadProxy::beginFrameCompleteOnImplThread", this, 0);
     
    414413    m_currentTextureUpdaterOnImplThread = adoptPtr(new CCTextureUpdater(m_layerTreeHostImpl->contentsTextureAllocator()));
    415414    m_layerTreeHost->updateCompositorResources(m_layerTreeHostImpl->context(), *m_currentTextureUpdaterOnImplThread);
    416     CCLayerTreeHostCommon::applyScrollAndScale(m_layerTreeHostImpl->scrollLayer(), *scrollInfo);
    417415
    418416    m_schedulerOnImplThread->beginFrameComplete();
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h

    r100055 r100060  
    9494    PassOwnPtr<CCMainThread::Task> createBeginFrameAndCommitTaskOnImplThread();
    9595    void obtainBeginFrameAndCommitTaskFromCCThread(CCCompletionEvent*, CCMainThread::Task**);
    96     void beginFrameCompleteOnImplThread(CCCompletionEvent*, PassOwnPtr<CCScrollAndScaleSet>);
     96    void beginFrameCompleteOnImplThread(CCCompletionEvent*);
    9797    void requestReadbackOnImplThread(ReadbackRequest*);
    9898    void finishAllRenderingOnImplThread(CCCompletionEvent*);
  • trunk/Source/WebKit/chromium/ChangeLog

    r100054 r100060  
     12011-11-11  James Robinson  <jamesr@chromium.org>
     2
     3        Rollout http://trac.webkit.org/changeset/99844
     4        Solution is more complicated than the problem it was intended to solve.
     5
     6        * tests/CCLayerTreeHostImplTest.cpp:
     7        (WebKit::TEST_F):
     8
    192011-11-11  Iain Merrick  <husky@google.com>
    210
  • trunk/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp

    r99865 r100060  
    3131#include "MockWebGraphicsContext3D.h"
    3232#include "cc/CCLayerImpl.h"
    33 #include "cc/CCLayerTreeHostCommon.h"
    3433#include "cc/CCSingleThreadProxy.h"
    3534#include <gtest/gtest.h>
     
    127126
    128127    scrollInfo = m_hostImpl->processScrollDeltas();
    129     ASSERT_EQ(root->scrollPosition(), scrollPosition);
     128    ASSERT_EQ(root->scrollPosition(), scrollPosition + scrollDelta);
    130129    ASSERT_EQ(scrollInfo->scrolls.size(), 1u);
    131130    expectContains(*scrollInfo.get(), root->id(), scrollDelta);
     131    expectClearedScrollDeltasRecursive(root.get());
    132132
    133133    IntSize scrollDelta2(-5, 27);
    134134    root->scrollBy(scrollDelta2);
    135135    scrollInfo = m_hostImpl->processScrollDeltas();
    136     ASSERT_EQ(root->scrollPosition(), scrollPosition);
     136    ASSERT_EQ(root->scrollPosition(), scrollPosition + scrollDelta + scrollDelta2);
    137137    ASSERT_EQ(scrollInfo->scrolls.size(), 1u);
    138     expectContains(*scrollInfo, root->id(), scrollDelta + scrollDelta2);
    139     EXPECT_EQ(root->scrollDelta(), scrollDelta + scrollDelta2);
    140 
    141     CCLayerTreeHostCommon::applyScrollAndScale(m_hostImpl->rootLayer(), *scrollInfo);
     138    expectContains(*scrollInfo.get(), root->id(), scrollDelta2);
     139    expectClearedScrollDeltasRecursive(root.get());
     140
    142141    root->scrollBy(IntSize());
    143142    scrollInfo = m_hostImpl->processScrollDeltas();
    144     ASSERT_EQ(root->scrollPosition(), scrollPosition);
     143    ASSERT_EQ(root->scrollPosition(), scrollPosition + scrollDelta + scrollDelta2);
    145144    ASSERT_EQ(scrollInfo->scrolls.size(), 0u);
    146145    expectClearedScrollDeltasRecursive(root.get());
Note: See TracChangeset for help on using the changeset viewer.