Merge "Move allocateBuffers to RT" into pi-dev
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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)); });
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user