blob: 5300ed0294737ca44d8552ffe30b25c05b6060cd [file] [log] [blame]
/*
* Copyright 2025 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkSynchronizedResourceCache_DEFINED
#define SkSynchronizedResourceCache_DEFINED
#include "include/private/base/SkDebug.h"
#include "include/private/base/SkMutex.h"
#include "src/core/SkResourceCache.h"
#include <cstddef>
class SkCachedData;
class SkSynchronizedResourceCache : public SkResourceCache {
public:
bool find(const Key& key, FindVisitor, void* context) override;
void add(Rec*, void* payload = nullptr) override;
void visitAll(Visitor, void* context) override;
size_t getTotalBytesUsed() const override;
size_t getTotalByteLimit() const override;
size_t setTotalByteLimit(size_t newLimit) override;
size_t setSingleAllocationByteLimit(size_t) override;
size_t getSingleAllocationByteLimit() const override;
size_t getEffectiveSingleAllocationByteLimit() const override;
void purgeAll() override;
DiscardableFactory discardableFactory() const override;
SkCachedData* newCachedData(size_t bytes) override;
void dump() const override;
SkSynchronizedResourceCache(DiscardableFactory);
explicit SkSynchronizedResourceCache(size_t byteLimit);
~SkSynchronizedResourceCache() override;
private:
mutable SkMutex fMutex;
};
#endif