Merge backout

This commit is contained in:
Benoit Girard 2012-02-23 11:09:14 -05:00
commit 3d7c76396c
3 changed files with 36 additions and 1 deletions

View File

@ -60,7 +60,8 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GeckoLayerClient implements GeckoEventListener,
FlexibleGLSurfaceView.Listener {
FlexibleGLSurfaceView.Listener,
VirtualLayer.Listener {
private static final String LOGTAG = "GeckoLayerClient";
private LayerController mLayerController;
@ -120,6 +121,8 @@ public class GeckoLayerClient implements GeckoEventListener,
sendResizeEventIfNecessary(false);
LayerView view = layerController.getView();
view.setListener(this);
mLayerRenderer = new LayerRenderer(view);
}
@ -323,6 +326,7 @@ public class GeckoLayerClient implements GeckoEventListener,
Log.e(LOGTAG, "### Creating virtual layer");
VirtualLayer virtualLayer = new VirtualLayer();
virtualLayer.setListener(this);
virtualLayer.setSize(getBufferSize());
mLayerController.setRoot(virtualLayer);
mTileLayer = virtualLayer;
@ -492,6 +496,11 @@ public class GeckoLayerClient implements GeckoEventListener,
renderRequested();
}
/** Implementation of VirtualLayer.Listener */
public void dimensionsChanged(Point newOrigin, float newResolution) {
Log.e(LOGTAG, "### dimensionsChanged " + newOrigin + " " + newResolution);
}
/** Used by robocop for testing purposes. Not for production use! This is called via reflection by robocop. */
public void setDrawListener(DrawListener listener) {
mDrawListener = listener;

View File

@ -182,6 +182,10 @@ public abstract class Layer {
return true;
}
protected boolean dimensionChangesPending() {
return (mNewOrigin != null) || (mNewResolution != 0.0f);
}
public static class RenderContext {
public final RectF viewport;
public final FloatSize pageSize;

View File

@ -38,9 +38,16 @@
package org.mozilla.gecko.gfx;
import android.graphics.Point;
public class VirtualLayer extends Layer {
private Listener mListener;
private IntSize mSize;
public void setListener(Listener listener) {
mListener = listener;
}
@Override
public void draw(RenderContext context) {
// No-op.
@ -54,5 +61,20 @@ public class VirtualLayer extends Layer {
public void setSize(IntSize size) {
mSize = size;
}
@Override
protected boolean performUpdates(RenderContext context) {
boolean dimensionsChanged = dimensionChangesPending();
boolean result = super.performUpdates(context);
if (dimensionsChanged && mListener != null) {
mListener.dimensionsChanged(getOrigin(), getResolution());
}
return result;
}
public interface Listener {
void dimensionsChanged(Point newOrigin, float newResolution);
}
}