Flutter Engine
The Flutter Engine
GrTextureProxyCacheAccess.h
Go to the documentation of this file.
1/*
2 * Copyright 2017 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef GrTextureProxyCacheAccess_DEFINED
9#define GrTextureProxyCacheAccess_DEFINED
10
12
13/**
14 * This class allows GrResourceCache increased privileged access to GrTextureProxy objects.
15 */
17private:
18 void setUniqueKey(GrProxyProvider* proxyProvider, const skgpu::UniqueKey& key) {
19 fTextureProxy->setUniqueKey(proxyProvider, key);
20 }
21
22 void clearUniqueKey() {
23 fTextureProxy->clearUniqueKey();
24 }
25
26 explicit CacheAccess(GrTextureProxy* textureProxy) : fTextureProxy(textureProxy) {}
27 CacheAccess& operator=(const CacheAccess&) = delete;
28
29 // No taking addresses of this type.
30 const CacheAccess* operator&() const;
31 CacheAccess* operator&();
32
33 GrTextureProxy* fTextureProxy;
34
35 friend class GrTextureProxy; // to construct/copy this type.
36 friend class GrProxyProvider; // to use this type
37};
38
40
41inline const GrTextureProxy::CacheAccess GrTextureProxy::cacheAccess() const { // NOLINT(readability-const-return-type)
42 return CacheAccess(const_cast<GrTextureProxy*>(this));
43}
44
45#endif