diff options
-rw-r--r-- | include/private/ui/SharedBufferStack.h | 1 | ||||
-rw-r--r-- | include/private/ui/SurfaceFlingerSynchro.h | 48 | ||||
-rw-r--r-- | include/ui/SurfaceComposerClient.h | 2 | ||||
-rw-r--r-- | libs/surfaceflinger/Layer.cpp | 6 | ||||
-rw-r--r-- | libs/ui/Android.mk | 3 | ||||
-rw-r--r-- | libs/ui/SharedBufferStack.cpp | 6 | ||||
-rw-r--r-- | libs/ui/SurfaceComposerClient.cpp | 5 | ||||
-rw-r--r-- | libs/ui/SurfaceFlingerSynchro.cpp | 42 |
8 files changed, 14 insertions, 99 deletions
diff --git a/include/private/ui/SharedBufferStack.h b/include/private/ui/SharedBufferStack.h index f6824d9..bbc1822 100644 --- a/include/private/ui/SharedBufferStack.h +++ b/include/private/ui/SharedBufferStack.h @@ -289,6 +289,7 @@ public: void setStatus(status_t status); status_t reallocate(); status_t assertReallocate(int buffer); + int32_t getQueuedCount() const; Region getDirtyRegion(int buffer) const; diff --git a/include/private/ui/SurfaceFlingerSynchro.h b/include/private/ui/SurfaceFlingerSynchro.h deleted file mode 100644 index 7386d33..0000000 --- a/include/private/ui/SurfaceFlingerSynchro.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#ifndef ANDROID_SURFACE_FLINGER_SYNCHRO_H -#define ANDROID_SURFACE_FLINGER_SYNCHRO_H - -#include <stdint.h> -#include <sys/types.h> -#include <utils/Errors.h> -#include <ui/ISurfaceComposer.h> - -namespace android { - -class SurfaceFlinger; - -class SurfaceFlingerSynchro -{ -public: - // client constructor - SurfaceFlingerSynchro(const sp<ISurfaceComposer>& flinger); - ~SurfaceFlingerSynchro(); - - // signal surfaceflinger for some work - status_t signal(); - -private: - friend class SurfaceFlinger; - sp<ISurfaceComposer> mSurfaceComposer; -}; - -}; // namespace android - -#endif // ANDROID_SURFACE_FLINGER_SYNCHRO_H - diff --git a/include/ui/SurfaceComposerClient.h b/include/ui/SurfaceComposerClient.h index 8701928..777b878 100644 --- a/include/ui/SurfaceComposerClient.h +++ b/include/ui/SurfaceComposerClient.h @@ -153,7 +153,7 @@ private: SharedClient* mControl; sp<IMemoryHeap> mControlMemory; sp<ISurfaceFlingerClient> mClient; - SurfaceFlingerSynchro* mSignalServer; + sp<ISurfaceComposer> mSignalServer; }; }; // namespace android diff --git a/libs/surfaceflinger/Layer.cpp b/libs/surfaceflinger/Layer.cpp index 0258cee..2a3e667 100644 --- a/libs/surfaceflinger/Layer.cpp +++ b/libs/surfaceflinger/Layer.cpp @@ -460,8 +460,10 @@ void Layer::lockPageFlip(bool& recomputeVisibleRegions) } } - // FIXME: signal an event if we have more buffers waiting - // mFlinger->signalEvent(); + if (lcblk->getQueuedCount()) { + // signal an event if we have more buffers waiting + mFlinger->signalEvent(); + } if (!mPostedDirtyRegion.isEmpty()) { reloadTexture( mPostedDirtyRegion ); diff --git a/libs/ui/Android.mk b/libs/ui/Android.mk index 73d86ea..84aec61 100644 --- a/libs/ui/Android.mk +++ b/libs/ui/Android.mk @@ -27,8 +27,7 @@ LOCAL_SRC_FILES:= \ Region.cpp \ SharedBufferStack.cpp \ Surface.cpp \ - SurfaceComposerClient.cpp \ - SurfaceFlingerSynchro.cpp + SurfaceComposerClient.cpp LOCAL_SHARED_LIBRARIES := \ libcutils \ diff --git a/libs/ui/SharedBufferStack.cpp b/libs/ui/SharedBufferStack.cpp index b460757..46b6766 100644 --- a/libs/ui/SharedBufferStack.cpp +++ b/libs/ui/SharedBufferStack.cpp @@ -394,6 +394,12 @@ status_t SharedBufferServer::reallocate() return NO_ERROR; } +int32_t SharedBufferServer::getQueuedCount() const +{ + SharedBufferStack& stack( *mSharedStack ); + return stack.queued; +} + status_t SharedBufferServer::assertReallocate(int buffer) { ReallocateCondition condition(this, buffer); diff --git a/libs/ui/SurfaceComposerClient.cpp b/libs/ui/SurfaceComposerClient.cpp index 3baa281..eda84ef 100644 --- a/libs/ui/SurfaceComposerClient.cpp +++ b/libs/ui/SurfaceComposerClient.cpp @@ -42,7 +42,6 @@ #include <private/ui/LayerState.h> #include <private/ui/SharedBufferStack.h> -#include <private/ui/SurfaceFlingerSynchro.h> #define VERBOSE(...) ((void)0) //#define VERBOSE LOGD @@ -155,7 +154,6 @@ void SurfaceComposerClient::_init( { VERBOSE("Creating client %p, conn %p", this, conn.get()); - mSignalServer = 0; mPrebuiltLayerState = 0; mTransactionOpen = 0; mStatus = NO_ERROR; @@ -168,7 +166,7 @@ void SurfaceComposerClient::_init( } mControlMemory = mClient->getControlBlock(); - mSignalServer = new SurfaceFlingerSynchro(sm); + mSignalServer = sm; mControl = static_cast<SharedClient *>(mControlMemory->getBase()); } @@ -225,7 +223,6 @@ void SurfaceComposerClient::dispose() Mutex::Autolock _lg(gLock); Mutex::Autolock _lm(mLock); - delete mSignalServer; mSignalServer = 0; if (mClient != 0) { diff --git a/libs/ui/SurfaceFlingerSynchro.cpp b/libs/ui/SurfaceFlingerSynchro.cpp deleted file mode 100644 index c81db71..0000000 --- a/libs/ui/SurfaceFlingerSynchro.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <stdint.h> - -#include <private/ui/SurfaceFlingerSynchro.h> - -namespace android { - -// --------------------------------------------------------------------------- - -SurfaceFlingerSynchro::SurfaceFlingerSynchro(const sp<ISurfaceComposer>& flinger) - : mSurfaceComposer(flinger) -{ -} -SurfaceFlingerSynchro::~SurfaceFlingerSynchro() -{ -} - -status_t SurfaceFlingerSynchro::signal() -{ - mSurfaceComposer->signal(); - return NO_ERROR; -} - -// --------------------------------------------------------------------------- - -}; // namespace android - |