app: [Android] use simpler postInvalidate instead of Choreographer

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2021-08-29 15:47:27 +02:00
parent 45da52cee7
commit b86928ceec
2 changed files with 10 additions and 15 deletions
+5 -10
View File
@@ -12,13 +12,13 @@ import android.app.Fragment;
import android.app.FragmentManager; import android.app.FragmentManager;
import android.app.FragmentTransaction; import android.app.FragmentTransaction;
import android.content.Context; import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.Rect; import android.graphics.Rect;
import android.os.Build; import android.os.Build;
import android.text.Editable; import android.text.Editable;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.Choreographer;
import android.view.KeyCharacterMap; import android.view.KeyCharacterMap;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.MotionEvent; import android.view.MotionEvent;
@@ -40,7 +40,7 @@ import android.text.InputType;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
public final class GioView extends SurfaceView implements Choreographer.FrameCallback { public final class GioView extends SurfaceView {
private static boolean jniLoaded; private static boolean jniLoaded;
private final SurfaceHolder.Callback surfCallbacks; private final SurfaceHolder.Callback surfCallbacks;
@@ -293,13 +293,8 @@ public final class GioView extends SurfaceView implements Choreographer.FrameCal
return true; return true;
} }
void postFrameCallback() { @Override protected void onDraw(Canvas canvas) {
Choreographer.getInstance().removeFrameCallback(this); onFrameCallback(nhandle);
Choreographer.getInstance().postFrameCallback(this);
}
@Override public void doFrame(long nanos) {
onFrameCallback(nhandle, nanos);
} }
int getDensity() { int getDensity() {
@@ -344,7 +339,7 @@ public final class GioView extends SurfaceView implements Choreographer.FrameCal
static public native void onLowMemory(); static public native void onLowMemory();
static private native void onTouchEvent(long handle, int action, int pointerID, int tool, float x, float y, float scrollX, float scrollY, int buttons, long time); static private native void onTouchEvent(long handle, int action, int pointerID, int tool, float x, float y, float scrollX, float scrollY, int buttons, long time);
static private native void onKeyEvent(long handle, int code, int character, long time); static private native void onKeyEvent(long handle, int code, int character, long time);
static private native void onFrameCallback(long handle, long nanos); static private native void onFrameCallback(long handle);
static private native boolean onBack(long handle); static private native boolean onBack(long handle);
static private native void onFocusChange(long handle, boolean focus); static private native void onFocusChange(long handle, boolean focus);
+5 -5
View File
@@ -155,7 +155,7 @@ var gioView struct {
showTextInput C.jmethodID showTextInput C.jmethodID
hideTextInput C.jmethodID hideTextInput C.jmethodID
setInputHint C.jmethodID setInputHint C.jmethodID
postFrameCallback C.jmethodID postInvalidate C.jmethodID
setCursor C.jmethodID setCursor C.jmethodID
setOrientation C.jmethodID setOrientation C.jmethodID
setNavigationColor C.jmethodID setNavigationColor C.jmethodID
@@ -309,7 +309,7 @@ func Java_org_gioui_GioView_onCreateView(env *C.JNIEnv, class C.jclass, view C.j
m.showTextInput = getMethodID(env, class, "showTextInput", "()V") m.showTextInput = getMethodID(env, class, "showTextInput", "()V")
m.hideTextInput = getMethodID(env, class, "hideTextInput", "()V") m.hideTextInput = getMethodID(env, class, "hideTextInput", "()V")
m.setInputHint = getMethodID(env, class, "setInputHint", "(I)V") m.setInputHint = getMethodID(env, class, "setInputHint", "(I)V")
m.postFrameCallback = getMethodID(env, class, "postFrameCallback", "()V") m.postInvalidate = getMethodID(env, class, "postInvalidate", "()V")
m.setCursor = getMethodID(env, class, "setCursor", "(I)V") m.setCursor = getMethodID(env, class, "setCursor", "(I)V")
m.setOrientation = getMethodID(env, class, "setOrientation", "(II)V") m.setOrientation = getMethodID(env, class, "setOrientation", "(II)V")
m.setNavigationColor = getMethodID(env, class, "setNavigationColor", "(II)V") m.setNavigationColor = getMethodID(env, class, "setNavigationColor", "(II)V")
@@ -394,7 +394,7 @@ func Java_org_gioui_GioView_onConfigurationChanged(env *C.JNIEnv, class C.jclass
} }
//export Java_org_gioui_GioView_onFrameCallback //export Java_org_gioui_GioView_onFrameCallback
func Java_org_gioui_GioView_onFrameCallback(env *C.JNIEnv, class C.jclass, view C.jlong, nanos C.jlong) { func Java_org_gioui_GioView_onFrameCallback(env *C.JNIEnv, class C.jclass, view C.jlong) {
w, exist := views[view] w, exist := views[view]
if !exist { if !exist {
return return
@@ -405,7 +405,7 @@ func Java_org_gioui_GioView_onFrameCallback(env *C.JNIEnv, class C.jclass, view
anim := w.animating anim := w.animating
if anim { if anim {
runInJVM(javaVM(), func(env *C.JNIEnv) { runInJVM(javaVM(), func(env *C.JNIEnv) {
callVoidMethod(env, w.view, gioView.postFrameCallback) callVoidMethod(env, w.view, gioView.postInvalidate)
}) })
w.draw(false) w.draw(false)
} }
@@ -489,7 +489,7 @@ func (w *window) SetAnimating(anim bool) {
w.animating = anim w.animating = anim
if anim { if anim {
runInJVM(javaVM(), func(env *C.JNIEnv) { runInJVM(javaVM(), func(env *C.JNIEnv) {
callVoidMethod(env, w.view, gioView.postFrameCallback) callVoidMethod(env, w.view, gioView.postInvalidate)
}) })
} }
} }