summaryrefslogtreecommitdiffstats
path: root/cc/surfaces/surface_factory.cc
diff options
context:
space:
mode:
authorjamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-02 06:52:46 +0000
committerjamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-02 06:52:46 +0000
commitcde7921316422aad0569127571623afd099df5f1 (patch)
treef54abf318581399ab25d48dbb27f88de756fd9ef /cc/surfaces/surface_factory.cc
parentc6c2f06f650af6b9b05d3040d49111dce9deba59 (diff)
downloadchromium_src-cde7921316422aad0569127571623afd099df5f1.zip
chromium_src-cde7921316422aad0569127571623afd099df5f1.tar.gz
chromium_src-cde7921316422aad0569127571623afd099df5f1.tar.bz2
Allocate surface IDs on client side
This is much easier to manage for clients using surfaces in an asynchronous way (i.e. over a mojo pipe or chromium IPC). The code translating from the IPC layer to SurfaceFactory can validate that the namespace of SurfaceIds matches the logical connection it is managing. Review URL: https://codereview.chromium.org/358003003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@280950 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/surfaces/surface_factory.cc')
-rw-r--r--cc/surfaces/surface_factory.cc9
1 files changed, 4 insertions, 5 deletions
diff --git a/cc/surfaces/surface_factory.cc b/cc/surfaces/surface_factory.cc
index 09c9f45..69ee02a 100644
--- a/cc/surfaces/surface_factory.cc
+++ b/cc/surfaces/surface_factory.cc
@@ -19,12 +19,11 @@ SurfaceFactory::~SurfaceFactory() {
DCHECK_EQ(0u, surface_map_.size());
}
-SurfaceId SurfaceFactory::Create(const gfx::Size& size) {
- SurfaceId id = manager_->AllocateId();
- scoped_ptr<Surface> surface(new Surface(id, size, this));
+void SurfaceFactory::Create(SurfaceId surface_id, const gfx::Size& size) {
+ scoped_ptr<Surface> surface(new Surface(surface_id, size, this));
manager_->RegisterSurface(surface.get());
- surface_map_.add(id, surface.Pass());
- return id;
+ DCHECK(!surface_map_.count(surface_id));
+ surface_map_.add(surface_id, surface.Pass());
}
void SurfaceFactory::Destroy(SurfaceId surface_id) {