Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 255ee52d authored by Penghui.Liu's avatar Penghui.Liu Committed by MugaChi
Browse files

HWUI: Make releaseQueueOwnership thread-safety

We encountered a Skia Resource Cache SIGTRAP NE Issue, caused by deleting DeferredLayerUpdater on the wrong thread, FinalizerDaemon.

Make AutoBackendTextureRelease::releaseQueueOwnership thread-safety. Avoid multi-thread access to the Skia Resource Cache.

Bug:
Test:Manual
1.Install and Launch APK
2.Run Monkey Test
adb shell monkey -v -p com.ss.android.article.news --throttle 3000 99999

Change-Id: Icb5098e9460ce4be799db8575d9916a9910d61a1
parent 14a533a8
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -140,6 +140,13 @@ void AutoBackendTextureRelease::releaseQueueOwnership(GrDirectContext* context)
        return;
    }

    if (!RenderThread::isCurrent()) {
        // releaseQueueOwnership needs to run on RenderThread to prevent multithread calling
        // setBackendTextureState will operate skia resource cache which need single owner
        RenderThread::getInstance().queue().post([this, context]() { releaseQueueOwnership(context); });
        return;
    }

    LOG_ALWAYS_FATAL_IF(Properties::getRenderPipelineType() != RenderPipelineType::SkiaVulkan);
    if (mBackendTexture.isValid()) {
        // Passing in VK_IMAGE_LAYOUT_UNDEFINED means we keep the old layout.