From f1a2862e654482bd0f13a4cf3670b454353b8633 Mon Sep 17 00:00:00 2001 From: Paul Rouget Date: Sat, 11 Aug 2018 14:25:09 +0800 Subject: [PATCH 1/3] Add asset to AAR --- support/android/apk/servoapp/build.gradle | 1 - support/android/apk/servoview/build.gradle | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/support/android/apk/servoapp/build.gradle b/support/android/apk/servoapp/build.gradle index 45b3f57db46..7355fc01851 100644 --- a/support/android/apk/servoapp/build.gradle +++ b/support/android/apk/servoapp/build.gradle @@ -48,7 +48,6 @@ android { sourceSets { main { java.srcDirs = ['src/main/java'] - assets.srcDirs = ['../../../../resources'] } } diff --git a/support/android/apk/servoview/build.gradle b/support/android/apk/servoview/build.gradle index ed442ee97c8..cf227e6a52f 100644 --- a/support/android/apk/servoview/build.gradle +++ b/support/android/apk/servoview/build.gradle @@ -110,6 +110,9 @@ android { } sourceSets { + main { + assets.srcDirs = ['../../../../resources'] + } armDebug { jniLibs.srcDirs = [getJniLibsPath(true, 'arm')] } From 927704b8a38eae8683142d71d7c6fdc0250cd203 Mon Sep 17 00:00:00 2001 From: Paul Rouget Date: Sat, 11 Aug 2018 14:25:57 +0800 Subject: [PATCH 2/3] fix mGLLooperHandler null ref --- .../src/main/java/com/mozilla/servoview/ServoSurface.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoSurface.java b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoSurface.java index 82d5a55238d..7e5af252d38 100644 --- a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoSurface.java +++ b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoSurface.java @@ -1,3 +1,8 @@ +/* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + package com.mozilla.servoview; import android.annotation.SuppressLint; @@ -194,13 +199,14 @@ public class ServoSurface { final boolean showLogs = true; String uri = mInitialUri == null ? null : mInitialUri.toString(); - mServo = new Servo(this, surface, mClient, mActivity, mServoArgs, uri, mWidth, mHeight, showLogs); mGLLooperHandler = new Handler() { public void handleMessage(Message msg) { } }; + mServo = new Servo(this, surface, mClient, mActivity, mServoArgs, uri, mWidth, mHeight, showLogs); + Looper.loop(); } } From b16b0b4a15dea917d8d03951db15b3ff01775217 Mon Sep 17 00:00:00 2001 From: Paul Rouget Date: Sat, 11 Aug 2018 16:53:32 +0800 Subject: [PATCH 3/3] Execute callbacks in proper threads --- .../src/main/java/com/mozilla/servoview/Servo.java | 10 ++++++---- .../main/java/com/mozilla/servoview/ServoSurface.java | 9 +++++---- .../src/main/java/com/mozilla/servoview/ServoView.java | 2 ++ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/Servo.java b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/Servo.java index 3f07dbb50ac..268669e5c45 100644 --- a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/Servo.java +++ b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/Servo.java @@ -126,15 +126,17 @@ public class Servo { } public void flush() { - mRunCallback.inUIThread(() -> mGfxCb.flushGLBuffers()); + // Up to the callback to execute this in the right thread + mGfxCb.flushGLBuffers(); } public void makeCurrent() { - mRunCallback.inUIThread(() -> mGfxCb.makeCurrent()); + // Up to the callback to execute this in the right thread + mGfxCb.makeCurrent(); } public void onAnimatingChanged(boolean animating) { - mRunCallback.inUIThread(() -> mGfxCb.animationStateChanged(animating)); + mRunCallback.inGLThread(() -> mGfxCb.animationStateChanged(animating)); } public void onLoadStarted() { @@ -165,7 +167,7 @@ public class Servo { stream.close(); return bytes; } catch (IOException e) { - Log.e(LOGTAG, e.getMessage()); + Log.e(LOGTAG, "readfile error: " + e.getMessage()); return null; } } diff --git a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoSurface.java b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoSurface.java index 7e5af252d38..b2848e764fc 100644 --- a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoSurface.java +++ b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoSurface.java @@ -28,6 +28,7 @@ import static android.opengl.EGL14.EGL_CONTEXT_CLIENT_VERSION; import static android.opengl.EGL14.EGL_OPENGL_ES2_BIT; public class ServoSurface { + private static final String LOGTAG = "ServoSurface"; private final GLThread mGLThread; private final Handler mMainLooperHandler; private Handler mGLLooperHandler; @@ -113,8 +114,6 @@ public class ServoSurface { } static class GLSurface implements GfxCallbacks { - private static final String LOGTAG = "ServoSurface"; - private EGLConfig[] mEGLConfigs; private EGLDisplay mEglDisplay; private EGLContext mEglContext; @@ -160,7 +159,7 @@ public class ServoSurface { throw new RuntimeException("Error: createWindowSurface() Failed " + GLUtils.getEGLErrorString(glError)); } - flushGLBuffers(); + makeCurrent(); } @@ -205,7 +204,9 @@ public class ServoSurface { } }; - mServo = new Servo(this, surface, mClient, mActivity, mServoArgs, uri, mWidth, mHeight, showLogs); + inUIThread(() -> { + mServo = new Servo(this, surface, mClient, mActivity, mServoArgs, uri, mWidth, mHeight, showLogs); + }); Looper.loop(); } diff --git a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoView.java b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoView.java index 9999568a2a3..7385b8a29e1 100644 --- a/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoView.java +++ b/support/android/apk/servoview/src/main/java/com/mozilla/servoview/ServoView.java @@ -95,7 +95,9 @@ public class ServoView extends GLSurfaceView } public void flushGLBuffers() { + inUIThread(() -> { requestRender(); + }); } // Scroll and click