am 05cec9d1: improve resize transactions

* commit '05cec9d1275fd939c2d1aec235dca2bdb8edef63':
  improve resize transactions
This commit is contained in:
Mathias Agopian 2012-05-29 19:50:55 -07:00 committed by Android Git Automerger
commit f67148eccd
3 changed files with 10 additions and 8 deletions

View File

@ -428,8 +428,8 @@ uint32_t Layer::doTransaction(uint32_t flags)
const Layer::State& front(drawingState());
const Layer::State& temp(currentState());
const bool sizeChanged = (front.requested.w != temp.requested.w) ||
(front.requested.h != temp.requested.h);
const bool sizeChanged = (temp.requested.w != front.active.w) ||
(temp.requested.h != front.active.h);
if (sizeChanged) {
// the size changed, we need to ask our client to request a new buffer
@ -472,8 +472,7 @@ uint32_t Layer::doTransaction(uint32_t flags)
if (!isFixedSize()) {
// this will make sure LayerBase::doTransaction doesn't update
// the drawing state's geometry
Layer::State& editDraw(mDrawingState);
editDraw.requested = temp.requested;
flags |= eDontUpdateGeometryState;
}
// record the new size, form this point on, when the client request

View File

@ -201,12 +201,14 @@ uint32_t LayerBase::doTransaction(uint32_t flags)
const Layer::State& front(drawingState());
const Layer::State& temp(currentState());
if (front.requested != temp.requested) {
// geometry of the layer has changed, set the active geometry
// to the requested geometry.
// always set active to requested, unless we're asked not to
// this is used by Layer, which special cases resizes.
if (flags & eDontUpdateGeometryState) {
} else {
Layer::State& editTemp(currentState());
editTemp.active = temp.requested;
}
if (front.active != temp.active) {
// invalidate and recompute the visible regions if needed
flags |= Layer::eVisibleRegion;

View File

@ -227,7 +227,8 @@ public:
enum { // flags for doTransaction()
eVisibleRegion = 0x00000002,
eDontUpdateGeometryState = 0x00000001,
eVisibleRegion = 0x00000002,
};