blob: 2bd5e3db1e3788882eab72739adf9597106268fd [file] [log] [blame]
Greg Daniel4684f822018-03-08 15:27:36 -05001/*
2 * Copyright 2018 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#include "GrUninstantiateProxyTracker.h"
9
10#include "GrSurfaceProxy.h"
11#include "GrSurfaceProxyPriv.h"
12
13void GrUninstantiateProxyTracker::addProxy(GrSurfaceProxy* proxy) {
14#ifdef SK_DEBUG
15 using LazyType = GrSurfaceProxy::LazyInstantiationType;
16 SkASSERT(LazyType::kUninstantiate == proxy->priv().lazyInstantiationType());
17 for (int i = 0; i < fProxies.count(); ++i) {
Robert Phillipse4aae342018-03-14 10:26:57 -040018 SkASSERT(proxy != fProxies[i].get());
Greg Daniel4684f822018-03-08 15:27:36 -050019 }
20#endif
Robert Phillipse4aae342018-03-14 10:26:57 -040021 fProxies.push_back(sk_ref_sp(proxy));
Greg Daniel4684f822018-03-08 15:27:36 -050022}
23
24void GrUninstantiateProxyTracker::uninstantiateAllProxies() {
25 for (int i = 0; i < fProxies.count(); ++i) {
Robert Phillipse4aae342018-03-14 10:26:57 -040026 GrSurfaceProxy* proxy = fProxies[i].get();
Greg Daniel4684f822018-03-08 15:27:36 -050027 SkASSERT(proxy->priv().isSafeToUninstantiate());
28 proxy->deInstantiate();
29 }
Robert Phillipse4aae342018-03-14 10:26:57 -040030
31 fProxies.reset();
Greg Daniel4684f822018-03-08 15:27:36 -050032}