From 96f0819f81293076e652792794a961543e6750d7 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Wed, 2 Jun 2010 23:28:45 -0700 Subject: clean-up client management. simplified things a lot, the biggest change is that the concept of "ClientID" is now gone, instead we simply use references. Change-Id: Icbc57f80865884aa5f35ad0d0a0db26f19f9f7ce --- libs/surfaceflinger/LayerBase.cpp | 38 ++++++++++---------------------------- 1 file changed, 10 insertions(+), 28 deletions(-) (limited to 'libs/surfaceflinger/LayerBase.cpp') diff --git a/libs/surfaceflinger/LayerBase.cpp b/libs/surfaceflinger/LayerBase.cpp index 7ab74b4276..80b001e418 100644 --- a/libs/surfaceflinger/LayerBase.cpp +++ b/libs/surfaceflinger/LayerBase.cpp @@ -488,35 +488,18 @@ void LayerBase::dump(String8& result, char* buffer, size_t SIZE) const int32_t LayerBaseClient::sIdentity = 1; LayerBaseClient::LayerBaseClient(SurfaceFlinger* flinger, DisplayID display, - const sp& client, int32_t i) - : LayerBase(flinger, display), client(client), mIndex(i), + const sp& client) + : LayerBase(flinger, display), client(client), mIdentity(uint32_t(android_atomic_inc(&sIdentity))) { } -void LayerBaseClient::onFirstRef() -{ - sp client(this->client.promote()); - if (client != 0) { - client->bindLayer(this, mIndex); - } -} - LayerBaseClient::~LayerBaseClient() { - sp client(this->client.promote()); - if (client != 0) { - client->free(mIndex); - } -} - -ssize_t LayerBaseClient::serverIndex() const -{ - sp client(this->client.promote()); - if (client != 0) { - return (client->cid<<16)|mIndex; + sp c(client.promote()); + if (c != 0) { + c->free(this); } - return ssize_t(0xFFFF0000 | mIndex); } sp LayerBaseClient::getSurface() @@ -533,7 +516,7 @@ sp LayerBaseClient::getSurface() sp LayerBaseClient::createSurface() const { - return new Surface(mFlinger, clientIndex(), mIdentity, + return new Surface(mFlinger, mIdentity, const_cast(this)); } @@ -544,10 +527,9 @@ void LayerBaseClient::dump(String8& result, char* buffer, size_t SIZE) const sp client(this->client.promote()); snprintf(buffer, SIZE, " name=%s\n" - " id=0x%08x, client=0x%08x, identity=%u\n", + " client=%p, identity=%u\n", getName().string(), - clientIndex(), client.get() ? client->cid : 0, - getIdentity()); + client.get(), getIdentity()); result.append(buffer); } @@ -556,9 +538,9 @@ void LayerBaseClient::dump(String8& result, char* buffer, size_t SIZE) const LayerBaseClient::Surface::Surface( const sp& flinger, - SurfaceID id, int identity, + int identity, const sp& owner) - : mFlinger(flinger), mToken(id), mIdentity(identity), mOwner(owner) + : mFlinger(flinger), mIdentity(identity), mOwner(owner) { } -- cgit v1.2.3-59-g8ed1b