summaryrefslogtreecommitdiffstats
path: root/libs/surfaceflinger_client
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2010-05-14 15:04:52 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2010-05-14 15:04:52 -0700
commit900b6157f5dee2ed7b2c73cf320b2baf293230ff (patch)
tree15fabaeae78d67b8ee40afa76c5fabff20582d2b /libs/surfaceflinger_client
parentfb580943133d3e9ad3e342b8038726b04686f283 (diff)
parent5b9fb5ab7ee81fc9b22f9aaea478db65e9b56c43 (diff)
downloadframeworks_base-900b6157f5dee2ed7b2c73cf320b2baf293230ff.zip
frameworks_base-900b6157f5dee2ed7b2c73cf320b2baf293230ff.tar.gz
frameworks_base-900b6157f5dee2ed7b2c73cf320b2baf293230ff.tar.bz2
merge from open-source master
Change-Id: I0249c6d796b35af9ba08cbccd463a1f5cf779ecd
Diffstat (limited to 'libs/surfaceflinger_client')
-rw-r--r--libs/surfaceflinger_client/SurfaceComposerClient.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/libs/surfaceflinger_client/SurfaceComposerClient.cpp b/libs/surfaceflinger_client/SurfaceComposerClient.cpp
index 3117495..85167da 100644
--- a/libs/surfaceflinger_client/SurfaceComposerClient.cpp
+++ b/libs/surfaceflinger_client/SurfaceComposerClient.cpp
@@ -58,7 +58,7 @@ namespace android {
// Must not be holding SurfaceComposerClient::mLock when acquiring gLock here.
static Mutex gLock;
static sp<ISurfaceComposer> gSurfaceManager;
-static DefaultKeyedVector< sp<IBinder>, sp<SurfaceComposerClient> > gActiveConnections;
+static DefaultKeyedVector< sp<IBinder>, wp<SurfaceComposerClient> > gActiveConnections;
static SortedVector<sp<SurfaceComposerClient> > gOpenTransactions;
static sp<IMemoryHeap> gServerCblkMemory;
static volatile surface_flinger_cblk_t* gServerCblk;
@@ -195,7 +195,7 @@ SurfaceComposerClient::clientForConnection(const sp<IBinder>& conn)
{ // scope for lock
Mutex::Autolock _l(gLock);
- client = gActiveConnections.valueFor(conn);
+ client = gActiveConnections.valueFor(conn).promote();
}
if (client == 0) {
@@ -383,8 +383,8 @@ void SurfaceComposerClient::openGlobalTransaction()
const size_t N = gActiveConnections.size();
VERBOSE("openGlobalTransaction (%ld clients)", N);
for (size_t i=0; i<N; i++) {
- sp<SurfaceComposerClient> client(gActiveConnections.valueAt(i));
- if (gOpenTransactions.indexOf(client) < 0) {
+ sp<SurfaceComposerClient> client(gActiveConnections.valueAt(i).promote());
+ if (client != 0 && gOpenTransactions.indexOf(client) < 0) {
if (client->openTransaction() == NO_ERROR) {
if (gOpenTransactions.add(client) < 0) {
// Ooops!