Title: [136658] trunk/Source/WebKit2
Revision
136658
Author
[email protected]
Date
2012-12-05 02:11:40 -0800 (Wed, 05 Dec 2012)

Log Message

[CoordinatedGraphics] Use unsigned integers for CoordinatedTile IDs
https://bugs.webkit.org/show_bug.cgi?id=103816

Reviewed by Jocelyn Turcotte.

Use unsigned integer for CoordinatedTile identifier type.
CoordinatedTile was previously using signed integers for
its identifier which is unsafe because the generated ID
will overflow at some point and the C and C++ language
standards say that overflow of a signed value is undefined
behaviour.

* UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp:
(WebKit::CoordinatedBackingStore::createTile):
(WebKit::CoordinatedBackingStore::removeTile):
(WebKit::CoordinatedBackingStore::removeAllTiles):
(WebKit::CoordinatedBackingStore::updateTile):
(WebKit::CoordinatedBackingStore::texture):
(WebKit::CoordinatedBackingStore::paintToTextureMapper):
(WebKit::CoordinatedBackingStore::commitTileOperations):
* UIProcess/CoordinatedGraphics/CoordinatedBackingStore.h:
(CoordinatedBackingStore):
* UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp:
(WebKit::LayerTreeCoordinatorProxy::createTileForLayer):
(WebKit::LayerTreeCoordinatorProxy::updateTileForLayer):
(WebKit::LayerTreeCoordinatorProxy::removeTileForLayer):
* UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h:
(LayerTreeCoordinatorProxy):
* UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in:
* UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:
(WebKit::LayerTreeRenderer::createTile):
(WebKit::LayerTreeRenderer::removeTile):
(WebKit::LayerTreeRenderer::updateTile):
* UIProcess/CoordinatedGraphics/LayerTreeRenderer.h:
(LayerTreeRenderer):
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::createTile):
(WebCore::CoordinatedGraphicsLayer::updateTile):
(WebCore::CoordinatedGraphicsLayer::removeTile):
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h:
(CoordinatedGraphicsLayerClient):
(CoordinatedGraphicsLayer):
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.cpp:
(WebKit):
(WebKit::CoordinatedTile::CoordinatedTile):
(WebKit::CoordinatedTile::~CoordinatedTile):
(WebKit::CoordinatedTile::updateBackBuffer):
(WebKit::CoordinatedTile::isReadyToPaint):
* WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.h:
(CoordinatedTile):
(CoordinatedTileClient):
* WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:
(WebKit::LayerTreeCoordinator::createTile):
(WebKit::LayerTreeCoordinator::updateTile):
(WebKit::LayerTreeCoordinator::removeTile):
* WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h:
(LayerTreeCoordinator):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (136657 => 136658)


