diff options
| author | 2009-09-10 22:59:02 -0400 | |
|---|---|---|
| committer | 2009-09-10 22:59:02 -0400 | |
| commit | 879a56313038bb296ba901aa5461c7cb57b26f8f (patch) | |
| tree | 1520712690075b413967056baad868f556d7798b /libs/ui/SharedBufferStack.cpp | |
| parent | 6731d8c9854ceaa1a1f06c3e9421960bd5d9f07e (diff) | |
| parent | b58b5d72d6877300fe39b2a30b4742c6f962833f (diff) | |
Merge change 24642 into eclair
* changes:
make sure conditions will return when the status of a surface is not NO_ERROR
Diffstat (limited to 'libs/ui/SharedBufferStack.cpp')
| -rw-r--r-- | libs/ui/SharedBufferStack.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/libs/ui/SharedBufferStack.cpp b/libs/ui/SharedBufferStack.cpp index 5995af5de7..73fb582f9c 100644 --- a/libs/ui/SharedBufferStack.cpp +++ b/libs/ui/SharedBufferStack.cpp @@ -64,7 +64,7 @@ status_t SharedClient::setIdentity(size_t token, uint32_t identity) { SharedBufferStack::SharedBufferStack() - : inUse(-1), identity(-1), status(NO_ERROR) + : inUse(-1), status(NO_ERROR), identity(-1) { } @@ -231,6 +231,16 @@ ssize_t SharedBufferServer::RetireUpdate::operator()() { return head; } +SharedBufferServer::StatusUpdate::StatusUpdate( + SharedBufferBase* sbb, status_t status) + : UpdateBase(sbb), status(status) { +} + +ssize_t SharedBufferServer::StatusUpdate::operator()() { + android_atomic_write(status, &stack.status); + return NO_ERROR; +} + // ============================================================================ SharedBufferClient::SharedBufferClient(SharedClient* sharedClient, @@ -327,6 +337,12 @@ status_t SharedBufferServer::unlock(int buffer) return err; } +void SharedBufferServer::setStatus(status_t status) +{ + StatusUpdate update(this, status); + updateCondition( update ); +} + status_t SharedBufferServer::reallocate() { SharedBufferStack& stack( *mSharedStack ); |