am 010719c2: Merge "fix [3312683] Camera mirroring problem after switching from back to front camera" into honeycomb

* commit '010719c2fff4ab40757984f29d7755ff7f79e3de':
  fix [3312683] Camera mirroring problem after switching from back to front camera
This commit is contained in:
Mathias Agopian 2011-01-14 11:05:24 -08:00 committed by Android Git Automerger
commit f637bd067e
3 changed files with 17 additions and 5 deletions

View File

@ -503,12 +503,18 @@ void LayerBase::drawWithOpenGL(const Region& clip, const Texture& texture) const
void LayerBase::setBufferCrop(const Rect& crop) { void LayerBase::setBufferCrop(const Rect& crop) {
if (!crop.isEmpty()) { if (!crop.isEmpty()) {
if (mBufferCrop != crop) {
mBufferCrop = crop; mBufferCrop = crop;
mFlinger->invalidateHwcGeometry();
}
} }
} }
void LayerBase::setBufferTransform(uint32_t transform) { void LayerBase::setBufferTransform(uint32_t transform) {
if (mBufferTransform != transform) {
mBufferTransform = transform; mBufferTransform = transform;
mFlinger->invalidateHwcGeometry();
}
} }
void LayerBase::dump(String8& result, char* buffer, size_t SIZE) const void LayerBase::dump(String8& result, char* buffer, size_t SIZE) const

View File

@ -465,7 +465,7 @@ void SurfaceFlinger::handleTransaction(uint32_t transactionFlags)
handleTransactionLocked(transactionFlags, ditchedLayers); handleTransactionLocked(transactionFlags, ditchedLayers);
mLastTransactionTime = systemTime() - now; mLastTransactionTime = systemTime() - now;
mDebugInTransaction = 0; mDebugInTransaction = 0;
mHwWorkListDirty = true; invalidateHwcGeometry();
// here the transaction has been committed // here the transaction has been committed
} }
@ -731,13 +731,18 @@ void SurfaceFlinger::handlePageFlip()
mWormholeRegion = screenRegion.subtract(opaqueRegion); mWormholeRegion = screenRegion.subtract(opaqueRegion);
mVisibleRegionsDirty = false; mVisibleRegionsDirty = false;
mHwWorkListDirty = true; invalidateHwcGeometry();
} }
unlockPageFlip(currentLayers); unlockPageFlip(currentLayers);
mDirtyRegion.andSelf(screenRegion); mDirtyRegion.andSelf(screenRegion);
} }
void SurfaceFlinger::invalidateHwcGeometry()
{
mHwWorkListDirty = true;
}
bool SurfaceFlinger::lockPageFlip(const LayerVector& currentLayers) bool SurfaceFlinger::lockPageFlip(const LayerVector& currentLayers)
{ {
bool recomputeVisibleRegions = false; bool recomputeVisibleRegions = false;
@ -1591,7 +1596,7 @@ status_t SurfaceFlinger::onTransact(
case 1008: // toggle use of hw composer case 1008: // toggle use of hw composer
n = data.readInt32(); n = data.readInt32();
mDebugDisableHWC = n ? 1 : 0; mDebugDisableHWC = n ? 1 : 0;
mHwWorkListDirty = true; invalidateHwcGeometry();
// fall-through... // fall-through...
case 1004:{ // repaint everything case 1004:{ // repaint everything
Mutex::Autolock _l(mStateLock); Mutex::Autolock _l(mStateLock);

View File

@ -225,6 +225,7 @@ public:
status_t removeLayer(const sp<LayerBase>& layer); status_t removeLayer(const sp<LayerBase>& layer);
status_t addLayer(const sp<LayerBase>& layer); status_t addLayer(const sp<LayerBase>& layer);
status_t invalidateLayerVisibility(const sp<LayerBase>& layer); status_t invalidateLayerVisibility(const sp<LayerBase>& layer);
void invalidateHwcGeometry();
sp<Layer> getLayer(const sp<ISurface>& sur) const; sp<Layer> getLayer(const sp<ISurface>& sur) const;