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

Commit b0a41ed3 authored by Romain Guy's avatar Romain Guy
Browse files

Prevent ANR in apps using drawPath()

Bug #10347089

If an app clears its path cache before stopping background tasks, it could
get into an infinite loop in PathCache::trim().

Change-Id: Ieb865b762e7b00aebaba0c023769c2db286a94f5
parent b746371d
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -331,6 +331,11 @@ void Caches::deleteDisplayListDeferred(DisplayList* displayList) {
void Caches::flush(FlushMode mode) {
    FLUSH_LOGD("Flushing caches (mode %d)", mode);

    // We must stop tasks before clearing caches
    if (mode > kFlushMode_Layers) {
        tasks.stop();
    }

    switch (mode) {
        case kFlushMode_Full:
            textureCache.clear();
@@ -345,7 +350,6 @@ void Caches::flush(FlushMode mode) {
            fontRenderer->flush();
            textureCache.flush();
            pathCache.clear();
            tasks.stop();
            // fall through
        case kFlushMode_Layers:
            layerCache.clear();