Line data Source code
1 : /* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 : * This Source Code Form is subject to the terms of the Mozilla Public
3 : * License, v. 2.0. If a copy of the MPL was not distributed with this
4 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 :
6 : #include "MaskLayerImageCache.h"
7 :
8 : #include "ImageContainer.h"
9 : #include "mozilla/layers/ShadowLayers.h"
10 :
11 : using namespace mozilla::layers;
12 :
13 : namespace mozilla {
14 :
15 2 : MaskLayerImageCache::MaskLayerImageCache()
16 : {
17 2 : MOZ_COUNT_CTOR(MaskLayerImageCache);
18 2 : }
19 0 : MaskLayerImageCache::~MaskLayerImageCache()
20 : {
21 0 : MOZ_COUNT_DTOR(MaskLayerImageCache);
22 0 : }
23 :
24 : void
25 261 : MaskLayerImageCache::Sweep()
26 : {
27 261 : for (auto iter = mMaskImageContainers.Iter(); !iter.Done(); iter.Next()) {
28 0 : const MaskLayerImageCache::MaskLayerImageKey* key = iter.Get()->mKey;
29 0 : if (key->HasZeroLayerCount()) {
30 0 : iter.Remove();
31 : }
32 : }
33 261 : }
34 :
35 : ImageContainer*
36 0 : MaskLayerImageCache::FindImageFor(const MaskLayerImageKey** aKey)
37 : {
38 0 : if (MaskLayerImageEntry* entry = mMaskImageContainers.GetEntry(**aKey)) {
39 0 : *aKey = entry->mKey.get();
40 0 : return entry->mContainer;
41 : }
42 :
43 0 : return nullptr;
44 : }
45 :
46 : void
47 0 : MaskLayerImageCache::PutImage(const MaskLayerImageKey* aKey, ImageContainer* aContainer)
48 : {
49 0 : MaskLayerImageEntry* entry = mMaskImageContainers.PutEntry(*aKey);
50 0 : entry->mContainer = aContainer;
51 0 : }
52 :
53 0 : MaskLayerImageCache::MaskLayerImageKey::MaskLayerImageKey()
54 : : mRoundedClipRects()
55 0 : , mLayerCount(0)
56 : {
57 0 : MOZ_COUNT_CTOR(MaskLayerImageKey);
58 0 : }
59 :
60 0 : MaskLayerImageCache::MaskLayerImageKey::MaskLayerImageKey(const MaskLayerImageKey& aKey)
61 : : mRoundedClipRects(aKey.mRoundedClipRects)
62 0 : , mLayerCount(aKey.mLayerCount)
63 : {
64 0 : MOZ_COUNT_CTOR(MaskLayerImageKey);
65 0 : }
66 :
67 0 : MaskLayerImageCache::MaskLayerImageKey::~MaskLayerImageKey()
68 : {
69 0 : MOZ_COUNT_DTOR(MaskLayerImageKey);
70 0 : }
71 :
72 : } // namespace mozilla
|