Don't consider a Bluetooth adapter present until it has an address.
[chromium-blink-merge.git] / cc / TiledLayerChromium.h
blobc7f57f04460c5c21e47a14d7f74ed44c2f56705e
1 // Copyright 2011 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 TiledLayerChromium_h
6 #define TiledLayerChromium_h
8 #if USE(ACCELERATED_COMPOSITING)
10 #include "CCLayerTilingData.h"
11 #include "LayerChromium.h"
12 #include "LayerTextureUpdater.h"
14 namespace WebCore {
15 class UpdatableTile;
17 class TiledLayerChromium : public LayerChromium {
18 public:
19 enum TilingOption { AlwaysTile, NeverTile, AutoTile };
21 virtual ~TiledLayerChromium();
23 virtual void setIsMask(bool) OVERRIDE;
25 virtual void pushPropertiesTo(CCLayerImpl*) OVERRIDE;
27 virtual bool drawsContent() const OVERRIDE;
28 virtual bool needsContentsScale() const OVERRIDE;
30 virtual IntSize contentBounds() const OVERRIDE;
32 virtual void setNeedsDisplayRect(const FloatRect&) OVERRIDE;
34 virtual void setUseLCDText(bool) OVERRIDE;
36 virtual void setLayerTreeHost(CCLayerTreeHost*) OVERRIDE;
38 virtual void setTexturePriorities(const CCPriorityCalculator&) OVERRIDE;
40 virtual Region visibleContentOpaqueRegion() const OVERRIDE;
42 virtual void update(CCTextureUpdateQueue&, const CCOcclusionTracker*, CCRenderingStats&) OVERRIDE;
44 protected:
45 TiledLayerChromium();
47 void updateTileSizeAndTilingOption();
48 void updateBounds();
50 // Exposed to subclasses for testing.
51 void setTileSize(const IntSize&);
52 void setTextureFormat(GC3Denum textureFormat) { m_textureFormat = textureFormat; }
53 void setBorderTexelOption(CCLayerTilingData::BorderTexelOption);
54 void setSampledTexelFormat(LayerTextureUpdater::SampledTexelFormat sampledTexelFormat) { m_sampledTexelFormat = sampledTexelFormat; }
55 size_t numPaintedTiles() { return m_tiler->tiles().size(); }
57 virtual LayerTextureUpdater* textureUpdater() const = 0;
58 virtual void createTextureUpdaterIfNeeded() = 0;
60 // Set invalidations to be potentially repainted during update().
61 void invalidateContentRect(const IntRect& contentRect);
63 // Reset state on tiles that will be used for updating the layer.
64 void resetUpdateState();
66 // After preparing an update, returns true if more painting is needed.
67 bool needsIdlePaint();
68 IntRect idlePaintRect();
70 bool skipsDraw() const { return m_skipsDraw; }
72 // Virtual for testing
73 virtual CCPrioritizedTextureManager* textureManager() const;
75 private:
76 virtual PassOwnPtr<CCLayerImpl> createCCLayerImpl() OVERRIDE;
78 void createTilerIfNeeded();
79 void setTilingOption(TilingOption);
81 bool tileOnlyNeedsPartialUpdate(UpdatableTile*);
82 bool tileNeedsBufferedUpdate(UpdatableTile*);
84 void markOcclusionsAndRequestTextures(int left, int top, int right, int bottom, const CCOcclusionTracker*);
86 bool updateTiles(int left, int top, int right, int bottom, CCTextureUpdateQueue&, const CCOcclusionTracker*, CCRenderingStats&, bool& didPaint);
87 bool haveTexturesForTiles(int left, int top, int right, int bottom, bool ignoreOcclusions);
88 IntRect markTilesForUpdate(int left, int top, int right, int bottom, bool ignoreOcclusions);
89 void updateTileTextures(const IntRect& paintRect, int left, int top, int right, int bottom, CCTextureUpdateQueue&, const CCOcclusionTracker*, CCRenderingStats&);
91 UpdatableTile* tileAt(int, int) const;
92 UpdatableTile* createTile(int, int);
94 GC3Denum m_textureFormat;
95 bool m_skipsDraw;
96 bool m_failedUpdate;
97 LayerTextureUpdater::SampledTexelFormat m_sampledTexelFormat;
99 TilingOption m_tilingOption;
100 OwnPtr<CCLayerTilingData> m_tiler;
104 #endif // USE(ACCELERATED_COMPOSITING)
106 #endif