mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-09 04:39:03 +02:00
Bug 711333 - Fix race condition when moving and updating textures. r=kats
This commit is contained in:
parent
afc84c287e
commit
17740715b0
1 changed files with 23 additions and 23 deletions
|
|
@ -180,22 +180,20 @@ public class GeckoSoftwareLayerClient extends LayerClient implements GeckoEventL
|
||||||
mGeckoViewport.setSize(viewportSize);
|
mGeckoViewport.setSize(viewportSize);
|
||||||
|
|
||||||
LayerController controller = getLayerController();
|
LayerController controller = getLayerController();
|
||||||
synchronized (controller) {
|
PointF displayportOrigin = mGeckoViewport.getDisplayportOrigin();
|
||||||
PointF displayportOrigin = mGeckoViewport.getDisplayportOrigin();
|
mTileLayer.setOrigin(PointUtils.round(displayportOrigin));
|
||||||
mTileLayer.setOrigin(PointUtils.round(displayportOrigin));
|
mTileLayer.setResolution(mGeckoViewport.getZoomFactor());
|
||||||
mTileLayer.setResolution(mGeckoViewport.getZoomFactor());
|
|
||||||
|
|
||||||
if (onlyUpdatePageSize) {
|
if (onlyUpdatePageSize) {
|
||||||
// Don't adjust page size when zooming unless zoom levels are
|
// Don't adjust page size when zooming unless zoom levels are
|
||||||
// approximately equal.
|
// approximately equal.
|
||||||
if (FloatUtils.fuzzyEquals(controller.getZoomFactor(),
|
if (FloatUtils.fuzzyEquals(controller.getZoomFactor(),
|
||||||
mGeckoViewport.getZoomFactor()))
|
mGeckoViewport.getZoomFactor()))
|
||||||
controller.setPageSize(mGeckoViewport.getPageSize());
|
controller.setPageSize(mGeckoViewport.getPageSize());
|
||||||
} else {
|
} else {
|
||||||
Log.d(LOGTAG, "Received viewport update from gecko");
|
Log.d(LOGTAG, "Received viewport update from gecko");
|
||||||
controller.setViewportMetrics(mGeckoViewport);
|
controller.setViewportMetrics(mGeckoViewport);
|
||||||
controller.abortPanZoomAnimation();
|
controller.abortPanZoomAnimation();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
Log.e(LOGTAG, "Bad viewport description: " + viewportDescription);
|
Log.e(LOGTAG, "Bad viewport description: " + viewportDescription);
|
||||||
|
|
@ -208,15 +206,17 @@ public class GeckoSoftwareLayerClient extends LayerClient implements GeckoEventL
|
||||||
* a little more JNI magic.
|
* a little more JNI magic.
|
||||||
*/
|
*/
|
||||||
public void endDrawing(int x, int y, int width, int height, String metadata) {
|
public void endDrawing(int x, int y, int width, int height, String metadata) {
|
||||||
try {
|
synchronized (getLayerController()) {
|
||||||
updateViewport(metadata, !mUpdateViewportOnEndDraw);
|
try {
|
||||||
mUpdateViewportOnEndDraw = false;
|
updateViewport(metadata, !mUpdateViewportOnEndDraw);
|
||||||
Rect rect = new Rect(x, y, x + width, y + height);
|
mUpdateViewportOnEndDraw = false;
|
||||||
|
Rect rect = new Rect(x, y, x + width, y + height);
|
||||||
|
|
||||||
if (mTileLayer instanceof SingleTileLayer)
|
if (mTileLayer instanceof SingleTileLayer)
|
||||||
((SingleTileLayer)mTileLayer).invalidate(rect);
|
((SingleTileLayer)mTileLayer).invalidate(rect);
|
||||||
} finally {
|
} finally {
|
||||||
endTransaction(mTileLayer);
|
endTransaction(mTileLayer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue