Merge "SurfaceView: Synchronize destframe updates with SurfaceView size changes" into sc-dev am: 40ddf958e6
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15363651 Change-Id: If59676e4adbb8088133186b4d6a67863d2e662c4
This commit is contained in:
@@ -1242,7 +1242,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall
|
||||
mBlastSurfaceControl.setTransformHint(mTransformHint);
|
||||
if (mBlastBufferQueue != null) {
|
||||
mBlastBufferQueue.update(mBlastSurfaceControl, mSurfaceWidth, mSurfaceHeight,
|
||||
mFormat);
|
||||
mFormat, transaction);
|
||||
}
|
||||
} else {
|
||||
transaction.setBufferSize(mSurfaceControl, mSurfaceWidth, mSurfaceHeight);
|
||||
|
||||
@@ -105,9 +105,11 @@ static void nativeSetNextTransaction(JNIEnv* env, jclass clazz, jlong ptr, jlong
|
||||
}
|
||||
|
||||
static void nativeUpdate(JNIEnv* env, jclass clazz, jlong ptr, jlong surfaceControl, jlong width,
|
||||
jlong height, jint format) {
|
||||
jlong height, jint format, jlong transactionPtr) {
|
||||
sp<BLASTBufferQueue> queue = reinterpret_cast<BLASTBufferQueue*>(ptr);
|
||||
queue->update(reinterpret_cast<SurfaceControl*>(surfaceControl), width, height, format);
|
||||
auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionPtr);
|
||||
queue->update(reinterpret_cast<SurfaceControl*>(surfaceControl), width, height, format,
|
||||
transaction);
|
||||
}
|
||||
|
||||
static void nativeFlushShadowQueue(JNIEnv* env, jclass clazz, jlong ptr) {
|
||||
@@ -144,7 +146,7 @@ static const JNINativeMethod gMethods[] = {
|
||||
{"nativeGetSurface", "(JZ)Landroid/view/Surface;", (void*)nativeGetSurface},
|
||||
{"nativeDestroy", "(J)V", (void*)nativeDestroy},
|
||||
{"nativeSetNextTransaction", "(JJ)V", (void*)nativeSetNextTransaction},
|
||||
{"nativeUpdate", "(JJJJI)V", (void*)nativeUpdate},
|
||||
{"nativeUpdate", "(JJJJIJ)V", (void*)nativeUpdate},
|
||||
{"nativeFlushShadowQueue", "(J)V", (void*)nativeFlushShadowQueue},
|
||||
{"nativeMergeWithNextTransaction", "(JJJ)V", (void*)nativeMergeWithNextTransaction},
|
||||
{"nativeSetTransactionCompleteCallback",
|
||||
|
||||
@@ -33,7 +33,7 @@ public final class BLASTBufferQueue {
|
||||
private static native Surface nativeGetSurface(long ptr, boolean includeSurfaceControlHandle);
|
||||
private static native void nativeSetNextTransaction(long ptr, long transactionPtr);
|
||||
private static native void nativeUpdate(long ptr, long surfaceControl, long width, long height,
|
||||
int format);
|
||||
int format, long transactionPtr);
|
||||
private static native void nativeFlushShadowQueue(long ptr);
|
||||
private static native void nativeMergeWithNextTransaction(long ptr, long transactionPtr,
|
||||
long frameNumber);
|
||||
@@ -92,9 +92,15 @@ public final class BLASTBufferQueue {
|
||||
* @param width The new width for the buffer.
|
||||
* @param height The new height for the buffer.
|
||||
* @param format The new format for the buffer.
|
||||
* @param t Adds destination frame changes to the passed in transaction.
|
||||
*/
|
||||
public void update(SurfaceControl sc, int width, int height, @PixelFormat.Format int format,
|
||||
SurfaceControl.Transaction t) {
|
||||
nativeUpdate(mNativeObject, sc.mNativeObject, width, height, format, t.mNativeObject);
|
||||
}
|
||||
|
||||
public void update(SurfaceControl sc, int width, int height, @PixelFormat.Format int format) {
|
||||
nativeUpdate(mNativeObject, sc.mNativeObject, width, height, format);
|
||||
nativeUpdate(mNativeObject, sc.mNativeObject, width, height, format, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user