Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Side by Side Diff: cc/surfaces/surface.h

Issue 2831213004: cc: Reject CompositorFrames to old child surfaces (Closed)
Patch Set: Rebased Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CC_SURFACES_SURFACE_H_ 5 #ifndef CC_SURFACES_SURFACE_H_
6 #define CC_SURFACES_SURFACE_H_ 6 #define CC_SURFACES_SURFACE_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 const DrawCallback& draw_callback, 130 const DrawCallback& draw_callback,
131 const WillDrawCallback& will_draw_callback); 131 const WillDrawCallback& will_draw_callback);
132 FrameData(FrameData&& other); 132 FrameData(FrameData&& other);
133 ~FrameData(); 133 ~FrameData();
134 FrameData& operator=(FrameData&& other); 134 FrameData& operator=(FrameData&& other);
135 CompositorFrame frame; 135 CompositorFrame frame;
136 DrawCallback draw_callback; 136 DrawCallback draw_callback;
137 WillDrawCallback will_draw_callback; 137 WillDrawCallback will_draw_callback;
138 }; 138 };
139 139
140 // Called to prevent additional CompositorFrames from being accepted into this
141 // surface. Once a Surface is closed, it cannot accept CompositorFrames again.
142 void Close();
143
140 void ActivatePendingFrame(); 144 void ActivatePendingFrame();
141 // Called when all of the surface's dependencies have been resolved. 145 // Called when all of the surface's dependencies have been resolved.
142 void ActivateFrame(FrameData frame_data); 146 void ActivateFrame(FrameData frame_data);
143 void UpdateBlockingSurfaces(bool has_previous_pending_frame, 147 void UpdateBlockingSurfaces(bool has_previous_pending_frame,
144 const CompositorFrame& current_frame); 148 const CompositorFrame& current_frame);
145 149
146 void UnrefFrameResourcesAndRunDrawCallback( 150 void UnrefFrameResourcesAndRunDrawCallback(
147 base::Optional<FrameData> frame_data); 151 base::Optional<FrameData> frame_data);
148 void ClearCopyRequests(); 152 void ClearCopyRequests();
149 153
150 void TakeLatencyInfoFromPendingFrame( 154 void TakeLatencyInfoFromPendingFrame(
151 std::vector<ui::LatencyInfo>* latency_info); 155 std::vector<ui::LatencyInfo>* latency_info);
152 static void TakeLatencyInfoFromFrame( 156 static void TakeLatencyInfoFromFrame(
153 CompositorFrame* frame, 157 CompositorFrame* frame,
154 std::vector<ui::LatencyInfo>* latency_info); 158 std::vector<ui::LatencyInfo>* latency_info);
155 159
156 SurfaceId surface_id_; 160 const SurfaceId surface_id_;
157 SurfaceId previous_frame_surface_id_; 161 SurfaceId previous_frame_surface_id_;
158 base::WeakPtr<SurfaceFactory> factory_; 162 base::WeakPtr<SurfaceFactory> factory_;
159 163
160 base::Optional<FrameData> pending_frame_data_; 164 base::Optional<FrameData> pending_frame_data_;
161 base::Optional<FrameData> active_frame_data_; 165 base::Optional<FrameData> active_frame_data_;
162 int frame_index_; 166 int frame_index_;
167 bool closed_ = false;
163 bool destroyed_; 168 bool destroyed_;
164 std::vector<SurfaceSequence> destruction_dependencies_; 169 std::vector<SurfaceSequence> destruction_dependencies_;
165 170
166 base::flat_set<SurfaceId> blocking_surfaces_; 171 base::flat_set<SurfaceId> blocking_surfaces_;
167 base::ObserverList<PendingFrameObserver, true> observers_; 172 base::ObserverList<PendingFrameObserver, true> observers_;
168 173
169 DISALLOW_COPY_AND_ASSIGN(Surface); 174 DISALLOW_COPY_AND_ASSIGN(Surface);
170 }; 175 };
171 176
172 } // namespace cc 177 } // namespace cc
173 178
174 #endif // CC_SURFACES_SURFACE_H_ 179 #endif // CC_SURFACES_SURFACE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698