xref: /aosp_15_r20/frameworks/base/libs/hwui/LayerUpdateQueue.h (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1  /*
2   * Copyright (C) 2015 The Android Open Source Project
3   *
4   * Licensed under the Apache License, Version 2.0 (the "License");
5   * you may not use this file except in compliance with the License.
6   * You may obtain a copy of the License at
7   *
8   *      http://www.apache.org/licenses/LICENSE-2.0
9   *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  #ifndef ANDROID_HWUI_LAYER_UPDATE_QUEUE_H
18  #define ANDROID_HWUI_LAYER_UPDATE_QUEUE_H
19  
20  #include <utils/StrongPointer.h>
21  #include "Rect.h"
22  #include "RenderNode.h"
23  #include "utils/Macros.h"
24  
25  #include <unordered_map>
26  #include <vector>
27  
28  namespace android {
29  namespace uirenderer {
30  
31  class RenderNode;
32  
33  class LayerUpdateQueue {
34      PREVENT_COPY_AND_ASSIGN(LayerUpdateQueue);
35  
36  public:
37      struct Entry {
EntryEntry38          Entry(RenderNode* renderNode, const Rect& damage)
39                  : renderNode(renderNode), damage(damage) {}
40          sp<RenderNode> renderNode;
41          Rect damage;
42      };
43  
LayerUpdateQueue()44      LayerUpdateQueue() {}
45      void enqueueLayerWithDamage(RenderNode* renderNode, Rect dirty);
46      void clear();
entries()47      const std::vector<Entry>& entries() const { return mEntries; }
48  
49  private:
50      std::vector<Entry> mEntries;
51  };
52  
53  }  // namespace uirenderer
54  }  // namespace android
55  
56  #endif  // ANDROID_HWUI_LAYER_UPDATE_QUEUE_H
57