fix a rookie mistake causing Singleton<> to be a "multiton". Also improve the BufferMapper's debugging, but turn it off.
Squashed commit of the following:
commit 04e9cae7f806bd65f2cfe35c011b47a36773bbe5
Author: Mathias Agopian <mathias@google.com>
Date: Wed Apr 15 18:30:30 2009 -0700
fix and improve BufferMapper's tracking of mapped buffers.
commit 1a8deaed15811092b2349cc3c40cafb5f722046c
Author: Mathias Agopian <mathias@google.com>
Date: Wed Apr 15 00:52:02 2009 -0700
fix some bugs with the Singleton<> class. untested.
commit ed01cc06ad70cf640ce1258f01189cb1a96fd3a8
Author: Mathias Agopian <mathias@google.com>
Date: Tue Apr 14 19:29:25 2009 -0700
some work to debug the Singleton<> template.
diff --git a/libs/ui/Surface.cpp b/libs/ui/Surface.cpp
index 357e4d0..1ceece0 100644
--- a/libs/ui/Surface.cpp
+++ b/libs/ui/Surface.cpp
@@ -50,6 +50,9 @@
// SurfaceBuffer
// ============================================================================
+template<class SurfaceBuffer> Mutex Singleton<SurfaceBuffer>::sLock;
+template<> SurfaceBuffer* Singleton<SurfaceBuffer>::sInstance(0);
+
SurfaceBuffer::SurfaceBuffer()
: BASE(), handle(0), mOwner(false)
{
@@ -199,10 +202,10 @@
if (mOwner && mToken>=0 && mClient!=0) {
mClient->destroySurface(mToken);
if (mBuffers[0] != 0) {
- BufferMapper::get().unmap(mBuffers[0]->getHandle());
+ BufferMapper::get().unmap(mBuffers[0]->getHandle(), this);
}
if (mBuffers[1] != 0) {
- BufferMapper::get().unmap(mBuffers[1]->getHandle());
+ BufferMapper::get().unmap(mBuffers[1]->getHandle(), this);
}
}
mClient.clear();
@@ -572,10 +575,10 @@
if (buffer != 0) {
sp<SurfaceBuffer>& currentBuffer(mBuffers[index]);
if (currentBuffer != 0) {
- BufferMapper::get().unmap(currentBuffer->getHandle());
+ BufferMapper::get().unmap(currentBuffer->getHandle(), this);
currentBuffer.clear();
}
- err = BufferMapper::get().map(buffer->getHandle(), &buffer->bits);
+ err = BufferMapper::get().map(buffer->getHandle(), &buffer->bits, this);
LOGW_IF(err, "map(...) failed %d (%s)", err, strerror(-err));
if (err == NO_ERROR) {
currentBuffer = buffer;