sometimes SF would not process a surface resize
this would happen when a window started with size A, was resized to B and immediately resized to A. In this situation the erquested and active size would be the same, and SF would think a transaction wasn't needed. we fix this by always comparing the requested sizes. Also, make sure to set mRefreshPending once we're sure we have succesfully called updateTexImage(). Bug: 6580962 Change-Id: I2c48b4df7f05fd35c9e1d2dd82095b0f3d5a0b6a
This commit is contained in:
parent
4467bba73a
commit
4824d40a35
@ -428,8 +428,8 @@ uint32_t Layer::doTransaction(uint32_t flags)
|
||||
const Layer::State& front(drawingState());
|
||||
const Layer::State& temp(currentState());
|
||||
|
||||
const bool sizeChanged = (temp.requested.w != front.active.w) ||
|
||||
(temp.requested.h != front.active.h);
|
||||
const bool sizeChanged = (temp.requested.w != front.requested.w) ||
|
||||
(temp.requested.h != front.requested.h);
|
||||
|
||||
if (sizeChanged) {
|
||||
// the size changed, we need to ask our client to request a new buffer
|
||||
@ -516,7 +516,6 @@ void Layer::lockPageFlip(bool& recomputeVisibleRegions)
|
||||
mPostedDirtyRegion.clear();
|
||||
return;
|
||||
}
|
||||
mRefreshPending = true;
|
||||
|
||||
// Capture the old state of the layer for comparisons later
|
||||
const bool oldOpacity = isOpaque();
|
||||
@ -601,6 +600,7 @@ void Layer::lockPageFlip(bool& recomputeVisibleRegions)
|
||||
if (!isFixedSize) {
|
||||
if (front.active.w != bufWidth ||
|
||||
front.active.h != bufHeight) {
|
||||
// reject this buffer
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -624,6 +624,7 @@ void Layer::lockPageFlip(bool& recomputeVisibleRegions)
|
||||
return;
|
||||
}
|
||||
|
||||
mRefreshPending = true;
|
||||
mFrameLatencyNeeded = true;
|
||||
if (oldActiveBuffer == NULL) {
|
||||
// the first time we receive a buffer, we need to trigger a
|
||||
|
Loading…
Reference in New Issue
Block a user