12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- /*
- * Copyright 2017 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #ifndef GrTextureProxyCacheAccess_DEFINED
- #define GrTextureProxyCacheAccess_DEFINED
- #include "src/gpu/GrTextureProxy.h"
- /**
- * This class allows GrResourceCache increased privileged access to GrTextureProxy objects.
- */
- class GrTextureProxy::CacheAccess {
- private:
- void setUniqueKey(GrProxyProvider* proxyProvider, const GrUniqueKey& key) {
- fTextureProxy->setUniqueKey(proxyProvider, key);
- }
- void clearUniqueKey() {
- fTextureProxy->clearUniqueKey();
- }
- explicit CacheAccess(GrTextureProxy* textureProxy) : fTextureProxy(textureProxy) {}
- CacheAccess(const CacheAccess&) {} // unimpl
- CacheAccess& operator=(const CacheAccess&); // unimpl
- // No taking addresses of this type.
- const CacheAccess* operator&() const;
- CacheAccess* operator&();
- GrTextureProxy* fTextureProxy;
- friend class GrTextureProxy; // to construct/copy this type.
- friend class GrProxyProvider; // to use this type
- };
- inline GrTextureProxy::CacheAccess GrTextureProxy::cacheAccess() { return CacheAccess(this); }
- inline const GrTextureProxy::CacheAccess GrTextureProxy::cacheAccess() const {
- return CacheAccess(const_cast<GrTextureProxy*>(this));
- }
- #endif
|