--- trunk/Source/WebKit2/ChangeLog	2012-12-05 10:02:25 UTC (rev 136657)
+++ trunk/Source/WebKit2/ChangeLog	2012-12-05 10:11:40 UTC (rev 136658)
@@ -1,3 +1,63 @@
+2012-12-05  Christophe Dumez  <[email protected]>
+
+        [CoordinatedGraphics] Use unsigned integers for CoordinatedTile IDs
+        https://bugs.webkit.org/show_bug.cgi?id=103816
+
+        Reviewed by Jocelyn Turcotte.
+
+        Use unsigned integer for CoordinatedTile identifier type.
+        CoordinatedTile was previously using signed integers for
+        its identifier which is unsafe because the generated ID
+        will overflow at some point and the C and C++ language
+        standards say that overflow of a signed value is undefined
+        behaviour.
+
+        * UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp:
+        (WebKit::CoordinatedBackingStore::createTile):
+        (WebKit::CoordinatedBackingStore::removeTile):
+        (WebKit::CoordinatedBackingStore::removeAllTiles):
+        (WebKit::CoordinatedBackingStore::updateTile):
+        (WebKit::CoordinatedBackingStore::texture):
+        (WebKit::CoordinatedBackingStore::paintToTextureMapper):
+        (WebKit::CoordinatedBackingStore::commitTileOperations):
+        * UIProcess/CoordinatedGraphics/CoordinatedBackingStore.h:
+        (CoordinatedBackingStore):
+        * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp:
+        (WebKit::LayerTreeCoordinatorProxy::createTileForLayer):
+        (WebKit::LayerTreeCoordinatorProxy::updateTileForLayer):
+        (WebKit::LayerTreeCoordinatorProxy::removeTileForLayer):
+        * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h:
+        (LayerTreeCoordinatorProxy):
+        * UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in:
+        * UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:
+        (WebKit::LayerTreeRenderer::createTile):
+        (WebKit::LayerTreeRenderer::removeTile):
+        (WebKit::LayerTreeRenderer::updateTile):
+        * UIProcess/CoordinatedGraphics/LayerTreeRenderer.h:
+        (LayerTreeRenderer):
+        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp:
+        (WebCore::CoordinatedGraphicsLayer::createTile):
+        (WebCore::CoordinatedGraphicsLayer::updateTile):
+        (WebCore::CoordinatedGraphicsLayer::removeTile):
+        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h:
+        (CoordinatedGraphicsLayerClient):
+        (CoordinatedGraphicsLayer):
+        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.cpp:
+        (WebKit):
+        (WebKit::CoordinatedTile::CoordinatedTile):
+        (WebKit::CoordinatedTile::~CoordinatedTile):
+        (WebKit::CoordinatedTile::updateBackBuffer):
+        (WebKit::CoordinatedTile::isReadyToPaint):
+        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.h:
+        (CoordinatedTile):
+        (CoordinatedTileClient):
+        * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:
+        (WebKit::LayerTreeCoordinator::createTile):
+        (WebKit::LayerTreeCoordinator::updateTile):
+        (WebKit::LayerTreeCoordinator::removeTile):
+        * WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h:
+        (LayerTreeCoordinator):
+
 2012-12-05  Yuni Jeong  <[email protected]>
 
         [EFL][WK2] Add APIs to get/set private browsing.

Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp (136657 => 136658)


--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp	2012-12-05 10:02:25 UTC (rev 136657)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.cpp	2012-12-05 10:11:40 UTC (rev 136658)
@@ -65,13 +65,13 @@
     m_surface = buffer;
 }
 
-void CoordinatedBackingStore::createTile(int id, float scale)
+void CoordinatedBackingStore::createTile(uint32_t id, float scale)
 {
     m_tiles.add(id, CoordinatedBackingStoreTile(scale));
     m_scale = scale;
 }
 
