Merge "Move allocateBuffers to RT" into pi-dev

This commit is contained in:
Jorim Jaggi
2018-07-18 21:47:59 +00:00
committed by Android (Google) Code Review
5 changed files with 20 additions and 1 deletions

View File

@@ -961,6 +961,10 @@ public final class ThreadedRenderer {
nSetDebuggingEnabled(enable); nSetDebuggingEnabled(enable);
} }
void allocateBuffers(Surface surface) {
nAllocateBuffers(mNativeProxy, surface);
}
@Override @Override
protected void finalize() throws Throwable { protected void finalize() throws Throwable {
try { try {
@@ -1251,4 +1255,5 @@ public final class ThreadedRenderer {
private static native void nSetDebuggingEnabled(boolean enabled); private static native void nSetDebuggingEnabled(boolean enabled);
private static native void nSetIsolatedProcess(boolean enabled); private static native void nSetIsolatedProcess(boolean enabled);
private static native void nSetContextPriority(int priority); private static native void nSetContextPriority(int priority);
private static native void nAllocateBuffers(long nativeProxy, Surface window);
} }

View File

@@ -2103,7 +2103,7 @@ public final class ViewRootImpl implements ViewParent,
& View.PFLAG_REQUEST_TRANSPARENT_REGIONS) == 0) { & View.PFLAG_REQUEST_TRANSPARENT_REGIONS) == 0) {
// Don't pre-allocate if transparent regions // Don't pre-allocate if transparent regions
// are requested as they may not be needed // are requested as they may not be needed
mSurface.allocateBuffers(); mAttachInfo.mThreadedRenderer.allocateBuffers(mSurface);
} }
} catch (OutOfResourcesException e) { } catch (OutOfResourcesException e) {
handleOutOfResourcesException(e); handleOutOfResourcesException(e);

View File

@@ -1060,6 +1060,13 @@ static void android_view_ThreadedRenderer_setContextPriority(JNIEnv*, jclass,
Properties::contextPriority = contextPriority; Properties::contextPriority = contextPriority;
} }
static void android_view_ThreadedRenderer_allocateBuffers(JNIEnv* env, jobject clazz,
jlong proxyPtr, jobject jsurface) {
RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr);
sp<Surface> surface = android_view_Surface_getSurface(env, jsurface);
proxy->allocateBuffers(surface);
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// FrameMetricsObserver // FrameMetricsObserver
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -1173,6 +1180,7 @@ static const JNINativeMethod gMethods[] = {
{ "nSetDebuggingEnabled", "(Z)V", (void*)android_view_ThreadedRenderer_setDebuggingEnabled }, { "nSetDebuggingEnabled", "(Z)V", (void*)android_view_ThreadedRenderer_setDebuggingEnabled },
{ "nSetIsolatedProcess", "(Z)V", (void*)android_view_ThreadedRenderer_setIsolatedProcess }, { "nSetIsolatedProcess", "(Z)V", (void*)android_view_ThreadedRenderer_setIsolatedProcess },
{ "nSetContextPriority", "(I)V", (void*)android_view_ThreadedRenderer_setContextPriority }, { "nSetContextPriority", "(I)V", (void*)android_view_ThreadedRenderer_setContextPriority },
{ "nAllocateBuffers", "(JLandroid/view/Surface;)V", (void*)android_view_ThreadedRenderer_allocateBuffers },
}; };
static JavaVM* mJvm = nullptr; static JavaVM* mJvm = nullptr;

View File

@@ -87,6 +87,11 @@ void RenderProxy::initialize(const sp<Surface>& surface) {
[ this, surf = surface ]() mutable { mContext->setSurface(std::move(surf)); }); [ this, surf = surface ]() mutable { mContext->setSurface(std::move(surf)); });
} }
void RenderProxy::allocateBuffers(const sp<Surface>& surface) {
mRenderThread.queue().post(
[ surf = surface ]() mutable { surf->allocateBuffers(); });
}
void RenderProxy::updateSurface(const sp<Surface>& surface) { void RenderProxy::updateSurface(const sp<Surface>& surface) {
mRenderThread.queue().post( mRenderThread.queue().post(
[ this, surf = surface ]() mutable { mContext->setSurface(std::move(surf)); }); [ this, surf = surface ]() mutable { mContext->setSurface(std::move(surf)); });

View File

@@ -70,6 +70,7 @@ public:
ANDROID_API void setName(const char* name); ANDROID_API void setName(const char* name);
ANDROID_API void initialize(const sp<Surface>& surface); ANDROID_API void initialize(const sp<Surface>& surface);
ANDROID_API void allocateBuffers(const sp<Surface>& surface);
ANDROID_API void updateSurface(const sp<Surface>& surface); ANDROID_API void updateSurface(const sp<Surface>& surface);
ANDROID_API bool pauseSurface(const sp<Surface>& surface); ANDROID_API bool pauseSurface(const sp<Surface>& surface);
ANDROID_API void setStopped(bool stopped); ANDROID_API void setStopped(bool stopped);