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

Commit cbd06b6c authored by Mathias Agopian's avatar Mathias Agopian Committed by Android Git Automerger
Browse files

am 20dc79cb: am 17ef62cc: fix a possible dead-lock when clearing caches

* commit '20dc79cb':
  fix a possible dead-lock when clearing caches
parents 2458c4eb 20dc79cb
Loading
Loading
Loading
Loading
+17 −9
Original line number Diff line number Diff line
@@ -227,21 +227,29 @@ void Caches::clearGarbage() {
    textureCache.clearGarbage();
    pathCache.clearGarbage();

    Vector<DisplayList*> displayLists;
    Vector<Layer*> layers;

    { // scope for the lock
        Mutex::Autolock _l(mGarbageLock);
        displayLists = mDisplayListGarbage;
        layers = mLayerGarbage;
        mDisplayListGarbage.clear();
        mLayerGarbage.clear();
    }

    size_t count = mLayerGarbage.size();
    size_t count = displayLists.size();
    for (size_t i = 0; i < count; i++) {
        Layer* layer = mLayerGarbage.itemAt(i);
        delete layer;
        DisplayList* displayList = displayLists.itemAt(i);
        delete displayList;
    }
    mLayerGarbage.clear();

    count = mDisplayListGarbage.size();
    count = layers.size();
    for (size_t i = 0; i < count; i++) {
        DisplayList* displayList = mDisplayListGarbage.itemAt(i);
        delete displayList;
        Layer* layer = layers.itemAt(i);
        delete layer;
    }
    mDisplayListGarbage.clear();
    layers.clear();
}

void Caches::deleteLayerDeferred(Layer* layer) {