diff options
author | Dan Stoza <stoza@google.com> | 2015-03-23 15:50:23 -0700 |
---|---|---|
committer | Dan Stoza <stoza@google.com> | 2015-04-15 13:20:01 -0700 |
commit | ee44edd0acccbf5eaa918d75737c3b65ee04fff7 (patch) | |
tree | 757e79db1df532e85418fe69af5d6e49732e6869 /services/surfaceflinger/SurfaceFlinger.cpp | |
parent | 5065a55291b67f584d7b0be3fa3cfc4e29a3cd1c (diff) | |
download | frameworks_native-ee44edd0acccbf5eaa918d75737c3b65ee04fff7.zip frameworks_native-ee44edd0acccbf5eaa918d75737c3b65ee04fff7.tar.gz frameworks_native-ee44edd0acccbf5eaa918d75737c3b65ee04fff7.tar.bz2 |
SurfaceFlinger: Pass surface damage to HWC
Passes the surface damage from the incoming SurfaceFlingerConsumer
BufferQueue down to the hardware composer HAL interface, if the
HWC version number is 1.5 or greater.
Bug: 11239309
Change-Id: Ic4305210593874a8d6deba3319055b2b8c57e926
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 9dc140e..f967c9d 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -145,6 +145,7 @@ SurfaceFlinger::SurfaceFlinger() mDebugInTransaction(0), mLastTransactionTime(0), mBootFinished(false), + mForceFullDamage(false), mPrimaryHWVsyncEnabled(false), mHWVsyncAvailable(false), mDaltonize(false), @@ -1725,12 +1726,17 @@ bool SurfaceFlinger::handlePageFlip() frameQueued = true; if (layer->shouldPresentNow(mPrimaryDispSync)) { layersWithQueuedFrames.push_back(layer.get()); + } else { + layer->useEmptyDamage(); } + } else { + layer->useEmptyDamage(); } } for (size_t i = 0, count = layersWithQueuedFrames.size() ; i<count ; i++) { Layer* layer = layersWithQueuedFrames[i]; const Region dirty(layer->latchBuffer(visibleRegions)); + layer->useSurfaceDamage(); const Layer::State& s(layer->getDrawingState()); invalidateLayerStack(s.layerStack, dirty); } @@ -2876,6 +2882,11 @@ status_t SurfaceFlinger::onTransact( mPrimaryDispSync.setRefreshSkipCount(n); return NO_ERROR; } + case 1017: { + n = data.readInt32(); + mForceFullDamage = static_cast<bool>(n); + return NO_ERROR; + } } } return err; |