Merge "Revert "Delete RenderProxy off of the cleaner thread"" into sc-dev
This commit is contained in:
@@ -247,7 +247,7 @@ static jlong android_view_ThreadedRenderer_createProxy(JNIEnv* env, jobject claz
|
|||||||
static void android_view_ThreadedRenderer_deleteProxy(JNIEnv* env, jobject clazz,
|
static void android_view_ThreadedRenderer_deleteProxy(JNIEnv* env, jobject clazz,
|
||||||
jlong proxyPtr) {
|
jlong proxyPtr) {
|
||||||
RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr);
|
RenderProxy* proxy = reinterpret_cast<RenderProxy*>(proxyPtr);
|
||||||
RenderProxy::asyncDelete(proxy);
|
delete proxy;
|
||||||
}
|
}
|
||||||
|
|
||||||
static jboolean android_view_ThreadedRenderer_loadSystemProperties(JNIEnv* env, jobject clazz,
|
static jboolean android_view_ThreadedRenderer_loadSystemProperties(JNIEnv* env, jobject clazz,
|
||||||
|
|||||||
@@ -26,7 +26,6 @@
|
|||||||
#include "renderthread/CanvasContext.h"
|
#include "renderthread/CanvasContext.h"
|
||||||
#include "renderthread/RenderTask.h"
|
#include "renderthread/RenderTask.h"
|
||||||
#include "renderthread/RenderThread.h"
|
#include "renderthread/RenderThread.h"
|
||||||
#include "thread/CommonPool.h"
|
|
||||||
#include "utils/Macros.h"
|
#include "utils/Macros.h"
|
||||||
#include "utils/TimeUtils.h"
|
#include "utils/TimeUtils.h"
|
||||||
|
|
||||||
@@ -43,17 +42,6 @@ RenderProxy::RenderProxy(bool translucent, RenderNode* rootRenderNode,
|
|||||||
mDrawFrameTask.setContext(&mRenderThread, mContext, rootRenderNode);
|
mDrawFrameTask.setContext(&mRenderThread, mContext, rootRenderNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderProxy::asyncDelete(RenderProxy* proxy) {
|
|
||||||
if (!proxy) return;
|
|
||||||
|
|
||||||
if (proxy->mContext) {
|
|
||||||
// Use the common pool because ~RenderProxy blocks on calling into RenderThread
|
|
||||||
CommonPool::post([proxy]() { delete proxy; });
|
|
||||||
} else {
|
|
||||||
delete proxy;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RenderProxy::~RenderProxy() {
|
RenderProxy::~RenderProxy() {
|
||||||
destroyContext();
|
destroyContext();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,14 +62,10 @@ enum {
|
|||||||
* references RenderProxy fields. This is safe as RenderProxy cannot
|
* references RenderProxy fields. This is safe as RenderProxy cannot
|
||||||
* be deleted if it is blocked inside a call.
|
* be deleted if it is blocked inside a call.
|
||||||
*/
|
*/
|
||||||
class RenderProxy final {
|
class RenderProxy {
|
||||||
public:
|
public:
|
||||||
RenderProxy(bool opaque, RenderNode* rootNode, IContextFactory* contextFactory);
|
RenderProxy(bool opaque, RenderNode* rootNode, IContextFactory* contextFactory);
|
||||||
~RenderProxy();
|
virtual ~RenderProxy();
|
||||||
|
|
||||||
// Schedules a delete of the RenderProxy at a later date. Avoids blocking the current thread
|
|
||||||
// on destruction which ~RenderProxy does by default.
|
|
||||||
static void asyncDelete(RenderProxy*);
|
|
||||||
|
|
||||||
// Won't take effect until next EGLSurface creation
|
// Won't take effect until next EGLSurface creation
|
||||||
void setSwapBehavior(SwapBehavior swapBehavior);
|
void setSwapBehavior(SwapBehavior swapBehavior);
|
||||||
|
|||||||
Reference in New Issue
Block a user