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

Commit eadf0d45 authored by chaviw's avatar chaviw
Browse files

Changed mNumLayers to atomic

mNumLayers is accessed from multiple threads, binder thread when a layer
is created and main thread when a layer is destroyed. The variable
should be atomic to ensure it's thread safe.

Test: Builds and runs
Change-Id: I72962d148dfdeec8e1877b86f93cc53c8c7883a9
parent 4f17282e
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -3441,7 +3441,7 @@ status_t SurfaceFlinger::addClientLayer(const sp<Client>& client, const sp<IBind
        }

        if (mNumLayers >= MAX_LAYERS) {
            ALOGE("AddClientLayer failed, mNumLayers (%zu) >= MAX_LAYERS (%zu)", mNumLayers,
            ALOGE("AddClientLayer failed, mNumLayers (%zu) >= MAX_LAYERS (%zu)", mNumLayers.load(),
                  MAX_LAYERS);
            return NO_MEMORY;
        }
@@ -3465,7 +3465,7 @@ status_t SurfaceFlinger::addClientLayer(const sp<Client>& client, const sp<IBind
                                        mMaxGraphicBufferProducerListSize,
                                "Suspected IGBP leak: %zu IGBPs (%zu max), %zu Layers",
                                mGraphicBufferProducerList.size(),
                                mMaxGraphicBufferProducerListSize, mNumLayers);
                                mMaxGraphicBufferProducerListSize, mNumLayers.load());
        }
        mLayersAdded = true;
    }
@@ -4839,7 +4839,7 @@ void SurfaceFlinger::dumpAllLocked(const DumpArgs& args, std::string& result) co
     * Dump the visible layer list
     */
    colorizer.bold(result);
    StringAppendF(&result, "Visible layers (count = %zu)\n", mNumLayers);
    StringAppendF(&result, "Visible layers (count = %zu)\n", mNumLayers.load());
    StringAppendF(&result, "GraphicBufferProducers: %zu, max %zu\n",
                  mGraphicBufferProducerList.size(), mMaxGraphicBufferProducerListSize);
    colorizer.reset(result);
+1 −1
Original line number Diff line number Diff line
@@ -1072,7 +1072,7 @@ private:
    // Static screen stats
    bool mHasPoweredOff = false;

    size_t mNumLayers = 0;
    std::atomic<size_t> mNumLayers = 0;

    // Verify that transaction is being called by an approved process:
    // either AID_GRAPHICS or AID_SYSTEM.