Changeset 116733 in webkit


Ignore:
Timestamp:
May 11, 2012 12:00:46 AM (12 years ago)
Author:
commit-queue@webkit.org
Message:

Unreviewed, rolling out r116731.
http://trac.webkit.org/changeset/116731
https://bugs.webkit.org/show_bug.cgi?id=86178

Build failure on Chromium-mac (Requested by tkent on #webkit).

Patch by Sheriff Bot <webkit.review.bot@gmail.com> on 2012-05-11

Source/WebCore:

  • platform/graphics/chromium/LayerRendererChromium.cpp:

(WebCore::LayerRendererChromium::create):
(WebCore::LayerRendererChromium::LayerRendererChromium):
(WebCore::LayerRendererChromium::initializeSharedObjects):

  • platform/graphics/chromium/LayerRendererChromium.h:

(LayerRendererChromium):

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

(WebCore::CCLayerTreeHostImpl::initializeLayerRenderer):

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

(CCLayerTreeHostImpl):

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

(UnthrottledTextureUploader):
(WebCore::UnthrottledTextureUploader::create):
(WebCore::UnthrottledTextureUploader::~UnthrottledTextureUploader):
(WebCore::UnthrottledTextureUploader::isBusy):
(WebCore::UnthrottledTextureUploader::beginUploads):
(WebCore::UnthrottledTextureUploader::endUploads):
(WebCore::UnthrottledTextureUploader::uploadTexture):
(WebCore::UnthrottledTextureUploader::UnthrottledTextureUploader):
(WebCore):
(WebCore::CCSingleThreadProxy::initializeLayerRenderer):
(WebCore::CCSingleThreadProxy::recreateContext):

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

(WebCore):
(UnthrottledTextureUploader):
(WebCore::UnthrottledTextureUploader::create):
(WebCore::UnthrottledTextureUploader::~UnthrottledTextureUploader):
(WebCore::UnthrottledTextureUploader::isBusy):
(WebCore::UnthrottledTextureUploader::beginUploads):
(WebCore::UnthrottledTextureUploader::endUploads):
(WebCore::UnthrottledTextureUploader::uploadTexture):
(WebCore::UnthrottledTextureUploader::UnthrottledTextureUploader):
(WebCore::CCThreadProxy::initializeLayerRendererOnImplThread):
(WebCore::CCThreadProxy::recreateContextOnImplThread):

Source/WebKit/chromium:

  • tests/CCLayerTreeHostImplTest.cpp:

(WebKitTests::CCLayerTreeHostImplTest::CCLayerTreeHostImplTest):
(WebKitTests::TEST_F):

  • tests/LayerRendererChromiumTest.cpp:

(FakeLayerRendererChromium::FakeLayerRendererChromium):
(LayerRendererChromiumTest::LayerRendererChromiumTest):
(TEST):

Location:
trunk/Source
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r116731 r116733  
     12012-05-11  Sheriff Bot  <webkit.review.bot@gmail.com>
     2
     3        Unreviewed, rolling out r116731.
     4        http://trac.webkit.org/changeset/116731
     5        https://bugs.webkit.org/show_bug.cgi?id=86178
     6
     7        Build failure on Chromium-mac (Requested by tkent on #webkit).
     8
     9        * platform/graphics/chromium/LayerRendererChromium.cpp:
     10        (WebCore::LayerRendererChromium::create):
     11        (WebCore::LayerRendererChromium::LayerRendererChromium):
     12        (WebCore::LayerRendererChromium::initializeSharedObjects):
     13        * platform/graphics/chromium/LayerRendererChromium.h:
     14        (LayerRendererChromium):
     15        * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
     16        (WebCore::CCLayerTreeHostImpl::initializeLayerRenderer):
     17        * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:
     18        (CCLayerTreeHostImpl):
     19        * platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:
     20        (UnthrottledTextureUploader):
     21        (WebCore::UnthrottledTextureUploader::create):
     22        (WebCore::UnthrottledTextureUploader::~UnthrottledTextureUploader):
     23        (WebCore::UnthrottledTextureUploader::isBusy):
     24        (WebCore::UnthrottledTextureUploader::beginUploads):
     25        (WebCore::UnthrottledTextureUploader::endUploads):
     26        (WebCore::UnthrottledTextureUploader::uploadTexture):
     27        (WebCore::UnthrottledTextureUploader::UnthrottledTextureUploader):
     28        (WebCore):
     29        (WebCore::CCSingleThreadProxy::initializeLayerRenderer):
     30        (WebCore::CCSingleThreadProxy::recreateContext):
     31        * platform/graphics/chromium/cc/CCThreadProxy.cpp:
     32        (WebCore):
     33        (UnthrottledTextureUploader):
     34        (WebCore::UnthrottledTextureUploader::create):
     35        (WebCore::UnthrottledTextureUploader::~UnthrottledTextureUploader):
     36        (WebCore::UnthrottledTextureUploader::isBusy):
     37        (WebCore::UnthrottledTextureUploader::beginUploads):
     38        (WebCore::UnthrottledTextureUploader::endUploads):
     39        (WebCore::UnthrottledTextureUploader::uploadTexture):
     40        (WebCore::UnthrottledTextureUploader::UnthrottledTextureUploader):
     41        (WebCore::CCThreadProxy::initializeLayerRendererOnImplThread):
     42        (WebCore::CCThreadProxy::recreateContextOnImplThread):
     43
    1442012-05-10  David Reveman  <reveman@chromium.org>
    245
  • trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp

    r116731 r116733  
    144144}
    145145
    146 class UnthrottledTextureUploader : public TextureUploader {
    147     WTF_MAKE_NONCOPYABLE(UnthrottledTextureUploader);
    148 public:
    149     static PassOwnPtr<UnthrottledTextureUploader> create()
    150     {
    151         return adoptPtr(new UnthrottledTextureUploader());
    152     }
    153     virtual ~UnthrottledTextureUploader() { }
    154 
    155     virtual bool isBusy() { return false; }
    156     virtual void beginUploads() { }
    157     virtual void endUploads() { }
    158     virtual void uploadTexture(GraphicsContext3D* context, LayerTextureUpdater::Texture* texture, TextureAllocator* allocator, const IntRect sourceRect, const IntRect destRect) { texture->updateRect(context, allocator, sourceRect, destRect); }
    159 
    160 protected:
    161     UnthrottledTextureUploader() { }
    162 };
    163 
    164146} // anonymous namespace
    165147
     
    213195
    214196
    215 PassOwnPtr<LayerRendererChromium> LayerRendererChromium::create(LayerRendererChromiumClient* client, PassRefPtr<GraphicsContext3D> context, TextureUploaderOption textureUploaderSetting)
    216 {
    217     OwnPtr<LayerRendererChromium> layerRenderer(adoptPtr(new LayerRendererChromium(client, context, textureUploaderSetting)));
     197PassOwnPtr<LayerRendererChromium> LayerRendererChromium::create(LayerRendererChromiumClient* client, PassRefPtr<GraphicsContext3D> context, PassOwnPtr<TextureUploader> uploader)
     198{
     199    OwnPtr<LayerRendererChromium> layerRenderer(adoptPtr(new LayerRendererChromium(client, context, uploader)));
    218200    if (!layerRenderer->initialize())
    219201        return nullptr;
     
    224206LayerRendererChromium::LayerRendererChromium(LayerRendererChromiumClient* client,
    225207                                             PassRefPtr<GraphicsContext3D> context,
    226                                              TextureUploaderOption textureUploaderSetting)
     208                                             PassOwnPtr<TextureUploader> uploader)
    227209    : m_client(client)
    228210    , m_currentRenderSurface(0)
    229211    , m_currentManagedTexture(0)
    230212    , m_offscreenFramebufferId(0)
     213    , m_textureUploader(uploader)
    231214    , m_context(context)
    232215    , m_defaultRenderSurface(0)
     
    234217    , m_isViewportChanged(false)
    235218    , m_isFramebufferDiscarded(false)
    236     , m_textureUploaderSetting(m_textureUploaderSetting)
    237219{
    238220}
     
    14011383                                                           m_capabilities.maxTextureSize);
    14021384    m_textureCopier = AcceleratedTextureCopier::create(m_context.get());
    1403     if (m_textureUploaderSetting == ThrottledUploader)
    1404         m_textureUploader = ThrottledTextureUploader::create(m_context.get());
    1405     else
    1406         m_textureUploader = UnthrottledTextureUploader::create();
    14071385    m_contentsTextureAllocator = TrackingTextureAllocator::create(m_context.get());
    14081386    m_renderSurfaceTextureAllocator = TrackingTextureAllocator::create(m_context.get());
  • trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h

    r116731 r116733  
    7575};
    7676
    77 enum TextureUploaderOption { ThrottledUploader, UnthrottledUploader };
    78 
    7977// Class that handles drawing of composited render layers using GL.
    8078class LayerRendererChromium {
    8179    WTF_MAKE_NONCOPYABLE(LayerRendererChromium);
    8280public:
    83     static PassOwnPtr<LayerRendererChromium> create(LayerRendererChromiumClient*, PassRefPtr<GraphicsContext3D>, TextureUploaderOption);
     81    static PassOwnPtr<LayerRendererChromium> create(LayerRendererChromiumClient*, PassRefPtr<GraphicsContext3D>, PassOwnPtr<TextureUploader>);
    8482
    8583    ~LayerRendererChromium();
     
    147145    bool isFramebufferDiscarded() const { return m_isFramebufferDiscarded; }
    148146
    149     LayerRendererChromium(LayerRendererChromiumClient*, PassRefPtr<GraphicsContext3D>, TextureUploaderOption);
     147    LayerRendererChromium(LayerRendererChromiumClient*, PassRefPtr<GraphicsContext3D>, PassOwnPtr<TextureUploader>);
    150148    bool initialize();
    151149
     
    301299    bool m_isViewportChanged;
    302300    bool m_isFramebufferDiscarded;
    303     TextureUploaderOption m_textureUploaderSetting;
    304301};
    305302
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp

    r116731 r116733  
    527527}
    528528
    529 bool CCLayerTreeHostImpl::initializeLayerRenderer(PassRefPtr<GraphicsContext3D> context, TextureUploaderOption textureUploader)
     529bool CCLayerTreeHostImpl::initializeLayerRenderer(PassRefPtr<GraphicsContext3D> context, PassOwnPtr<TextureUploader> uploader)
    530530{
    531531    OwnPtr<LayerRendererChromium> layerRenderer;
    532     layerRenderer = LayerRendererChromium::create(this, context, textureUploader);
     532    layerRenderer = LayerRendererChromium::create(this, context, uploader);
    533533
    534534    // Since we now have a new context/layerRenderer, we cannot continue to use the old
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h

    r116731 r116733  
    123123    int frameNumber() const { return m_frameNumber; }
    124124
    125     bool initializeLayerRenderer(PassRefPtr<GraphicsContext3D>, TextureUploaderOption);
     125    bool initializeLayerRenderer(PassRefPtr<GraphicsContext3D>, PassOwnPtr<TextureUploader>);
    126126    bool isContextLost();
    127127    LayerRendererChromium* layerRenderer() { return m_layerRenderer.get(); }
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp

    r116731 r116733  
    3939namespace WebCore {
    4040
     41class UnthrottledTextureUploader : public TextureUploader {
     42    WTF_MAKE_NONCOPYABLE(UnthrottledTextureUploader);
     43public:
     44    static PassOwnPtr<UnthrottledTextureUploader> create()
     45    {
     46        return adoptPtr(new UnthrottledTextureUploader());
     47    }
     48    virtual ~UnthrottledTextureUploader() { }
     49
     50    virtual bool isBusy() { return false; }
     51    virtual void beginUploads() { }
     52    virtual void endUploads() { }
     53    virtual void uploadTexture(GraphicsContext3D* context, LayerTextureUpdater::Texture* texture, TextureAllocator* allocator, const IntRect sourceRect, const IntRect destRect) { texture->updateRect(context, allocator, sourceRect, destRect); }
     54
     55protected:
     56    UnthrottledTextureUploader() { }
     57};
     58
    4159PassOwnPtr<CCProxy> CCSingleThreadProxy::create(CCLayerTreeHost* layerTreeHost)
    4260{
     
    138156    {
    139157        DebugScopedSetImplThread impl;
    140         bool ok = m_layerTreeHostImpl->initializeLayerRenderer(m_contextBeforeInitialization.release(), UnthrottledUploader);
     158        bool ok = m_layerTreeHostImpl->initializeLayerRenderer(m_contextBeforeInitialization.release(), UnthrottledTextureUploader::create());
    141159        if (ok) {
    142160            m_layerRendererInitialized = true;
     
    162180        DebugScopedSetImplThread impl;
    163181        m_layerTreeHost->deleteContentsTexturesOnImplThread(m_layerTreeHostImpl->contentsTextureAllocator());
    164         initialized = m_layerTreeHostImpl->initializeLayerRenderer(context, UnthrottledUploader);
     182        initialized = m_layerTreeHostImpl->initializeLayerRenderer(context, UnthrottledTextureUploader::create());
    165183        if (initialized) {
    166184            m_layerRendererCapabilitiesForMainThread = m_layerTreeHostImpl->layerRendererCapabilities();
  • trunk/Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp

    r116731 r116733  
    5858namespace WebCore {
    5959
    60 namespace {
    61 
    62 // FIXME: Use ThrottledUploader by default.
    63 static TextureUploaderOption textureUploader = UnthrottledUploader;
    64 
    65 } // anonymous namespace
     60// FIXME: remove when ThrottledTextureUploader is ready to be used.
     61class UnthrottledTextureUploader : public TextureUploader {
     62    WTF_MAKE_NONCOPYABLE(UnthrottledTextureUploader);
     63public:
     64    static PassOwnPtr<UnthrottledTextureUploader> create(PassRefPtr<GraphicsContext3D> context)
     65    {
     66        return adoptPtr(new UnthrottledTextureUploader(context));
     67    }
     68    virtual ~UnthrottledTextureUploader() { }
     69
     70    virtual bool isBusy() { return false; }
     71    virtual void beginUploads() { }
     72    virtual void endUploads() { }
     73    virtual void uploadTexture(GraphicsContext3D* context, LayerTextureUpdater::Texture* texture, TextureAllocator* allocator, const IntRect sourceRect, const IntRect destRect) { texture->updateRect(context, allocator, sourceRect, destRect); }
     74
     75protected:
     76    explicit UnthrottledTextureUploader(PassRefPtr<GraphicsContext3D>) { }
     77};
    6678
    6779PassOwnPtr<CCProxy> CCThreadProxy::create(CCLayerTreeHost* layerTreeHost)
     
    823835    ASSERT(isImplThread());
    824836    ASSERT(m_contextBeforeInitializationOnImplThread);
    825     *initializeSucceeded = m_layerTreeHostImpl->initializeLayerRenderer(m_contextBeforeInitializationOnImplThread.release(), textureUploader);
     837    OwnPtr<TextureUploader> uploader = UnthrottledTextureUploader::create(m_contextBeforeInitializationOnImplThread.get());
     838    *initializeSucceeded = m_layerTreeHostImpl->initializeLayerRenderer(m_contextBeforeInitializationOnImplThread.release(), uploader.release());
    826839    if (*initializeSucceeded) {
    827840        *capabilities = m_layerTreeHostImpl->layerRendererCapabilities();
     
    873886    ASSERT(isImplThread());
    874887    m_layerTreeHost->deleteContentsTexturesOnImplThread(m_layerTreeHostImpl->contentsTextureAllocator());
    875     *recreateSucceeded = m_layerTreeHostImpl->initializeLayerRenderer(adoptRef(contextPtr), textureUploader);
     888    OwnPtr<TextureUploader> uploader = UnthrottledTextureUploader::create(contextPtr);
     889    *recreateSucceeded = m_layerTreeHostImpl->initializeLayerRenderer(adoptRef(contextPtr), uploader.release());
    876890    if (*recreateSucceeded) {
    877891        *capabilities = m_layerTreeHostImpl->layerRendererCapabilities();
  • trunk/Source/WebKit/chromium/ChangeLog

    r116731 r116733  
     12012-05-11  Sheriff Bot  <webkit.review.bot@gmail.com>
     2
     3        Unreviewed, rolling out r116731.
     4        http://trac.webkit.org/changeset/116731
     5        https://bugs.webkit.org/show_bug.cgi?id=86178
     6
     7        Build failure on Chromium-mac (Requested by tkent on #webkit).
     8
     9        * tests/CCLayerTreeHostImplTest.cpp:
     10        (WebKitTests::CCLayerTreeHostImplTest::CCLayerTreeHostImplTest):
     11        (WebKitTests::TEST_F):
     12        * tests/LayerRendererChromiumTest.cpp:
     13        (FakeLayerRendererChromium::FakeLayerRendererChromium):
     14        (LayerRendererChromiumTest::LayerRendererChromiumTest):
     15        (TEST):
     16
    1172012-05-10  David Reveman  <reveman@chromium.org>
    218
  • trunk/Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp

    r116731 r116733  
    2929#include "CCAnimationTestCommon.h"
    3030#include "CCLayerTestCommon.h"
     31#include "CCTiledLayerTestCommon.h"
    3132#include "FakeWebGraphicsContext3D.h"
    3233#include "GraphicsContext3DPrivate.h"
     
    6061        CCSettings settings;
    6162        m_hostImpl = CCLayerTreeHostImpl::create(settings, this);
    62         m_hostImpl->initializeLayerRenderer(createContext(), UnthrottledUploader);
     63        m_hostImpl->initializeLayerRenderer(createContext(), adoptPtr(new FakeTextureUploader));
    6364        m_hostImpl->setViewportSize(IntSize(10, 10));
    6465    }
     
    876877TEST_F(CCLayerTreeHostImplTest, viewportCovered)
    877878{
    878     m_hostImpl->initializeLayerRenderer(createContext(), UnthrottledUploader);
     879    m_hostImpl->initializeLayerRenderer(createContext(), adoptPtr(new FakeTextureUploader));
    879880    m_hostImpl->setBackgroundColor(Color::gray);
    880881
     
    987988    ReshapeTrackerContext* reshapeTracker = new ReshapeTrackerContext();
    988989    RefPtr<GraphicsContext3D> context = GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(reshapeTracker), GraphicsContext3D::RenderDirectlyToHostWindow);
    989     m_hostImpl->initializeLayerRenderer(context, UnthrottledUploader);
     990    m_hostImpl->initializeLayerRenderer(context, adoptPtr(new FakeTextureUploader));
    990991
    991992    CCLayerImpl* root = new FakeDrawableCCLayerImpl(1);
     
    10361037    settings.partialSwapEnabled = true;
    10371038    OwnPtr<CCLayerTreeHostImpl> layerTreeHostImpl = CCLayerTreeHostImpl::create(settings, this);
    1038     layerTreeHostImpl->initializeLayerRenderer(context, UnthrottledUploader);
     1039    layerTreeHostImpl->initializeLayerRenderer(context, adoptPtr(new FakeTextureUploader()));
    10391040    layerTreeHostImpl->setViewportSize(IntSize(500, 500));
    10401041
     
    11351136    EXPECT_FALSE(layer2->didLoseContextCalled());
    11361137
    1137     m_hostImpl->initializeLayerRenderer(createContext(), UnthrottledUploader);
     1138    m_hostImpl->initializeLayerRenderer(createContext(), adoptPtr(new FakeTextureUploader));
    11381139
    11391140    EXPECT_TRUE(root->didLoseContextCalled());
     
    11501151{
    11511152    // The context initialization will fail, but we should still be able to call finishAllRendering() without any ill effects.
    1152     m_hostImpl->initializeLayerRenderer(GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(new FakeWebGraphicsContext3DMakeCurrentFails), GraphicsContext3D::RenderDirectlyToHostWindow), UnthrottledUploader);
     1153    m_hostImpl->initializeLayerRenderer(GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(new FakeWebGraphicsContext3DMakeCurrentFails), GraphicsContext3D::RenderDirectlyToHostWindow), adoptPtr(new FakeTextureUploader));
    11531154    m_hostImpl->finishAllRendering();
    11541155}
     
    11801181        EXPECT_GT(renderPass->quadList().size(), 0u);
    11811182        m_hostImpl->didDrawAllLayers(frame);
    1182         m_hostImpl->initializeLayerRenderer(createContext(), UnthrottledUploader);
     1183        m_hostImpl->initializeLayerRenderer(createContext(), adoptPtr(new FakeTextureUploader));
    11831184    }
    11841185}
     
    13551356    // Lose the context, replacing it with a StrictWebGraphicsContext3D, that
    13561357    // will warn if any resource from the previous context gets used.
    1357     m_hostImpl->initializeLayerRenderer(StrictWebGraphicsContext3D::createGraphicsContext(), UnthrottledUploader);
     1358    m_hostImpl->initializeLayerRenderer(StrictWebGraphicsContext3D::createGraphicsContext(), adoptPtr(new FakeTextureUploader));
    13581359    EXPECT_TRUE(m_hostImpl->prepareToDraw(frame));
    13591360    m_hostImpl->drawLayers(frame);
  • trunk/Source/WebKit/chromium/tests/LayerRendererChromiumTest.cpp

    r116731 r116733  
    2626#include "LayerRendererChromium.h"
    2727
     28#include "CCTiledLayerTestCommon.h"
    2829#include "FakeWebGraphicsContext3D.h"
    2930#include "GraphicsContext3D.h"
     
    3637using namespace WebCore;
    3738using namespace WebKit;
     39using namespace WebKitTests;
    3840
    3941class FrameCountingMemoryAllocationSettingContext : public FakeWebGraphicsContext3D {
     
    9294class FakeLayerRendererChromium : public LayerRendererChromium {
    9395public:
    94     FakeLayerRendererChromium(LayerRendererChromiumClient* client, PassRefPtr<GraphicsContext3D> context) : LayerRendererChromium(client, context, UnthrottledUploader) { }
     96    FakeLayerRendererChromium(LayerRendererChromiumClient* client, PassRefPtr<GraphicsContext3D> context, PassOwnPtr<TextureUploader> uploader) : LayerRendererChromium(client, context, uploader) { }
    9597
    9698    // LayerRendererChromium methods.
     
    108110        , m_context(GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(new FrameCountingMemoryAllocationSettingContext()), GraphicsContext3D::RenderDirectlyToHostWindow))
    109111        , m_mockContext(*static_cast<FrameCountingMemoryAllocationSettingContext*>(GraphicsContext3DPrivate::extractWebGraphicsContext3D(m_context.get())))
    110         , m_layerRendererChromium(&m_mockClient, m_context.release())
     112        , m_layerRendererChromium(&m_mockClient, m_context.release(), adoptPtr(new FakeTextureUploader()))
    111113    {
    112114    }
     
    272274{
    273275    FakeLayerRendererChromiumClient mockClient;
    274     FakeLayerRendererChromium layerRendererChromium(&mockClient, GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(new ForbidSynchronousCallContext), GraphicsContext3D::RenderDirectlyToHostWindow));
     276    FakeLayerRendererChromium layerRendererChromium(&mockClient, GraphicsContext3DPrivate::createGraphicsContextFromWebContext(adoptPtr(new ForbidSynchronousCallContext), GraphicsContext3D::RenderDirectlyToHostWindow), adoptPtr(new FakeTextureUploader()));
    275277
    276278    EXPECT_TRUE(layerRendererChromium.initialize());
Note: See TracChangeset for help on using the changeset viewer.