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

Commit cea12ef2 authored by Marin Shalamanov's avatar Marin Shalamanov
Browse files

Implement SkiaGLRenderEngine::cleanFramebufferCache

On hotplug SF calls cleanFramebufferCache in order to
clean the existing handles to framebuffers. This CL
implements the function for SkiaGLRenderEngine and
fixes a bug where after each hotplug we end up with
+3 framebuffers.

Fixes: 182578852
Test: manually flash build, hotplug and call
      adb shell dumpsys SurfaceFlinger | grep Framebuffer
      to verify that only 3 framebuffers are present

Change-Id: I2a0d1ab6005e3c7a994f8c8c0eeec79afc96d109
parent 06c667b0
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -293,11 +293,9 @@ SkiaGLRenderEngine::SkiaGLRenderEngine(const RenderEngineCreationArgs& args, EGL
}

SkiaGLRenderEngine::~SkiaGLRenderEngine() {
    std::lock_guard<std::mutex> lock(mRenderingMutex);
    mRuntimeEffects.clear();
    mProtectedTextureCache.clear();
    mTextureCache.clear();
    cleanFramebufferCache();

    std::lock_guard<std::mutex> lock(mRenderingMutex);
    if (mBlurFilter) {
        delete mBlurFilter;
    }
@@ -1130,7 +1128,14 @@ EGLSurface SkiaGLRenderEngine::createPlaceholderEglPbufferSurface(EGLDisplay dis
    return eglCreatePbufferSurface(display, placeholderConfig, attributes.data());
}

void SkiaGLRenderEngine::cleanFramebufferCache() {}
void SkiaGLRenderEngine::cleanFramebufferCache() {
    // TODO(b/180767535) Remove this method and use b/180767535 instead, which would allow
    // SF to control texture lifecycle more tightly rather than through custom hooks into RE.
    std::lock_guard<std::mutex> lock(mRenderingMutex);
    mRuntimeEffects.clear();
    mProtectedTextureCache.clear();
    mTextureCache.clear();
}

int SkiaGLRenderEngine::getContextPriority() {
    int value;