diff options
author | Mathias Agopian <mathias@google.com> | 2009-06-26 19:06:36 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2009-06-26 19:06:36 -0700 |
commit | 8c9687ae291a1e0a63d4236069066284f56192cd (patch) | |
tree | e03fd70ad8fbd5a3bad342a381f2f1da1061f947 /libs/surfaceflinger/SurfaceFlinger.cpp | |
parent | 5a8d6f44b2ec9132848aee5f608447ff801951b2 (diff) | |
download | frameworks_base-8c9687ae291a1e0a63d4236069066284f56192cd.zip frameworks_base-8c9687ae291a1e0a63d4236069066284f56192cd.tar.gz frameworks_base-8c9687ae291a1e0a63d4236069066284f56192cd.tar.bz2 |
fix an update bug with SHOW_UPDATE debug feature. Fix a problem with the debug binder codes too
Diffstat (limited to 'libs/surfaceflinger/SurfaceFlinger.cpp')
-rw-r--r-- | libs/surfaceflinger/SurfaceFlinger.cpp | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/libs/surfaceflinger/SurfaceFlinger.cpp b/libs/surfaceflinger/SurfaceFlinger.cpp index 2e7bbea..106af3f 100644 --- a/libs/surfaceflinger/SurfaceFlinger.cpp +++ b/libs/surfaceflinger/SurfaceFlinger.cpp @@ -803,19 +803,24 @@ void SurfaceFlinger::unlockPageFlip(const LayerVector& currentLayers) } } + void SurfaceFlinger::handleRepaint() { - // set the frame buffer - const DisplayHardware& hw(graphicPlane(0).displayHardware()); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); + // compute the invalid region + mInvalidRegion.orSelf(mDirtyRegion); + if (mInvalidRegion.isEmpty()) { + // nothing to do + return; + } if (UNLIKELY(mDebugRegion)) { debugFlashRegions(); } - // compute the invalid region - mInvalidRegion.orSelf(mDirtyRegion); + // set the frame buffer + const DisplayHardware& hw(graphicPlane(0).displayHardware()); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); uint32_t flags = hw.getFlags(); if ((flags & DisplayHardware::SWAP_RECTANGLE) || @@ -945,8 +950,11 @@ void SurfaceFlinger::debugFlashRegions() glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } - hw.flip(mDirtyRegion.merge(mInvalidRegion)); - mInvalidRegion.clear(); + if (mInvalidRegion.isEmpty()) { + mDirtyRegion.dump("mDirtyRegion"); + mInvalidRegion.dump("mInvalidRegion"); + } + hw.flip(mInvalidRegion); if (mDebugRegion > 1) usleep(mDebugRegion * 1000); @@ -1549,6 +1557,7 @@ status_t SurfaceFlinger::onTransact( } status_t err = BnSurfaceComposer::onTransact(code, data, reply, flags); if (err == UNKNOWN_TRANSACTION || err == PERMISSION_DENIED) { + CHECK_INTERFACE(ISurfaceComposer, data, reply); if (UNLIKELY(!mHardwareTest.checkCalling())) { IPCThreadState* ipc = IPCThreadState::self(); const int pid = ipc->getCallingPid(); |