PatchCache.h revision f7f93556c8fcc640ab5adef79d021a80a72a645a
1f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy/*
2f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * Copyright (C) 2010 The Android Open Source Project
3f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy *
4f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * Licensed under the Apache License, Version 2.0 (the "License");
5f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * you may not use this file except in compliance with the License.
6f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * You may obtain a copy of the License at
7f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy *
8f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy *      http://www.apache.org/licenses/LICENSE-2.0
9f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy *
10f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * Unless required by applicable law or agreed to in writing, software
11f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * distributed under the License is distributed on an "AS IS" BASIS,
12f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * See the License for the specific language governing permissions and
14f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy * limitations under the License.
15f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy */
16f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
17f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#ifndef ANDROID_UI_PATCH_CACHE_H
18f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#define ANDROID_UI_PATCH_CACHE_H
19f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
20f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#include "Patch.h"
21f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#include "GenerationCache.h"
22f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
23f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guynamespace android {
24f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guynamespace uirenderer {
25f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
26f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy///////////////////////////////////////////////////////////////////////////////
27f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy// Defines
28f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy///////////////////////////////////////////////////////////////////////////////
29f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
30f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy// Debug
31f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#define DEBUG_PATCHES 0
32f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
33f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy// Debug
34f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#if DEBUG_PATCHES
35f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy    #define PATCH_LOGD(...) LOGD(__VA_ARGS__)
36f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#else
37f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy    #define PATCH_LOGD(...)
38f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#endif
39f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
40f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy///////////////////////////////////////////////////////////////////////////////
41f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy// Cache
42f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy///////////////////////////////////////////////////////////////////////////////
43f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
44f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guyclass PatchCache: public OnEntryRemoved<PatchDescription, Patch*> {
45f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guypublic:
46f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy    PatchCache(uint32_t maxCapacity);
47f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy    ~PatchCache();
48f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
49f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy    /**
50f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy     * Used as a callback when an entry is removed from the cache.
51f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy     * Do not invoke directly.
52f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy     */
53f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy    void operator()(PatchDescription& description, Patch*& mesh);
54f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
55f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy    Patch* get(const Res_png_9patch* patch);
56f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy    void clear();
57f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
58f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guyprivate:
59f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy    GenerationCache<PatchDescription, Patch*> mCache;
60f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy}; // class PatchCache
61f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
62f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy}; // namespace uirenderer
63f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy}; // namespace android
64f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy
65f7f93556c8fcc640ab5adef79d021a80a72a645aRomain Guy#endif // ANDROID_UI_PATCH_CACHE_H
66