Changeset 60350 in webkit


Ignore:
Timestamp:
May 28, 2010 6:28:07 AM (14 years ago)
Author:
antti.j.koivisto@nokia.com
Message:

https://bugs.webkit.org/show_bug.cgi?id=39874
[Qt] Make tiled backing store more configurable

Reviewed by Kenneth Rohde Christiansen.

Make tile size, tile creation delay and tiling area dynamically configurable.

WebCore:

  • platform/graphics/TiledBackingStore.cpp:

(WebCore::TiledBackingStore::TiledBackingStore):
(WebCore::TiledBackingStore::setTileSize):
(WebCore::TiledBackingStore::setTileCreationDelay):
(WebCore::TiledBackingStore::setKeepAndCoverAreaMultipliers):
(WebCore::TiledBackingStore::createTiles):

  • platform/graphics/TiledBackingStore.h:

(WebCore::TiledBackingStore::tileSize):
(WebCore::TiledBackingStore::tileCreationDelay):
(WebCore::TiledBackingStore::getKeepAndCoverAreaMultipliers):

WebKit/qt:

  • Api/qwebpage.cpp:

(QWebPagePrivate::dynamicPropertyChangeEvent):

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r60347 r60350  
     12010-05-28  Antti Koivisto  <koivisto@iki.fi>
     2
     3        Reviewed by Kenneth Rohde Christiansen.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=39874
     6        [Qt] Make tiled backing store more configurable
     7   
     8        Make tile size, tile creation delay and tiling area dynamically configurable.
     9
     10        * platform/graphics/TiledBackingStore.cpp:
     11        (WebCore::TiledBackingStore::TiledBackingStore):
     12        (WebCore::TiledBackingStore::setTileSize):
     13        (WebCore::TiledBackingStore::setTileCreationDelay):
     14        (WebCore::TiledBackingStore::setKeepAndCoverAreaMultipliers):
     15        (WebCore::TiledBackingStore::createTiles):
     16        * platform/graphics/TiledBackingStore.h:
     17        (WebCore::TiledBackingStore::tileSize):
     18        (WebCore::TiledBackingStore::tileCreationDelay):
     19        (WebCore::TiledBackingStore::getKeepAndCoverAreaMultipliers):
     20
    1212010-05-28  Eric Seidel  <eric@webkit.org>
    222
  • trunk/WebCore/platform/graphics/TiledBackingStore.cpp

    r59611 r60350  
    3636    , m_tileCreationTimer(new TileTimer(this, &TiledBackingStore::tileCreationTimerFired))
    3737    , m_tileSize(defaultTileWidth, defaultTileHeight)
     38    , m_tileCreationDelay(0.01)
     39    , m_keepAreaMultiplier(2.f, 3.5f)
     40    , m_coverAreaMultiplier(1.5f, 2.5f)
    3841    , m_contentsScale(1.f)
    3942    , m_pendingScale(0)
     
    4649    delete m_tileBufferUpdateTimer;
    4750    delete m_tileCreationTimer;
     51}
     52   
     53void TiledBackingStore::setTileSize(const IntSize& size)
     54{
     55    m_tileSize = size;
     56    m_tiles.clear();
     57    startTileCreationTimer();
     58}
     59
     60void TiledBackingStore::setTileCreationDelay(double delay)
     61{
     62    m_tileCreationDelay = delay;
     63}
     64
     65void TiledBackingStore::setKeepAndCoverAreaMultipliers(const FloatSize& keepMultiplier, const FloatSize& coverMultiplier)
     66{
     67    m_keepAreaMultiplier = keepMultiplier;
     68    m_coverAreaMultiplier = coverMultiplier;
     69    startTileCreationTimer();
    4870}
    4971
     
    189211    dropOverhangingTiles();
    190212
    191     // FIXME: Make configurable/adapt to memory.
    192213    IntRect keepRect = visibleRect;
    193     keepRect.inflateX(visibleRect.width());
    194     keepRect.inflateY(3 * visibleRect.height());
     214    keepRect.inflateX(visibleRect.width() * (m_keepAreaMultiplier.width() - 1.f));
     215    keepRect.inflateY(visibleRect.height() * (m_keepAreaMultiplier.height() - 1.f));
    195216    keepRect.intersect(contentsRect());
    196217   
     
    198219   
    199220    IntRect coverRect = visibleRect;
    200     coverRect.inflateX(visibleRect.width() / 2);
    201     coverRect.inflateY(2 * visibleRect.height());
     221    coverRect.inflateX(visibleRect.width() * (m_coverAreaMultiplier.width() - 1.f));
     222    coverRect.inflateY(visibleRect.height() * (m_coverAreaMultiplier.height() - 1.f));
    202223    coverRect.intersect(contentsRect());
    203224   
     
    241262    // Keep creating tiles until the whole coverRect is covered.
    242263    if (requiredTileCount)
    243         m_tileCreationTimer->startOneShot(0);
     264        m_tileCreationTimer->startOneShot(m_tileCreationDelay);
    244265}
    245266
  • trunk/WebCore/platform/graphics/TiledBackingStore.h

    r59611 r60350  
    5252    void invalidate(const IntRect& dirtyRect);
    5353    void paint(GraphicsContext*, const IntRect&);
     54   
     55    IntSize tileSize() { return m_tileSize; }
     56    void setTileSize(const IntSize&);
     57   
     58    double tileCreationDelay() const { return m_tileCreationDelay; }
     59    void setTileCreationDelay(double delay);
     60   
     61    // Tiled are dropped outside the keep area, and created for cover area. The values a relative to the viewport size.
     62    void getKeepAndCoverAreaMultipliers(FloatSize& keepMultiplier, FloatSize& coverMultiplier)
     63    {
     64        keepMultiplier = m_keepAreaMultiplier;
     65        coverMultiplier = m_coverAreaMultiplier;
     66    }
     67    void setKeepAndCoverAreaMultipliers(const FloatSize& keepMultiplier, const FloatSize& coverMultiplier);   
    5468
    5569private:
     
    95109
    96110    IntSize m_tileSize;
     111    double m_tileCreationDelay;
     112    FloatSize m_keepAreaMultiplier;
     113    FloatSize m_coverAreaMultiplier;
    97114   
    98115    IntRect m_previousVisibleRect;
  • trunk/WebKit/qt/Api/qwebpage.cpp

    r60348 r60350  
    12211221        double timeDelay = q->property("_q_HTMLTokenizerTimeDelay").toDouble();
    12221222        q->handle()->page->setCustomHTMLTokenizerTimeDelay(timeDelay);
     1223    } else if (event->propertyName() == "_q_TiledBackingStoreTileSize") {
     1224        QSize tileSize = q->property("_q_TiledBackingStoreTileSize").toSize();
     1225        WebCore::Frame* frame = QWebFramePrivate::core(q->mainFrame());
     1226        frame->tiledBackingStore()->setTileSize(tileSize);
     1227    } else if (event->propertyName() == "_q_TiledBackingStoreTileCreationDelay") {
     1228        int tileCreationDelay = q->property("_q_TiledBackingStoreTileCreationDelay").toInt();
     1229        WebCore::Frame* frame = QWebFramePrivate::core(q->mainFrame());
     1230        frame->tiledBackingStore()->setTileCreationDelay(static_cast<double>(tileCreationDelay) / 1000.);
     1231    } else if (event->propertyName() == "_q_TiledBackingStoreKeepAreaMultiplier") {
     1232        FloatSize keepMultiplier;
     1233        FloatSize coverMultiplier;
     1234        WebCore::Frame* frame = QWebFramePrivate::core(q->mainFrame());
     1235        frame->tiledBackingStore()->getKeepAndCoverAreaMultipliers(keepMultiplier, coverMultiplier);
     1236        QSizeF qSize = q->property("_q_TiledBackingStoreKeepAreaMultiplier").toSizeF();
     1237        keepMultiplier = FloatSize(qSize.width(), qSize.height());
     1238        frame->tiledBackingStore()->setKeepAndCoverAreaMultipliers(keepMultiplier, coverMultiplier);
     1239    } else if (event->propertyName() == "_q_TiledBackingStoreCoverAreaMultiplier") {
     1240        FloatSize keepMultiplier;
     1241        FloatSize coverMultiplier;
     1242        WebCore::Frame* frame = QWebFramePrivate::core(q->mainFrame());
     1243        frame->tiledBackingStore()->getKeepAndCoverAreaMultipliers(keepMultiplier, coverMultiplier);
     1244        QSizeF qSize = q->property("_q_TiledBackingStoreCoverAreaMultiplier").toSizeF();
     1245        coverMultiplier = FloatSize(qSize.width(), qSize.height());
     1246        frame->tiledBackingStore()->setKeepAndCoverAreaMultipliers(keepMultiplier, coverMultiplier);
    12231247    }
    12241248}
  • trunk/WebKit/qt/ChangeLog

    r60349 r60350  
     12010-05-28  Antti Koivisto  <koivisto@iki.fi>
     2
     3        Reviewed by Kenneth Rohde Christiansen.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=39874
     6        [Qt] Make tiled backing store more configurable
     7   
     8        Make tile size, tile creation delay and tiling area dynamically configurable.
     9
     10        * Api/qwebpage.cpp:
     11        (QWebPagePrivate::dynamicPropertyChangeEvent):
     12
    1132010-05-28  Yael Aharon  <yael.aharon@nokia.com>
    214
Note: See TracChangeset for help on using the changeset viewer.