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();