10b7e8245db728d127ada698be63d78b33fc6e4daChris Craik/*
20b7e8245db728d127ada698be63d78b33fc6e4daChris Craik * Copyright (C) 2015 The Android Open Source Project
30b7e8245db728d127ada698be63d78b33fc6e4daChris Craik *
40b7e8245db728d127ada698be63d78b33fc6e4daChris Craik * Licensed under the Apache License, Version 2.0 (the "License");
50b7e8245db728d127ada698be63d78b33fc6e4daChris Craik * you may not use this file except in compliance with the License.
60b7e8245db728d127ada698be63d78b33fc6e4daChris Craik * You may obtain a copy of the License at
70b7e8245db728d127ada698be63d78b33fc6e4daChris Craik *
80b7e8245db728d127ada698be63d78b33fc6e4daChris Craik *      http://www.apache.org/licenses/LICENSE-2.0
90b7e8245db728d127ada698be63d78b33fc6e4daChris Craik *
100b7e8245db728d127ada698be63d78b33fc6e4daChris Craik * Unless required by applicable law or agreed to in writing, software
110b7e8245db728d127ada698be63d78b33fc6e4daChris Craik * distributed under the License is distributed on an "AS IS" BASIS,
120b7e8245db728d127ada698be63d78b33fc6e4daChris Craik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130b7e8245db728d127ada698be63d78b33fc6e4daChris Craik * See the License for the specific language governing permissions and
140b7e8245db728d127ada698be63d78b33fc6e4daChris Craik * limitations under the License.
150b7e8245db728d127ada698be63d78b33fc6e4daChris Craik */
160b7e8245db728d127ada698be63d78b33fc6e4daChris Craik
170b7e8245db728d127ada698be63d78b33fc6e4daChris Craik#ifndef ANDROID_HWUI_LAYER_UPDATE_QUEUE_H
180b7e8245db728d127ada698be63d78b33fc6e4daChris Craik#define ANDROID_HWUI_LAYER_UPDATE_QUEUE_H
190b7e8245db728d127ada698be63d78b33fc6e4daChris Craik
200b7e8245db728d127ada698be63d78b33fc6e4daChris Craik#include "Rect.h"
210b7e8245db728d127ada698be63d78b33fc6e4daChris Craik#include "utils/Macros.h"
220b7e8245db728d127ada698be63d78b33fc6e4daChris Craik
230b7e8245db728d127ada698be63d78b33fc6e4daChris Craik#include <vector>
240b7e8245db728d127ada698be63d78b33fc6e4daChris Craik#include <unordered_map>
250b7e8245db728d127ada698be63d78b33fc6e4daChris Craik
260b7e8245db728d127ada698be63d78b33fc6e4daChris Craiknamespace android {
270b7e8245db728d127ada698be63d78b33fc6e4daChris Craiknamespace uirenderer {
280b7e8245db728d127ada698be63d78b33fc6e4daChris Craik
290b7e8245db728d127ada698be63d78b33fc6e4daChris Craikclass RenderNode;
300b7e8245db728d127ada698be63d78b33fc6e4daChris Craik
310b7e8245db728d127ada698be63d78b33fc6e4daChris Craikclass LayerUpdateQueue {
320b7e8245db728d127ada698be63d78b33fc6e4daChris Craik    PREVENT_COPY_AND_ASSIGN(LayerUpdateQueue);
330b7e8245db728d127ada698be63d78b33fc6e4daChris Craikpublic:
340b7e8245db728d127ada698be63d78b33fc6e4daChris Craik    struct Entry {
350b7e8245db728d127ada698be63d78b33fc6e4daChris Craik        Entry(RenderNode* renderNode, const Rect& damage)
360b7e8245db728d127ada698be63d78b33fc6e4daChris Craik                : renderNode(renderNode)
370b7e8245db728d127ada698be63d78b33fc6e4daChris Craik                , damage(damage) {}
380b7e8245db728d127ada698be63d78b33fc6e4daChris Craik        RenderNode* renderNode;
390b7e8245db728d127ada698be63d78b33fc6e4daChris Craik        Rect damage;
400b7e8245db728d127ada698be63d78b33fc6e4daChris Craik    };
410b7e8245db728d127ada698be63d78b33fc6e4daChris Craik
420b7e8245db728d127ada698be63d78b33fc6e4daChris Craik    LayerUpdateQueue() {}
430b7e8245db728d127ada698be63d78b33fc6e4daChris Craik    void enqueueLayerWithDamage(RenderNode* renderNode, Rect dirty);
440b7e8245db728d127ada698be63d78b33fc6e4daChris Craik    void clear();
45b250a834e433b4f483e8d8362a6fda8d6594c7b8Chris Craik    const std::vector<Entry>& entries() const { return mEntries; }
460b7e8245db728d127ada698be63d78b33fc6e4daChris Craikprivate:
470b7e8245db728d127ada698be63d78b33fc6e4daChris Craik    std::vector<Entry> mEntries;
480b7e8245db728d127ada698be63d78b33fc6e4daChris Craik};
490b7e8245db728d127ada698be63d78b33fc6e4daChris Craik
500b7e8245db728d127ada698be63d78b33fc6e4daChris Craik}; // namespace uirenderer
510b7e8245db728d127ada698be63d78b33fc6e4daChris Craik}; // namespace android
520b7e8245db728d127ada698be63d78b33fc6e4daChris Craik
530b7e8245db728d127ada698be63d78b33fc6e4daChris Craik#endif // ANDROID_HWUI_LAYER_UPDATE_QUEUE_H
54