~chrisccoulson/oxide/lp1504853

« back to all changes in this revision

Viewing changes to shared/browser/compositor/oxide_compositor.h

  • Committer: Chris Coulson
  • Date: 2015-10-21 19:06:54 UTC
  • mfrom: (1215.1.13 oxide)
  • Revision ID: chris.coulson@canonical.com-20151021190654-cfcbueitgzojv7jc
MergeĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
#include "base/memory/scoped_ptr.h"
24
24
#include "base/memory/scoped_vector.h"
25
25
#include "base/memory/weak_ptr.h"
 
26
#include "base/observer_list.h"
26
27
#include "base/threading/non_thread_safe.h"
27
28
#include "cc/trees/layer_tree_host_client.h"
28
29
#include "ui/gfx/geometry/size.h"
41
42
class CompositorClient;
42
43
class CompositorFrameData;
43
44
class CompositorFrameHandle;
44
 
class CompositorLock;
 
45
class CompositorObserver;
45
46
class CompositorThreadProxy;
46
47
 
47
48
class Compositor final : public cc::LayerTreeHostClient,
63
64
                              FrameHandleVector returned_frames);
64
65
 
65
66
 private:
66
 
  friend class CompositorLock;
 
67
  friend class CompositorObserver;
67
68
  friend class CompositorThreadProxy;
68
69
 
69
70
  Compositor(CompositorClient* client);
70
71
 
71
72
  void SendSwapCompositorFrameToClient(scoped_ptr<CompositorFrameData> frame);
72
73
 
73
 
  void LockCompositor();
74
 
  void UnlockCompositor();
75
 
 
76
74
  scoped_ptr<cc::OutputSurface> CreateOutputSurface();
77
75
 
 
76
  void AddObserver(CompositorObserver* observer);
 
77
  void RemoveObserver(CompositorObserver* observer);
 
78
 
78
79
  // cc::LayerTreeHostClient implementation
79
80
  void WillBeginMainFrame() final;
80
81
  void BeginMainFrame(const cc::BeginFrameArgs& args) final;
112
113
 
113
114
  uint32 next_output_surface_id_;
114
115
 
115
 
  uint32 lock_count_;
 
116
  base::ObserverList<CompositorObserver> observers_;
116
117
 
117
118
  base::WeakPtrFactory<Compositor> weak_factory_;
118
119
 
119
120
  DISALLOW_COPY_AND_ASSIGN(Compositor);
120
121
};
121
122
 
122
 
class CompositorLock final {
123
 
 public:
124
 
  CompositorLock(Compositor* compositor)
125
 
      : compositor_(compositor) {
126
 
    if (compositor_) {
127
 
      compositor_->LockCompositor();
128
 
    }
129
 
  }
130
 
 
131
 
  ~CompositorLock() {
132
 
    if (compositor_) {
133
 
      compositor_->UnlockCompositor();
134
 
    }
135
 
  }
136
 
 
137
 
 private:
138
 
  Compositor* compositor_;
139
 
 
140
 
  DISALLOW_COPY_AND_ASSIGN(CompositorLock);
141
 
};
142
 
 
143
123
} // namespace oxide
144
124
 
145
125
#endif // _OXIDE_SHARED_BROWSER_COMPOSITOR_COMPOSITOR_H_