Kaydet (Commit) 74eae678 authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl

android: Fold LayerController into GeckoLayerClient

Change-Id: I6a6e702e243b389f1c487b6b5390f28a4292cc74
üst daa20c9a
...@@ -6,8 +6,7 @@ import android.util.DisplayMetrics; ...@@ -6,8 +6,7 @@ import android.util.DisplayMetrics;
import android.util.Log; import android.util.Log;
import org.mozilla.gecko.gfx.GeckoLayerClient; import org.mozilla.gecko.gfx.GeckoLayerClient;
import org.mozilla.gecko.gfx.ImmutableViewportMetrics; import org.mozilla.gecko.gfx.ImmutableViewportMetrics;;
import org.mozilla.gecko.gfx.LayerController;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
...@@ -19,7 +18,6 @@ public class LOKitThread extends Thread { ...@@ -19,7 +18,6 @@ public class LOKitThread extends Thread {
private TileProvider mTileProvider; private TileProvider mTileProvider;
private ImmutableViewportMetrics mViewportMetrics; private ImmutableViewportMetrics mViewportMetrics;
private GeckoLayerClient mLayerClient; private GeckoLayerClient mLayerClient;
private LayerController mController;
public LOKitThread() { public LOKitThread() {
TileProviderFactory.initialize(); TileProviderFactory.initialize();
...@@ -47,7 +45,7 @@ public class LOKitThread extends Thread { ...@@ -47,7 +45,7 @@ public class LOKitThread extends Thread {
/** Handle the geometry change + draw. */ /** Handle the geometry change + draw. */
private void redraw() { private void redraw() {
if (mController == null || mTileProvider == null) { if (mLayerClient == null || mTileProvider == null) {
// called too early... // called too early...
return; return;
} }
...@@ -55,16 +53,16 @@ public class LOKitThread extends Thread { ...@@ -55,16 +53,16 @@ public class LOKitThread extends Thread {
draw(); draw();
RectF rect = new RectF(0, 0, mTileProvider.getPageWidth(), mTileProvider.getPageHeight()); RectF rect = new RectF(0, 0, mTileProvider.getPageWidth(), mTileProvider.getPageHeight());
mController.setPageRect(rect, rect); mLayerClient.setPageRect(rect, rect);
mController.setViewportMetrics(mController.getViewportMetrics()); mLayerClient.setViewportMetrics(mLayerClient.getViewportMetrics());
mController.setForceRedraw(); mLayerClient.setForceRedraw();
} }
/** Invalidate everything + handle the geometry change + draw. */ /** Invalidate everything + handle the geometry change + draw. */
private void refresh() { private void refresh() {
Bitmap bitmap = mTileProvider.thumbnail(1000); Bitmap bitmap = mTileProvider.thumbnail(1000);
if (bitmap != null) { if (bitmap != null) {
mApplication.getLayerController().getView().changeCheckerboardBitmap(bitmap, mTileProvider.getPageWidth(), mTileProvider.getPageHeight()); mApplication.getLayerClient().getView().changeCheckerboardBitmap(bitmap, mTileProvider.getPageWidth(), mTileProvider.getPageHeight());
} }
mLayerClient.clearAndResetlayers(); mLayerClient.clearAndResetlayers();
...@@ -83,10 +81,9 @@ public class LOKitThread extends Thread { ...@@ -83,10 +81,9 @@ public class LOKitThread extends Thread {
mApplication = LibreOfficeMainActivity.mAppContext; mApplication = LibreOfficeMainActivity.mAppContext;
} }
mController = mApplication.getLayerController();
mLayerClient = mApplication.getLayerClient(); mLayerClient = mApplication.getLayerClient();
mTileProvider = TileProviderFactory.create(mController, filename); mTileProvider = TileProviderFactory.create(mLayerClient, filename);
boolean isReady = mTileProvider.isReady(); boolean isReady = mTileProvider.isReady();
if (isReady) { if (isReady) {
mLayerClient.setTileProvider(mTileProvider); mLayerClient.setTileProvider(mTileProvider);
......
...@@ -8,8 +8,8 @@ import org.libreoffice.kit.LibreOfficeKit; ...@@ -8,8 +8,8 @@ import org.libreoffice.kit.LibreOfficeKit;
import org.libreoffice.kit.Office; import org.libreoffice.kit.Office;
import org.mozilla.gecko.gfx.BufferedCairoImage; import org.mozilla.gecko.gfx.BufferedCairoImage;
import org.mozilla.gecko.gfx.CairoImage; import org.mozilla.gecko.gfx.CairoImage;
import org.mozilla.gecko.gfx.GeckoLayerClient;
import org.mozilla.gecko.gfx.IntSize; import org.mozilla.gecko.gfx.IntSize;
import org.mozilla.gecko.gfx.LayerController;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
...@@ -18,7 +18,7 @@ public class LOKitTileProvider implements TileProvider { ...@@ -18,7 +18,7 @@ public class LOKitTileProvider implements TileProvider {
private static int TILE_SIZE = 256; private static int TILE_SIZE = 256;
private Office mOffice; private Office mOffice;
private Document mDocument; private Document mDocument;
private final LayerController mLayerController; private final GeckoLayerClient mLayerClient;
private final float mTileWidth; private final float mTileWidth;
private final float mTileHeight; private final float mTileHeight;
private final String mInputFile; private final String mInputFile;
...@@ -30,8 +30,8 @@ public class LOKitTileProvider implements TileProvider { ...@@ -30,8 +30,8 @@ public class LOKitTileProvider implements TileProvider {
private long objectCreationTime = System.currentTimeMillis(); private long objectCreationTime = System.currentTimeMillis();
public LOKitTileProvider(LayerController layerController, String input) { public LOKitTileProvider(GeckoLayerClient layerClient, String input) {
mLayerController = layerController; mLayerClient = layerClient;
mDPI = (float) LOKitShell.getDpi(); mDPI = (float) LOKitShell.getDpi();
mTileWidth = pixelToTwip(TILE_SIZE, mDPI); mTileWidth = pixelToTwip(TILE_SIZE, mDPI);
mTileHeight = pixelToTwip(TILE_SIZE, mDPI); mTileHeight = pixelToTwip(TILE_SIZE, mDPI);
......
...@@ -3,8 +3,6 @@ package org.libreoffice; ...@@ -3,8 +3,6 @@ package org.libreoffice;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.support.v4.widget.DrawerLayout; import android.support.v4.widget.DrawerLayout;
...@@ -15,14 +13,12 @@ import android.view.Menu; ...@@ -15,14 +13,12 @@ import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView; import android.widget.ListView;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import org.mozilla.gecko.ZoomConstraints; import org.mozilla.gecko.ZoomConstraints;
import org.mozilla.gecko.gfx.GeckoLayerClient; import org.mozilla.gecko.gfx.GeckoLayerClient;
import org.mozilla.gecko.gfx.LayerController;
import org.mozilla.gecko.gfx.LayerView; import org.mozilla.gecko.gfx.LayerView;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -35,7 +31,6 @@ public class LibreOfficeMainActivity extends Activity { ...@@ -35,7 +31,6 @@ public class LibreOfficeMainActivity extends Activity {
public static LibreOfficeMainActivity mAppContext; public static LibreOfficeMainActivity mAppContext;
private static LayerController mLayerController;
private static GeckoLayerClient mLayerClient; private static GeckoLayerClient mLayerClient;
private static LOKitThread sLOKitThread; private static LOKitThread sLOKitThread;
...@@ -52,10 +47,6 @@ public class LibreOfficeMainActivity extends Activity { ...@@ -52,10 +47,6 @@ public class LibreOfficeMainActivity extends Activity {
return mLayerClient; return mLayerClient;
} }
public static LayerController getLayerController() {
return mLayerController;
}
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present. // Inflate the menu; this adds items to the action bar if it is present.
...@@ -130,12 +121,11 @@ public class LibreOfficeMainActivity extends Activity { ...@@ -130,12 +121,11 @@ public class LibreOfficeMainActivity extends Activity {
sLOKitThread.clearQueue(); sLOKitThread.clearQueue();
} }
mLayerController = new LayerController(this);
mLayerController.setZoomConstraints(new ZoomConstraints(true));
mLayerClient = new GeckoLayerClient(this); mLayerClient = new GeckoLayerClient(this);
mLayerClient.setZoomConstraints(new ZoomConstraints(true));
LayerView layerView = (LayerView) findViewById(R.id.layer_view); LayerView layerView = (LayerView) findViewById(R.id.layer_view);
mLayerController.setView(layerView); mLayerClient.setView(layerView);
mLayerController.setLayerClient(mLayerClient); mLayerClient.notifyReady();
} }
@Override @Override
...@@ -167,6 +157,7 @@ public class LibreOfficeMainActivity extends Activity { ...@@ -167,6 +157,7 @@ public class LibreOfficeMainActivity extends Activity {
@Override @Override
protected void onDestroy() { protected void onDestroy() {
Log.i(LOGTAG, "onDestroy.."); Log.i(LOGTAG, "onDestroy..");
mLayerClient.destroy();
super.onDestroy(); super.onDestroy();
} }
......
...@@ -4,17 +4,17 @@ import android.graphics.Bitmap; ...@@ -4,17 +4,17 @@ import android.graphics.Bitmap;
import org.mozilla.gecko.gfx.BufferedCairoImage; import org.mozilla.gecko.gfx.BufferedCairoImage;
import org.mozilla.gecko.gfx.CairoImage; import org.mozilla.gecko.gfx.CairoImage;
import org.mozilla.gecko.gfx.GeckoLayerClient;
import org.mozilla.gecko.gfx.IntSize; import org.mozilla.gecko.gfx.IntSize;
import org.mozilla.gecko.gfx.LayerController;
public class MockTileProvider implements TileProvider { public class MockTileProvider implements TileProvider {
private static final int TILE_SIZE = 256; private static final int TILE_SIZE = 256;
private final LayerController layerController; private final GeckoLayerClient mLayerClient;
private final String inputFile; private final String inputFile;
public MockTileProvider(LayerController layerController, String inputFile) { public MockTileProvider(GeckoLayerClient layerClient, String input) {
this.layerController = layerController; mLayerClient = layerClient;
this.inputFile = inputFile; this.inputFile = input;
for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
String partName = "Part " + i; String partName = "Part " + i;
...@@ -52,7 +52,7 @@ public class MockTileProvider implements TileProvider { ...@@ -52,7 +52,7 @@ public class MockTileProvider implements TileProvider {
tileNumber += 1; // 0 to 1 based numbering tileNumber += 1; // 0 to 1 based numbering
String imageName = "d" + tileNumber; String imageName = "d" + tileNumber;
Bitmap bitmap = layerController.getView().getDrawable(imageName); Bitmap bitmap = mLayerClient.getView().getDrawable(imageName);
CairoImage image = new BufferedCairoImage(bitmap); CairoImage image = new BufferedCairoImage(bitmap);
...@@ -61,7 +61,7 @@ public class MockTileProvider implements TileProvider { ...@@ -61,7 +61,7 @@ public class MockTileProvider implements TileProvider {
@Override @Override
public Bitmap thumbnail(int size) { public Bitmap thumbnail(int size) {
return layerController.getView().getDrawable("dummy_page"); return mLayerClient.getView().getDrawable("dummy_page");
} }
@Override @Override
......
...@@ -2,7 +2,7 @@ package org.libreoffice; ...@@ -2,7 +2,7 @@ package org.libreoffice;
import org.libreoffice.kit.LibreOfficeKit; import org.libreoffice.kit.LibreOfficeKit;
import org.mozilla.gecko.gfx.LayerController; import org.mozilla.gecko.gfx.GeckoLayerClient;
public class TileProviderFactory { public class TileProviderFactory {
private static TileProviderID currentTileProvider = TileProviderID.LOKIT; private static TileProviderID currentTileProvider = TileProviderID.LOKIT;
...@@ -17,11 +17,11 @@ public class TileProviderFactory { ...@@ -17,11 +17,11 @@ public class TileProviderFactory {
} }
} }
public static TileProvider create(LayerController layerController, String filename) { public static TileProvider create(GeckoLayerClient layerClient, String filename) {
if (currentTileProvider == TileProviderID.LOKIT) { if (currentTileProvider == TileProviderID.LOKIT) {
return new LOKitTileProvider(layerController, filename); return new LOKitTileProvider(layerClient, filename);
} else { } else {
return new MockTileProvider(layerController, filename); return new MockTileProvider(layerClient, filename);
} }
} }
......
...@@ -158,8 +158,6 @@ public class LayerRenderer implements GLSurfaceView.Renderer { ...@@ -158,8 +158,6 @@ public class LayerRenderer implements GLSurfaceView.Renderer {
public LayerRenderer(LayerView view) { public LayerRenderer(LayerView view) {
mView = view; mView = view;
LayerController controller = view.getController();
CairoImage backgroundImage = new BufferedCairoImage(view.getBackgroundPattern()); CairoImage backgroundImage = new BufferedCairoImage(view.getBackgroundPattern());
mBackgroundLayer = new SingleTileLayer(true, backgroundImage); mBackgroundLayer = new SingleTileLayer(true, backgroundImage);
...@@ -283,8 +281,8 @@ public class LayerRenderer implements GLSurfaceView.Renderer { ...@@ -283,8 +281,8 @@ public class LayerRenderer implements GLSurfaceView.Renderer {
* Called whenever a new frame is about to be drawn. * Called whenever a new frame is about to be drawn.
*/ */
public void onDrawFrame(GL10 gl) { public void onDrawFrame(GL10 gl) {
Frame frame = createFrame(mView.getController().getViewportMetrics()); Frame frame = createFrame(mView.getLayerClient().getViewportMetrics());
synchronized (mView.getController()) { synchronized (mView.getLayerClient()) {
frame.beginDrawing(); frame.beginDrawing();
frame.drawBackground(); frame.drawBackground();
frame.drawRootLayer(); frame.drawRootLayer();
...@@ -498,7 +496,7 @@ public class LayerRenderer implements GLSurfaceView.Renderer { ...@@ -498,7 +496,7 @@ public class LayerRenderer implements GLSurfaceView.Renderer {
mUpdated = true; mUpdated = true;
Layer rootLayer = mView.getController().getRoot(); Layer rootLayer = mView.getLayerClient().getRoot();
if (!mPageContext.fuzzyEquals(mLastPageContext)) { if (!mPageContext.fuzzyEquals(mLastPageContext)) {
// the viewport or page changed, so show the scrollbars again // the viewport or page changed, so show the scrollbars again
...@@ -571,7 +569,7 @@ public class LayerRenderer implements GLSurfaceView.Renderer { ...@@ -571,7 +569,7 @@ public class LayerRenderer implements GLSurfaceView.Renderer {
GLES20.glDisable(GLES20.GL_SCISSOR_TEST); GLES20.glDisable(GLES20.GL_SCISSOR_TEST);
/* Update background color. */ /* Update background color. */
mBackgroundColor = mView.getController().getCheckerboardColor(); mBackgroundColor = mView.getLayerClient().getCheckerboardColor();
/* Clear to the page background colour. The bits set here need to /* Clear to the page background colour. The bits set here need to
* match up with those used in gfx/layers/opengl/LayerManagerOGL.cpp. * match up with those used in gfx/layers/opengl/LayerManagerOGL.cpp.
...@@ -596,9 +594,9 @@ public class LayerRenderer implements GLSurfaceView.Renderer { ...@@ -596,9 +594,9 @@ public class LayerRenderer implements GLSurfaceView.Renderer {
/* Draw the 'checkerboard'. We use gfx.show_checkerboard_pattern to /* Draw the 'checkerboard'. We use gfx.show_checkerboard_pattern to
* determine whether to draw the screenshot layer. * determine whether to draw the screenshot layer.
*/ */
if (mView.getController().checkerboardShouldShowChecks()) { if (mView.getLayerClient().checkerboardShouldShowChecks()) {
/* Find the area the root layer will render into, to mask the checkerboard layer */ /* Find the area the root layer will render into, to mask the checkerboard layer */
Rect rootMask = getMaskForLayer(mView.getController().getRoot()); Rect rootMask = getMaskForLayer(mView.getLayerClient().getRoot());
mScreenshotLayer.setMask(rootMask); mScreenshotLayer.setMask(rootMask);
/* Scissor around the page-rect, in case the page has shrunk /* Scissor around the page-rect, in case the page has shrunk
...@@ -611,7 +609,7 @@ public class LayerRenderer implements GLSurfaceView.Renderer { ...@@ -611,7 +609,7 @@ public class LayerRenderer implements GLSurfaceView.Renderer {
// Draws the layer the client added to us. // Draws the layer the client added to us.
void drawRootLayer() { void drawRootLayer() {
Layer rootLayer = mView.getController().getRoot(); Layer rootLayer = mView.getLayerClient().getRoot();
if (rootLayer == null) { if (rootLayer == null) {
return; return;
} }
...@@ -643,7 +641,7 @@ public class LayerRenderer implements GLSurfaceView.Renderer { ...@@ -643,7 +641,7 @@ public class LayerRenderer implements GLSurfaceView.Renderer {
mHorizScrollLayer.draw(mPageContext); mHorizScrollLayer.draw(mPageContext);
/* Measure how much of the screen is checkerboarding */ /* Measure how much of the screen is checkerboarding */
Layer rootLayer = mView.getController().getRoot(); Layer rootLayer = mView.getLayerClient().getRoot();
if ((rootLayer != null) && if ((rootLayer != null) &&
(mProfileRender || PanningPerfAPI.isRecordingCheckerboard())) { (mProfileRender || PanningPerfAPI.isRecordingCheckerboard())) {
// Find out how much of the viewport area is valid // Find out how much of the viewport area is valid
......
...@@ -42,7 +42,7 @@ import java.nio.IntBuffer; ...@@ -42,7 +42,7 @@ import java.nio.IntBuffer;
public class LayerView extends FrameLayout { public class LayerView extends FrameLayout {
private static String LOGTAG = "GeckoLayerView"; private static String LOGTAG = "GeckoLayerView";
private LayerController mController; private GeckoLayerClient mLayerClient;
private TouchEventHandler mTouchEventHandler; private TouchEventHandler mTouchEventHandler;
private GLController mGLController; private GLController mGLController;
private InputConnectionHandler mInputConnectionHandler; private InputConnectionHandler mInputConnectionHandler;
...@@ -100,9 +100,9 @@ public class LayerView extends FrameLayout { ...@@ -100,9 +100,9 @@ public class LayerView extends FrameLayout {
mGLController = new GLController(this); mGLController = new GLController(this);
} }
void connect(LayerController controller) { void connect(GeckoLayerClient layerClient) {
mController = controller; mLayerClient = layerClient;
mTouchEventHandler = new TouchEventHandler(getContext(), this, mController); mTouchEventHandler = new TouchEventHandler(getContext(), this, layerClient);
mRenderer = new LayerRenderer(this); mRenderer = new LayerRenderer(this);
mInputConnectionHandler = null; mInputConnectionHandler = null;
...@@ -124,12 +124,12 @@ public class LayerView extends FrameLayout { ...@@ -124,12 +124,12 @@ public class LayerView extends FrameLayout {
return mTouchEventHandler.handleEvent(event); return mTouchEventHandler.handleEvent(event);
} }
public LayerController getController() { return mController; } public GeckoLayerClient getLayerClient() { return mLayerClient; }
public TouchEventHandler getTouchEventHandler() { return mTouchEventHandler; } public TouchEventHandler getTouchEventHandler() { return mTouchEventHandler; }
/** The LayerRenderer calls this to indicate that the window has changed size. */ /** The LayerRenderer calls this to indicate that the window has changed size. */
public void setViewportSize(IntSize size) { public void setViewportSize(IntSize size) {
mController.setViewportSize(new FloatSize(size)); mLayerClient.setViewportSize(new FloatSize(size));
} }
@Override @Override
...@@ -307,7 +307,7 @@ public class LayerView extends FrameLayout { ...@@ -307,7 +307,7 @@ public class LayerView extends FrameLayout {
/** This function is invoked by Gecko (compositor thread) via JNI; be careful when modifying signature. */ /** This function is invoked by Gecko (compositor thread) via JNI; be careful when modifying signature. */
public static GLController registerCxxCompositor() { public static GLController registerCxxCompositor() {
try { try {
LayerView layerView = LibreOfficeMainActivity.mAppContext.getLayerController().getView(); LayerView layerView = LibreOfficeMainActivity.mAppContext.getLayerClient().getView();
layerView.mListener.compositorCreated(); layerView.mListener.compositorCreated();
return layerView.getGLController(); return layerView.getGLController();
} catch (Exception e) { } catch (Exception e) {
......
...@@ -123,17 +123,17 @@ public final class TouchEventHandler { ...@@ -123,17 +123,17 @@ public final class TouchEventHandler {
// processed. (n is the absolute value of the balance.) // processed. (n is the absolute value of the balance.)
private int mProcessingBalance; private int mProcessingBalance;
TouchEventHandler(Context context, LayerView view, LayerController controller) { TouchEventHandler(Context context, LayerView view, GeckoLayerClient layerClient) {
mView = view; mView = view;
mEventQueue = new LinkedList<MotionEvent>(); mEventQueue = new LinkedList<MotionEvent>();
mGestureDetector = new GestureDetector(context, controller.getGestureListener()); mGestureDetector = new GestureDetector(context, layerClient.getGestureListener());
mScaleGestureDetector = new SimpleScaleGestureDetector(controller.getScaleGestureListener()); mScaleGestureDetector = new SimpleScaleGestureDetector(layerClient.getScaleGestureListener());
mPanZoomController = controller.getPanZoomController(); mPanZoomController = layerClient.getPanZoomController();
mListenerTimeoutProcessor = new ListenerTimeoutProcessor(); mListenerTimeoutProcessor = new ListenerTimeoutProcessor();
mDispatchEvents = true; mDispatchEvents = true;
mGestureDetector.setOnDoubleTapListener(controller.getDoubleTapListener()); mGestureDetector.setOnDoubleTapListener(layerClient.getDoubleTapListener());
} }
/* This function MUST be called on the UI thread */ /* This function MUST be called on the UI thread */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment