Loading core/java/android/view/SurfaceControl.java +22 −1 Original line number Diff line number Diff line Loading @@ -95,6 +95,11 @@ public class SurfaceControl { IBinder displayToken, int mode); private static native void nativeDeferTransactionUntil(long nativeObject, IBinder handle, long frame); private static native void nativeDeferTransactionUntilSurface(long nativeObject, long surfaceObject, long frame); private static native void nativeReparentChildren(long nativeObject, IBinder handle); private static native void nativeSeverChildren(long nativeObject); private static native void nativeSetOverrideScalingMode(long nativeObject, int scalingMode); private static native IBinder nativeGetHandle(long nativeObject); Loading Loading @@ -418,8 +423,24 @@ public class SurfaceControl { } public void deferTransactionUntil(IBinder handle, long frame) { if (frame > 0) { nativeDeferTransactionUntil(mNativeObject, handle, frame); } } public void deferTransactionUntil(Surface barrier, long frame) { if (frame > 0) { nativeDeferTransactionUntilSurface(mNativeObject, barrier.mNativeObject, frame); } } public void reparentChildren(IBinder newParentHandle) { nativeReparentChildren(mNativeObject, newParentHandle); } public void detachChildren() { nativeSeverChildren(mNativeObject); } public void setOverrideScalingMode(int scalingMode) { checkNotReleased(); Loading core/java/android/view/SurfaceSession.java +5 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ public final class SurfaceSession { private long mNativeClient; // SurfaceComposerClient* private static native long nativeCreate(); private static native long nativeCreateScoped(long surfacePtr); private static native void nativeDestroy(long ptr); private static native void nativeKill(long ptr); Loading @@ -35,6 +36,10 @@ public final class SurfaceSession { mNativeClient = nativeCreate(); } public SurfaceSession(Surface root) { mNativeClient = nativeCreateScoped(root.mNativeObject); } /* no user serviceable parts here ... */ @Override protected void finalize() throws Throwable { Loading core/java/android/view/SurfaceView.java +184 −267 File changed.Preview size limit exceeded, changes collapsed. Show changes core/java/android/view/ViewRootImpl.java +9 −1 Original line number Diff line number Diff line Loading @@ -2632,6 +2632,14 @@ public final class ViewRootImpl implements ViewParent, } } private void onDrawFinished() { try { mWindowSession.finishDrawing(mWindow); } catch (RemoteException e) { // Have fun! } } private void performDraw() { if (mAttachInfo.mDisplayState == Display.STATE_OFF && !mReportNextDraw) { return; Loading Loading @@ -2682,7 +2690,7 @@ public final class ViewRootImpl implements ViewParent, } if (mSurfaceHolder != null && mSurface.isValid()) { SurfaceCallbackHelper sch = new SurfaceCallbackHelper(mWindowSession, mWindow); SurfaceCallbackHelper sch = new SurfaceCallbackHelper(this::onDrawFinished); SurfaceHolder.Callback callbacks[] = mSurfaceHolder.getCallbacks(); sch.dispatchSurfaceRedrawNeededAsync(mSurfaceHolder, callbacks); Loading core/java/com/android/internal/view/SurfaceCallbackHelper.java +5 −16 Original line number Diff line number Diff line Loading @@ -17,14 +17,11 @@ package com.android.internal.view; import android.os.RemoteException; import android.view.IWindow; import android.view.IWindowSession; import android.view.Surface; import android.view.SurfaceHolder; public class SurfaceCallbackHelper { IWindowSession mSession; IWindow.Stub mWindow; Runnable mRunnable; int mFinishDrawingCollected = 0; int mFinishDrawingExpected = 0; Loading @@ -37,26 +34,18 @@ public class SurfaceCallbackHelper { if (mFinishDrawingCollected < mFinishDrawingExpected) { return; } try { mSession.finishDrawing(mWindow); } catch (RemoteException e) { } mRunnable.run(); } } }; public SurfaceCallbackHelper(IWindowSession session, IWindow.Stub window) { mSession = session; mWindow = window; public SurfaceCallbackHelper(Runnable callbacksCollected) { mRunnable = callbacksCollected; } public void dispatchSurfaceRedrawNeededAsync(SurfaceHolder holder, SurfaceHolder.Callback callbacks[]) { if (callbacks == null || callbacks.length == 0) { try { mSession.finishDrawing(mWindow); } catch (RemoteException e) { } mRunnable.run(); return; } Loading Loading
core/java/android/view/SurfaceControl.java +22 −1 Original line number Diff line number Diff line Loading @@ -95,6 +95,11 @@ public class SurfaceControl { IBinder displayToken, int mode); private static native void nativeDeferTransactionUntil(long nativeObject, IBinder handle, long frame); private static native void nativeDeferTransactionUntilSurface(long nativeObject, long surfaceObject, long frame); private static native void nativeReparentChildren(long nativeObject, IBinder handle); private static native void nativeSeverChildren(long nativeObject); private static native void nativeSetOverrideScalingMode(long nativeObject, int scalingMode); private static native IBinder nativeGetHandle(long nativeObject); Loading Loading @@ -418,8 +423,24 @@ public class SurfaceControl { } public void deferTransactionUntil(IBinder handle, long frame) { if (frame > 0) { nativeDeferTransactionUntil(mNativeObject, handle, frame); } } public void deferTransactionUntil(Surface barrier, long frame) { if (frame > 0) { nativeDeferTransactionUntilSurface(mNativeObject, barrier.mNativeObject, frame); } } public void reparentChildren(IBinder newParentHandle) { nativeReparentChildren(mNativeObject, newParentHandle); } public void detachChildren() { nativeSeverChildren(mNativeObject); } public void setOverrideScalingMode(int scalingMode) { checkNotReleased(); Loading
core/java/android/view/SurfaceSession.java +5 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ public final class SurfaceSession { private long mNativeClient; // SurfaceComposerClient* private static native long nativeCreate(); private static native long nativeCreateScoped(long surfacePtr); private static native void nativeDestroy(long ptr); private static native void nativeKill(long ptr); Loading @@ -35,6 +36,10 @@ public final class SurfaceSession { mNativeClient = nativeCreate(); } public SurfaceSession(Surface root) { mNativeClient = nativeCreateScoped(root.mNativeObject); } /* no user serviceable parts here ... */ @Override protected void finalize() throws Throwable { Loading
core/java/android/view/SurfaceView.java +184 −267 File changed.Preview size limit exceeded, changes collapsed. Show changes
core/java/android/view/ViewRootImpl.java +9 −1 Original line number Diff line number Diff line Loading @@ -2632,6 +2632,14 @@ public final class ViewRootImpl implements ViewParent, } } private void onDrawFinished() { try { mWindowSession.finishDrawing(mWindow); } catch (RemoteException e) { // Have fun! } } private void performDraw() { if (mAttachInfo.mDisplayState == Display.STATE_OFF && !mReportNextDraw) { return; Loading Loading @@ -2682,7 +2690,7 @@ public final class ViewRootImpl implements ViewParent, } if (mSurfaceHolder != null && mSurface.isValid()) { SurfaceCallbackHelper sch = new SurfaceCallbackHelper(mWindowSession, mWindow); SurfaceCallbackHelper sch = new SurfaceCallbackHelper(this::onDrawFinished); SurfaceHolder.Callback callbacks[] = mSurfaceHolder.getCallbacks(); sch.dispatchSurfaceRedrawNeededAsync(mSurfaceHolder, callbacks); Loading
core/java/com/android/internal/view/SurfaceCallbackHelper.java +5 −16 Original line number Diff line number Diff line Loading @@ -17,14 +17,11 @@ package com.android.internal.view; import android.os.RemoteException; import android.view.IWindow; import android.view.IWindowSession; import android.view.Surface; import android.view.SurfaceHolder; public class SurfaceCallbackHelper { IWindowSession mSession; IWindow.Stub mWindow; Runnable mRunnable; int mFinishDrawingCollected = 0; int mFinishDrawingExpected = 0; Loading @@ -37,26 +34,18 @@ public class SurfaceCallbackHelper { if (mFinishDrawingCollected < mFinishDrawingExpected) { return; } try { mSession.finishDrawing(mWindow); } catch (RemoteException e) { } mRunnable.run(); } } }; public SurfaceCallbackHelper(IWindowSession session, IWindow.Stub window) { mSession = session; mWindow = window; public SurfaceCallbackHelper(Runnable callbacksCollected) { mRunnable = callbacksCollected; } public void dispatchSurfaceRedrawNeededAsync(SurfaceHolder holder, SurfaceHolder.Callback callbacks[]) { if (callbacks == null || callbacks.length == 0) { try { mSession.finishDrawing(mWindow); } catch (RemoteException e) { } mRunnable.run(); return; } Loading