1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/layout/base/MaskLayerImageCache.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,60 @@ 1.4 +/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- 1.5 + * This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +#include "MaskLayerImageCache.h" 1.10 +#include "ImageContainer.h" 1.11 + 1.12 +using namespace mozilla::layers; 1.13 + 1.14 +namespace mozilla { 1.15 + 1.16 +MaskLayerImageCache::MaskLayerImageCache() 1.17 +{ 1.18 + MOZ_COUNT_CTOR(MaskLayerImageCache); 1.19 +} 1.20 +MaskLayerImageCache::~MaskLayerImageCache() 1.21 +{ 1.22 + MOZ_COUNT_DTOR(MaskLayerImageCache); 1.23 +} 1.24 + 1.25 + 1.26 +/* static */ PLDHashOperator 1.27 +MaskLayerImageCache::SweepFunc(MaskLayerImageEntry* aEntry, 1.28 + void* aUserArg) 1.29 +{ 1.30 + const MaskLayerImageCache::MaskLayerImageKey* key = aEntry->mKey; 1.31 + 1.32 + if (key->mLayerCount == 0) { 1.33 + return PL_DHASH_REMOVE; 1.34 + } 1.35 + 1.36 + return PL_DHASH_NEXT; 1.37 +} 1.38 + 1.39 +void 1.40 +MaskLayerImageCache::Sweep() 1.41 +{ 1.42 + mMaskImageContainers.EnumerateEntries(SweepFunc, nullptr); 1.43 +} 1.44 + 1.45 +ImageContainer* 1.46 +MaskLayerImageCache::FindImageFor(const MaskLayerImageKey** aKey) 1.47 +{ 1.48 + if (MaskLayerImageEntry* entry = mMaskImageContainers.GetEntry(**aKey)) { 1.49 + *aKey = entry->mKey.get(); 1.50 + return entry->mContainer; 1.51 + } 1.52 + 1.53 + return nullptr; 1.54 +} 1.55 + 1.56 +void 1.57 +MaskLayerImageCache::PutImage(const MaskLayerImageKey* aKey, ImageContainer* aContainer) 1.58 +{ 1.59 + MaskLayerImageEntry* entry = mMaskImageContainers.PutEntry(*aKey); 1.60 + entry->mContainer = aContainer; 1.61 +} 1.62 + 1.63 +}