Roll WebRTC 9745:9761, Libjingle 9742:9761
[chromium-blink-merge.git] / ui / compositor / paint_cache.h
blobb42c9c06ef7c15cea25056ce6634163ff61fbbd7
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef UI_COMPOSITOR_PAINT_CACHE_H_
6 #define UI_COMPOSITOR_PAINT_CACHE_H_
8 #include "cc/playback/drawing_display_item.h"
9 #include "ui/compositor/compositor_export.h"
11 namespace ui {
12 class PaintContext;
13 class PaintRecorder;
15 // A class that holds the output of a PaintRecorder to be reused when the
16 // object that created the PaintRecorder has not been changed/invalidated.
17 class COMPOSITOR_EXPORT PaintCache {
18 public:
19 PaintCache();
20 ~PaintCache();
22 // Returns true if the PaintCache was able to insert a previously-saved
23 // painting output into the PaintContext. If it returns false, the caller
24 // needs to do the work of painting, which can be stored into the PaintCache
25 // to be used next time.
26 bool UseCache(const PaintContext& context);
28 private:
29 // Only PaintRecorder can modify these.
30 friend PaintRecorder;
32 void SetCache(const cc::DrawingDisplayItem* item);
34 bool has_cache_;
35 cc::DrawingDisplayItem display_item_;
37 DISALLOW_COPY_AND_ASSIGN(PaintCache);
40 } // namespace ui
42 #endif // UI_COMPOSITOR_PAINT_CACHE_H_