-void CoordinatedBackingStore::removeTile(int id)
+void CoordinatedBackingStore::removeTile(uint32_t id)
 {
     ASSERT(m_tiles.contains(id));
     m_tilesToRemove.add(id);
@@ -79,14 +79,14 @@
 
 void CoordinatedBackingStore::removeAllTiles()
 {
-    HashMap<int, CoordinatedBackingStoreTile>::iterator end = m_tiles.end();
-    for (HashMap<int, CoordinatedBackingStoreTile>::iterator it = m_tiles.begin(); it != end; ++it)
+    HashMap<uint32_t, CoordinatedBackingStoreTile>::iterator end = m_tiles.end();
+    for (HashMap<uint32_t, CoordinatedBackingStoreTile>::iterator it = m_tiles.begin(); it != end; ++it)
         m_tilesToRemove.add(it->key);
 }
 
-void CoordinatedBackingStore::updateTile(int id, const IntRect& sourceRect, const IntRect& tileRect, PassRefPtr<ShareableSurface> backBuffer, const IntPoint& offset)
+void CoordinatedBackingStore::updateTile(uint32_t id, const IntRect& sourceRect, const IntRect& tileRect, PassRefPtr<ShareableSurface> backBuffer, const IntPoint& offset)
 {
-    HashMap<int, CoordinatedBackingStoreTile>::iterator it = m_tiles.find(id);
+    HashMap<uint32_t, CoordinatedBackingStoreTile>::iterator it = m_tiles.find(id);
     ASSERT(it != m_tiles.end());
     it->value.incrementRepaintCount();
     it->value.setBackBuffer(tileRect, sourceRect, backBuffer, offset);
@@ -94,8 +94,8 @@
 
 PassRefPtr<BitmapTexture> CoordinatedBackingStore::texture() const
 {
-    HashMap<int, CoordinatedBackingStoreTile>::const_iterator end = m_tiles.end();
-    for (HashMap<int, CoordinatedBackingStoreTile>::const_iterator it = m_tiles.begin(); it != end; ++it) {
+    HashMap<uint32_t, CoordinatedBackingStoreTile>::const_iterator end = m_tiles.end();
+    for (HashMap<uint32_t, CoordinatedBackingStoreTile>::const_iterator it = m_tiles.begin(); it != end; ++it) {
         RefPtr<BitmapTexture> texture = it->value.texture();
         if (texture)
             return texture;
@@ -143,9 +143,9 @@
     Vector<TextureMapperTile*> previousTilesToPaint;
 
     // We have to do this every time we paint, in case the opacity has changed.
-    HashMap<int, CoordinatedBackingStoreTile>::iterator end = m_tiles.end();
+    HashMap<uint32_t, CoordinatedBackingStoreTile>::iterator end = m_tiles.end();
     FloatRect coveredRect;
-    for (HashMap<int, CoordinatedBackingStoreTile>::iterator it = m_tiles.begin(); it != end; ++it) {
+    for (HashMap<uint32_t, CoordinatedBackingStoreTile>::iterator it = m_tiles.begin(); it != end; ++it) {
         CoordinatedBackingStoreTile& tile = it->value;
         if (!tile.texture())
             continue;
@@ -176,13 +176,13 @@
 
 void CoordinatedBackingStore::commitTileOperations(TextureMapper* textureMapper)
 {
-    HashSet<int>::iterator tilesToRemoveEnd = m_tilesToRemove.end();
-    for (HashSet<int>::iterator it = m_tilesToRemove.begin(); it != tilesToRemoveEnd; ++it)
+    HashSet<uint32_t>::iterator tilesToRemoveEnd = m_tilesToRemove.end();
+    for (HashSet<uint32_t>::iterator it = m_tilesToRemove.begin(); it != tilesToRemoveEnd; ++it)
         m_tiles.remove(*it);
     m_tilesToRemove.clear();
 
-    HashMap<int, CoordinatedBackingStoreTile>::iterator tilesEnd = m_tiles.end();
-    for (HashMap<int, CoordinatedBackingStoreTile>::iterator it = m_tiles.begin(); it != tilesEnd; ++it)
+    HashMap<uint32_t, CoordinatedBackingStoreTile>::iterator tilesEnd = m_tiles.end();
+    for (HashMap<uint32_t, CoordinatedBackingStoreTile>::iterator it = m_tiles.begin(); it != tilesEnd; ++it)
         it->value.swapBuffers(textureMapper);
 }
 

Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.h (136657 => 136658)


--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.h	2012-12-05 10:02:25 UTC (rev 136657)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedBackingStore.h	2012-12-05 10:11:40 UTC (rev 136658)
@@ -57,10 +57,10 @@
 
 class CoordinatedBackingStore : public WebCore::TextureMapperBackingStore {
 public:
-    void createTile(int, float);
-    void removeTile(int);
+    void createTile(uint32_t tileID, float);
+    void removeTile(uint32_t tileID);
     void removeAllTiles();
-    void updateTile(int, const WebCore::IntRect&, const WebCore::IntRect&, PassRefPtr<ShareableSurface>, const WebCore::IntPoint&);
+    void updateTile(uint32_t tileID, const WebCore::IntRect&, const WebCore::IntRect&, PassRefPtr<ShareableSurface>, const WebCore::IntPoint&);
     static PassRefPtr<CoordinatedBackingStore> create() { return adoptRef(new CoordinatedBackingStore); }
     void commitTileOperations(WebCore::TextureMapper*);
     PassRefPtr<WebCore::BitmapTexture> texture() const;
@@ -73,8 +73,8 @@
     { }
     void paintTilesToTextureMapper(Vector<WebCore::TextureMapperTile*>&, WebCore::TextureMapper*, const WebCore::TransformationMatrix&, float, WebCore::BitmapTexture*, const WebCore::FloatRect&);
 
-    HashMap<int, CoordinatedBackingStoreTile> m_tiles;
-    HashSet<int> m_tilesToRemove;
+    HashMap<uint32_t, CoordinatedBackingStoreTile> m_tiles;
+    HashSet<uint32_t> m_tilesToRemove;
     WebCore::FloatSize m_size;
     float m_scale;
 };

Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp (136657 => 136658)


--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp	2012-12-05 10:02:25 UTC (rev 136657)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.cpp	2012-12-05 10:11:40 UTC (rev 136658)
@@ -61,20 +61,20 @@
     m_renderer->appendUpdate(function);
 }
 
-void LayerTreeCoordinatorProxy::createTileForLayer(int layerID, int tileID, const WebCore::IntRect& tileRect, const WebKit::SurfaceUpdateInfo& updateInfo)
+void LayerTreeCoordinatorProxy::createTileForLayer(WebLayerID layerID, uint32_t tileID, const WebCore::IntRect& tileRect, const WebKit::SurfaceUpdateInfo& updateInfo)
 {
     dispatchUpdate(bind(&LayerTreeRenderer::createTile, m_renderer.get(), layerID, tileID, updateInfo.scaleFactor));
     updateTileForLayer(layerID, tileID, tileRect, updateInfo);
 }
 
-void LayerTreeCoordinatorProxy::updateTileForLayer(int layerID, int tileID, const IntRect& tileRect, const WebKit::SurfaceUpdateInfo& updateInfo)
+void LayerTreeCoordinatorProxy::updateTileForLayer(WebLayerID layerID, uint32_t tileID, const IntRect& tileRect, const WebKit::SurfaceUpdateInfo& updateInfo)
 {
     SurfaceMap::iterator it = m_surfaces.find(updateInfo.atlasID);
     ASSERT(it != m_surfaces.end());
     dispatchUpdate(bind(&LayerTreeRenderer::updateTile, m_renderer.get(), layerID, tileID, LayerTreeRenderer::TileUpdate(updateInfo.updateRect, tileRect, it->value, updateInfo.surfaceOffset)));
 }
 
-void LayerTreeCoordinatorProxy::removeTileForLayer(int layerID, int tileID)
+void LayerTreeCoordinatorProxy::removeTileForLayer(WebLayerID layerID, uint32_t tileID)
 {
     dispatchUpdate(bind(&LayerTreeRenderer::removeTile, m_renderer.get(), layerID, tileID));
 }

Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h (136657 => 136658)


--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h	2012-12-05 10:02:25 UTC (rev 136657)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.h	2012-12-05 10:11:40 UTC (rev 136658)
@@ -66,9 +66,9 @@
     void setContentsSize(const WebCore::FloatSize&);
     void setVisibleContentsRect(const WebCore::FloatRect&, float scale, const WebCore::FloatPoint& trajectoryVector);
     void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect);
-    void createTileForLayer(int layerID, int tileID, const WebCore::IntRect&, const SurfaceUpdateInfo&);
-    void updateTileForLayer(int layerID, int tileID, const WebCore::IntRect&, const SurfaceUpdateInfo&);
-    void removeTileForLayer(int layerID, int tileID);
+    void createTileForLayer(WebLayerID, uint32_t tileID, const WebCore::IntRect&, const SurfaceUpdateInfo&);
+    void updateTileForLayer(WebLayerID, uint32_t tileID, const WebCore::IntRect&, const SurfaceUpdateInfo&);
+    void removeTileForLayer(WebLayerID, uint32_t tileID);
     void createUpdateAtlas(int atlasID, const ShareableSurface::Handle&);
     void removeUpdateAtlas(int atlasID);
     void createImageBacking(CoordinatedImageBackingID);

Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in (136657 => 136658)


--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in	2012-12-05 10:02:25 UTC (rev 136657)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in	2012-12-05 10:11:40 UTC (rev 136658)
@@ -30,9 +30,9 @@
 #endif
     SetRootCompositingLayer(uint32_t id)
     DeleteCompositingLayer(uint32_t id)
-    CreateTileForLayer(uint32_t layerID, int tileID, WebCore::IntRect tileRect, WebKit::SurfaceUpdateInfo updateInfo)
-    UpdateTileForLayer(uint32_t layerID, int tileID, WebCore::IntRect tileRect, WebKit::SurfaceUpdateInfo updateInfo)
-    RemoveTileForLayer(uint32_t layerID, int tileID)
+    CreateTileForLayer(uint32_t layerID, uint32_t tileID, WebCore::IntRect tileRect, WebKit::SurfaceUpdateInfo updateInfo)
+    UpdateTileForLayer(uint32_t layerID, uint32_t tileID, WebCore::IntRect tileRect, WebKit::SurfaceUpdateInfo updateInfo)
+    RemoveTileForLayer(uint32_t layerID, uint32_t tileID)
     CreateUpdateAtlas(int atlasID, WebKit::ShareableSurface::Handle handle)
     RemoveUpdateAtlas(int atlasID)
     CreateImageBacking(uint64_t imageID)

Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp (136657 => 136658)


--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp	2012-12-05 10:02:25 UTC (rev 136657)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp	2012-12-05 10:11:40 UTC (rev 136658)
@@ -484,7 +484,7 @@
     backingStore->setSize(graphicsLayer->size());
 }
 
-void LayerTreeRenderer::createTile(WebLayerID layerID, int tileID, float scale)
+void LayerTreeRenderer::createTile(WebLayerID layerID, uint32_t tileID, float scale)
 {
     GraphicsLayer* layer = layerByID(layerID);
     ASSERT(layer);
@@ -494,7 +494,7 @@
     resetBackingStoreSizeToLayerSize(layer);
 }
 
-void LayerTreeRenderer::removeTile(WebLayerID layerID, int tileID)
+void LayerTreeRenderer::removeTile(WebLayerID layerID, uint32_t tileID)
 {
     GraphicsLayer* layer = layerByID(layerID);
     ASSERT(layer);
@@ -507,7 +507,7 @@
     m_backingStoresWithPendingBuffers.add(backingStore);
 }
 
-void LayerTreeRenderer::updateTile(WebLayerID layerID, int tileID, const TileUpdate& update)
+void LayerTreeRenderer::updateTile(WebLayerID layerID, uint32_t tileID, const TileUpdate& update)
 {
     GraphicsLayer* layer = layerByID(layerID);
     ASSERT(layer);

Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h (136657 => 136658)


--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h	2012-12-05 10:02:25 UTC (rev 136657)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.h	2012-12-05 10:11:40 UTC (rev 136658)
@@ -100,9 +100,9 @@
     void removeCustomFilterProgram(int id);
 #endif
 
-    void createTile(WebLayerID, int, float scale);
-    void removeTile(WebLayerID, int);
-    void updateTile(WebLayerID, int, const TileUpdate&);
+    void createTile(WebLayerID, uint32_t tileID, float scale);
+    void removeTile(WebLayerID, uint32_t tileID);
+    void updateTile(WebLayerID, uint32_t tileID, const TileUpdate&);
     void flushLayerChanges();
     void createImageBacking(CoordinatedImageBackingID);
     void updateImageBacking(CoordinatedImageBackingID, PassRefPtr<ShareableSurface>);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp (136657 => 136658)


--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp	2012-12-05 10:02:25 UTC (rev 136657)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.cpp	2012-12-05 10:11:40 UTC (rev 136658)
@@ -727,19 +727,19 @@
     return m_coordinator->beginContentUpdate(size, contentsOpaque() ? 0 : ShareableBitmap::SupportsAlpha, atlas, offset);
 }
 
-void CoordinatedGraphicsLayer::createTile(int tileID, const SurfaceUpdateInfo& updateInfo, const WebCore::IntRect& tileRect)
+void CoordinatedGraphicsLayer::createTile(uint32_t tileID, const SurfaceUpdateInfo& updateInfo, const WebCore::IntRect& tileRect)
 {
     if (m_coordinator)
         m_coordinator->createTile(id(), tileID, updateInfo, tileRect);
 }
 
-void CoordinatedGraphicsLayer::updateTile(int tileID, const SurfaceUpdateInfo& updateInfo, const IntRect& tileRect)
+void CoordinatedGraphicsLayer::updateTile(uint32_t tileID, const SurfaceUpdateInfo& updateInfo, const IntRect& tileRect)
 {
     if (m_coordinator)
         m_coordinator->updateTile(id(), tileID, updateInfo, tileRect);
 }
 
-void CoordinatedGraphicsLayer::removeTile(int tileID)
+void CoordinatedGraphicsLayer::removeTile(uint32_t tileID)
 {
     if (m_coordinator)
         m_coordinator->removeTile(id(), tileID);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h (136657 => 136658)


--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h	2012-12-05 10:02:25 UTC (rev 136657)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedGraphicsLayer.h	2012-12-05 10:11:40 UTC (rev 136658)
@@ -53,9 +53,9 @@
 class CoordinatedGraphicsLayerClient {
 public:
     // CoordinatedTileClient
-    virtual void createTile(WebLayerID, int tileID, const SurfaceUpdateInfo&, const WebCore::IntRect&) = 0;
-    virtual void updateTile(WebLayerID, int tileID, const SurfaceUpdateInfo&, const WebCore::IntRect&) = 0;
-    virtual void removeTile(WebLayerID, int tileID) = 0;
+    virtual void createTile(WebLayerID, uint32_t tileID, const SurfaceUpdateInfo&, const WebCore::IntRect&) = 0;
+    virtual void updateTile(WebLayerID, uint32_t tileID, const SurfaceUpdateInfo&, const WebCore::IntRect&) = 0;
+    virtual void removeTile(WebLayerID, uint32_t tileID) = 0;
 
     virtual WebCore::IntRect visibleContentsRect() const = 0;
     virtual bool layerTreeTileUpdatesAllowed() const = 0;
@@ -152,9 +152,9 @@
     virtual Color tiledBackingStoreBackgroundColor() const OVERRIDE;
 
     // CoordinatedTileClient
-    virtual void createTile(int tileID, const WebKit::SurfaceUpdateInfo&, const IntRect&) OVERRIDE;
-    virtual void updateTile(int tileID, const WebKit::SurfaceUpdateInfo&, const IntRect&) OVERRIDE;
-    virtual void removeTile(int tileID) OVERRIDE;
+    virtual void createTile(uint32_t tileID, const WebKit::SurfaceUpdateInfo&, const IntRect&) OVERRIDE;
+    virtual void updateTile(uint32_t tileID, const WebKit::SurfaceUpdateInfo&, const IntRect&) OVERRIDE;
+    virtual void removeTile(uint32_t tileID) OVERRIDE;
     virtual PassOwnPtr<GraphicsContext> beginContentUpdate(const IntSize&, int& atlasID, IntPoint&) OVERRIDE;
 
     void setCoordinator(WebKit::CoordinatedGraphicsLayerClient*);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.cpp (136657 => 136658)


--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.cpp	2012-12-05 10:02:25 UTC (rev 136657)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.cpp	2012-12-05 10:11:40 UTC (rev 136658)
@@ -37,19 +37,21 @@
 
 namespace WebKit {
 
+static const uint32_t InvalidCoordinatedTileID = 0;
+
 CoordinatedTile::CoordinatedTile(CoordinatedTileClient* client, TiledBackingStore* tiledBackingStore, const Coordinate& tileCoordinate)
     : m_client(client)
     , m_tiledBackingStore(tiledBackingStore)
     , m_coordinate(tileCoordinate)
     , m_rect(tiledBackingStore->tileRectForCoordinate(tileCoordinate))
-    , m_ID(0)
+    , m_ID(InvalidCoordinatedTileID)
     , m_dirtyRect(m_rect)
 {
 }
 
 CoordinatedTile::~CoordinatedTile()
 {
-    if (m_ID)
+    if (m_ID != InvalidCoordinatedTileID)
         m_client->removeTile(m_ID);
 }
 
@@ -85,9 +87,12 @@
     updateInfo.scaleFactor = m_tiledBackingStore->contentsScale();
     graphicsContext.release();
 
-    static int id = 0;
-    if (!m_ID) {
-        m_ID = ++id;
+    static uint32_t id = 1;
+    if (m_ID == InvalidCoordinatedTileID) {
+        m_ID = id++;
+        // We may get an invalid ID due to wrap-around on overflow.
+        if (m_ID == InvalidCoordinatedTileID)
+            m_ID = id++;
         m_client->createTile(m_ID, updateInfo, m_rect);
     } else
         m_client->updateTile(m_ID, updateInfo, m_rect);
@@ -103,7 +108,7 @@
 
 bool CoordinatedTile::isReadyToPaint() const
 {
-    return !!m_ID;
+    return m_ID != InvalidCoordinatedTileID;
 }
 
 void CoordinatedTile::paint(GraphicsContext*, const IntRect&)

Modified: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.h (136657 => 136658)


--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.h	2012-12-05 10:02:25 UTC (rev 136657)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedTile.h	2012-12-05 10:11:40 UTC (rev 136658)
@@ -66,7 +66,7 @@
     Coordinate m_coordinate;
     WebCore::IntRect m_rect;
 
-    int m_ID;
+    uint32_t m_ID;
     WebCore::IntRect m_dirtyRect;
 
     OwnPtr<WebCore::ImageBuffer> m_localBuffer;
@@ -75,9 +75,9 @@
 class CoordinatedTileClient {
 public:
     virtual ~CoordinatedTileClient() { }
-    virtual void createTile(int tileID, const SurfaceUpdateInfo&, const WebCore::IntRect&) = 0;
-    virtual void updateTile(int tileID, const SurfaceUpdateInfo&, const WebCore::IntRect&) = 0;
-    virtual void removeTile(int tileID) = 0;
+    virtual void createTile(uint32_t tileID, const SurfaceUpdateInfo&, const WebCore::IntRect&) = 0;
+    virtual void updateTile(uint32_t tileID, const SurfaceUpdateInfo&, const WebCore::IntRect&) = 0;
+    virtual void removeTile(uint32_t tileID) = 0;
     virtual PassOwnPtr<WebCore::GraphicsContext> beginContentUpdate(const WebCore::IntSize&, int& atlasID, WebCore::IntPoint&) = 0;
 };
 

Modified: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp (136657 => 136658)


--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp	2012-12-05 10:02:25 UTC (rev 136657)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp	2012-12-05 10:11:40 UTC (rev 136658)
@@ -639,19 +639,19 @@
     return true;
 }
 
-void LayerTreeCoordinator::createTile(WebLayerID layerID, int tileID, const SurfaceUpdateInfo& updateInfo, const WebCore::IntRect& tileRect)
+void LayerTreeCoordinator::createTile(WebLayerID layerID, uint32_t tileID, const SurfaceUpdateInfo& updateInfo, const WebCore::IntRect& tileRect)
 {
     m_shouldSyncFrame = true;
     m_webPage->send(Messages::LayerTreeCoordinatorProxy::CreateTileForLayer(layerID, tileID, tileRect, updateInfo));
 }
 
-void LayerTreeCoordinator::updateTile(WebLayerID layerID, int tileID, const SurfaceUpdateInfo& updateInfo, const WebCore::IntRect& tileRect)
+void LayerTreeCoordinator::updateTile(WebLayerID layerID, uint32_t tileID, const SurfaceUpdateInfo& updateInfo, const WebCore::IntRect& tileRect)
 {
     m_shouldSyncFrame = true;
     m_webPage->send(Messages::LayerTreeCoordinatorProxy::UpdateTileForLayer(layerID, tileID, tileRect, updateInfo));
 }
 
-void LayerTreeCoordinator::removeTile(WebLayerID layerID, int tileID)
+void LayerTreeCoordinator::removeTile(WebLayerID layerID, uint32_t tileID)
 {
     if (m_isPurging)
         return;

Modified: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h (136657 => 136658)


--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h	2012-12-05 10:02:25 UTC (rev 136657)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.h	2012-12-05 10:11:40 UTC (rev 136658)
@@ -78,9 +78,9 @@
     virtual void deviceScaleFactorDidChange() { }
     virtual PassRefPtr<CoordinatedImageBacking> createImageBackingIfNeeded(WebCore::Image*) OVERRIDE;
 
-    virtual void createTile(WebLayerID, int tileID, const SurfaceUpdateInfo&, const WebCore::IntRect&);
-    virtual void updateTile(WebLayerID, int tileID, const SurfaceUpdateInfo&, const WebCore::IntRect&);
-    virtual void removeTile(WebLayerID, int tileID);
+    virtual void createTile(WebLayerID, uint32_t tileID, const SurfaceUpdateInfo&, const WebCore::IntRect&);
+    virtual void updateTile(WebLayerID, uint32_t tileID, const SurfaceUpdateInfo&, const WebCore::IntRect&);
+    virtual void removeTile(WebLayerID, uint32_t tileID);
     virtual WebCore::IntRect visibleContentsRect() const;
     virtual void renderNextFrame();
     virtual void purgeBackingStores();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to