diff options
| author | 2012-10-15 20:19:36 -0700 | |
|---|---|---|
| committer | 2012-10-15 20:19:36 -0700 | |
| commit | 5c51f0fb38bd0cd80031da3eee6f335d5d28c3fc (patch) | |
| tree | 5f54e68e773b8ae7436cbf251863bed08c599b77 /libs/gui/SurfaceComposerClient.cpp | |
| parent | 49fe8addbfe52bf9a3e69e6250e462a70332235c (diff) | |
| parent | 3365c56716432d3bfdf41bb82fb08df821f41d0c (diff) | |
am 3365c567: Merge "SurfaceFlinger: add animation transactions" into jb-mr1-dev
* commit '3365c56716432d3bfdf41bb82fb08df821f41d0c':
  SurfaceFlinger: add animation transactions
Diffstat (limited to 'libs/gui/SurfaceComposerClient.cpp')
| -rw-r--r-- | libs/gui/SurfaceComposerClient.cpp | 23 | 
1 files changed, 22 insertions, 1 deletions
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp index 3efd086bd0..8586ed2184 100644 --- a/libs/gui/SurfaceComposerClient.cpp +++ b/libs/gui/SurfaceComposerClient.cpp @@ -115,12 +115,15 @@ class Composer : public Singleton<Composer>      SortedVector<ComposerState> mComposerStates;      SortedVector<DisplayState > mDisplayStates;      uint32_t                    mForceSynchronous; +    bool                        mAnimation;      Composer() : Singleton<Composer>(), -        mForceSynchronous(0) +        mForceSynchronous(0), +        mAnimation(false)      { }      void closeGlobalTransactionImpl(bool synchronous); +    void setAnimationTransactionImpl();      layer_state_t* getLayerStateLocked(              const sp<SurfaceComposerClient>& client, SurfaceID id); @@ -159,6 +162,10 @@ public:              const Rect& layerStackRect,              const Rect& displayRect); +    static void setAnimationTransaction() { +        Composer::getInstance().setAnimationTransactionImpl(); +    } +      static void closeGlobalTransaction(bool synchronous) {          Composer::getInstance().closeGlobalTransactionImpl(synchronous);      } @@ -194,12 +201,22 @@ void Composer::closeGlobalTransactionImpl(bool synchronous) {          if (synchronous || mForceSynchronous) {              flags |= ISurfaceComposer::eSynchronous;          } +        if (mAnimation) { +            flags |= ISurfaceComposer::eAnimation; +        } +          mForceSynchronous = false; +        mAnimation = false;      }     sm->setTransactionState(transaction, displayTransaction, flags);  } +void Composer::setAnimationTransactionImpl() { +    Mutex::Autolock _l(mLock); +    mAnimation = true; +} +  layer_state_t* Composer::getLayerStateLocked(          const sp<SurfaceComposerClient>& client, SurfaceID id) { @@ -471,6 +488,10 @@ void SurfaceComposerClient::closeGlobalTransaction(bool synchronous) {      Composer::closeGlobalTransaction(synchronous);  } +void SurfaceComposerClient::setAnimationTransaction() { +    Composer::setAnimationTransaction(); +} +  // ----------------------------------------------------------------------------  status_t SurfaceComposerClient::setCrop(SurfaceID id, const Rect& crop) {  |