aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/gl/GrGLTexture.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/gl/GrGLTexture.h')
-rw-r--r--src/gpu/gl/GrGLTexture.h17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/gpu/gl/GrGLTexture.h b/src/gpu/gl/GrGLTexture.h
index b7c8716cc7..2b10be8689 100644
--- a/src/gpu/gl/GrGLTexture.h
+++ b/src/gpu/gl/GrGLTexture.h
@@ -36,7 +36,7 @@ public:
~GrGLTexture() override {
// check that invokeReleaseProc has been called (if needed)
- SkASSERT(!fReleaseProc);
+ SkASSERT(!fReleaseHelper);
}
GrBackendObject getTextureHandle() const override;
@@ -44,9 +44,8 @@ public:
void textureParamsModified() override { fTexParams.invalidate(); }
- void setRelease(ReleaseProc proc, ReleaseCtx ctx) override {
- fReleaseProc = proc;
- fReleaseCtx = ctx;
+ void setRelease(sk_sp<GrReleaseProcHelper> releaseHelper) override {
+ fReleaseHelper = std::move(releaseHelper);
}
// These functions are used to track the texture parameters associated with the texture.
@@ -90,9 +89,10 @@ protected:
private:
void invokeReleaseProc() {
- if (fReleaseProc) {
- fReleaseProc(fReleaseCtx);
- fReleaseProc = nullptr;
+ if (fReleaseHelper) {
+ // Depending on the ref count of fReleaseHelper this may or may not actually trigger the
+ // ReleaseProc to be called.
+ fReleaseHelper.reset();
}
}
@@ -104,8 +104,7 @@ private:
GrBackendObjectOwnership fTextureIDOwnership;
bool fBaseLevelHasBeenBoundToFBO = false;
- ReleaseProc fReleaseProc = nullptr;
- ReleaseCtx fReleaseCtx = nullptr;
+ sk_sp<GrReleaseProcHelper> fReleaseHelper;
typedef GrTexture INHERITED;
};