OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 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 #include "cc/surfaces/display_scheduler.h" | 5 #include "cc/surfaces/display_scheduler.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/test/null_task_runner.h" | 8 #include "base/test/null_task_runner.h" |
9 #include "base/test/simple_test_tick_clock.h" | 9 #include "base/test/simple_test_tick_clock.h" |
10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
102 FakeDisplaySchedulerClient client_; | 102 FakeDisplaySchedulerClient client_; |
103 TestDisplayScheduler scheduler_; | 103 TestDisplayScheduler scheduler_; |
104 }; | 104 }; |
105 | 105 |
106 TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilNewRootSurface) { | 106 TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilNewRootSurface) { |
107 SurfaceId root_surface_id1(0, 1, 0); | 107 SurfaceId root_surface_id1(0, 1, 0); |
108 SurfaceId root_surface_id2(0, 2, 0); | 108 SurfaceId root_surface_id2(0, 2, 0); |
109 SurfaceId sid1(0, 3, 0); | 109 SurfaceId sid1(0, 3, 0); |
110 base::TimeTicks late_deadline; | 110 base::TimeTicks late_deadline; |
111 | 111 |
112 scheduler_.SetVisible(true); | |
113 | |
112 // Go trough an initial BeginFrame cycle with the root surface. | 114 // Go trough an initial BeginFrame cycle with the root surface. |
113 BeginFrameForTest(); | 115 BeginFrameForTest(); |
114 scheduler_.SetNewRootSurface(root_surface_id1); | 116 scheduler_.SetNewRootSurface(root_surface_id1); |
115 scheduler_.BeginFrameDeadlineForTest(); | 117 scheduler_.BeginFrameDeadlineForTest(); |
116 | 118 |
117 // Resize on the next begin frame cycle should cause the deadline to wait | 119 // Resize on the next begin frame cycle should cause the deadline to wait |
118 // for a new root surface. | 120 // for a new root surface. |
119 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); | 121 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); |
120 BeginFrameForTest(); | 122 BeginFrameForTest(); |
121 scheduler_.SurfaceDamaged(sid1); | 123 scheduler_.SurfaceDamaged(sid1); |
(...skipping 14 matching lines...) Expand all Loading... | |
136 EXPECT_GE(now_src().NowTicks(), | 138 EXPECT_GE(now_src().NowTicks(), |
137 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 139 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
138 scheduler_.BeginFrameDeadlineForTest(); | 140 scheduler_.BeginFrameDeadlineForTest(); |
139 } | 141 } |
140 | 142 |
141 TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilDamagedSurface) { | 143 TEST_F(DisplaySchedulerTest, ResizeHasLateDeadlineUntilDamagedSurface) { |
142 SurfaceId root_surface_id(0, 1, 0); | 144 SurfaceId root_surface_id(0, 1, 0); |
143 SurfaceId sid1(0, 2, 0); | 145 SurfaceId sid1(0, 2, 0); |
144 base::TimeTicks late_deadline; | 146 base::TimeTicks late_deadline; |
145 | 147 |
148 scheduler_.SetVisible(true); | |
149 | |
146 // Go trough an initial BeginFrame cycle with the root surface. | 150 // Go trough an initial BeginFrame cycle with the root surface. |
147 BeginFrameForTest(); | 151 BeginFrameForTest(); |
148 scheduler_.SetNewRootSurface(root_surface_id); | 152 scheduler_.SetNewRootSurface(root_surface_id); |
149 scheduler_.BeginFrameDeadlineForTest(); | 153 scheduler_.BeginFrameDeadlineForTest(); |
150 | 154 |
151 // Resize on the next begin frame cycle should cause the deadline to wait | 155 // Resize on the next begin frame cycle should cause the deadline to wait |
152 // for a new root surface. | 156 // for a new root surface. |
153 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); | 157 late_deadline = now_src().NowTicks() + BeginFrameArgs::DefaultInterval(); |
154 BeginFrameForTest(); | 158 BeginFrameForTest(); |
155 scheduler_.SurfaceDamaged(sid1); | 159 scheduler_.SurfaceDamaged(sid1); |
(...skipping 14 matching lines...) Expand all Loading... | |
170 EXPECT_GE(now_src().NowTicks(), | 174 EXPECT_GE(now_src().NowTicks(), |
171 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 175 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
172 scheduler_.BeginFrameDeadlineForTest(); | 176 scheduler_.BeginFrameDeadlineForTest(); |
173 } | 177 } |
174 | 178 |
175 TEST_F(DisplaySchedulerTest, SurfaceDamaged) { | 179 TEST_F(DisplaySchedulerTest, SurfaceDamaged) { |
176 SurfaceId root_surface_id(0, 0, 0); | 180 SurfaceId root_surface_id(0, 0, 0); |
177 SurfaceId sid1(0, 1, 0); | 181 SurfaceId sid1(0, 1, 0); |
178 SurfaceId sid2(0, 2, 0); | 182 SurfaceId sid2(0, 2, 0); |
179 | 183 |
184 scheduler_.SetVisible(true); | |
185 | |
180 // Set the root surface | 186 // Set the root surface |
181 scheduler_.SetNewRootSurface(root_surface_id); | 187 scheduler_.SetNewRootSurface(root_surface_id); |
182 | 188 |
183 // Get scheduler to detect surface 1 as active by drawing | 189 // Get scheduler to detect surface 1 as active by drawing |
184 // two frames in a row with damage from surface 1. | 190 // two frames in a row with damage from surface 1. |
185 BeginFrameForTest(); | 191 BeginFrameForTest(); |
186 scheduler_.SurfaceDamaged(sid1); | 192 scheduler_.SurfaceDamaged(sid1); |
187 scheduler_.BeginFrameDeadlineForTest(); | 193 scheduler_.BeginFrameDeadlineForTest(); |
188 BeginFrameForTest(); | 194 BeginFrameForTest(); |
189 scheduler_.SurfaceDamaged(sid1); | 195 scheduler_.SurfaceDamaged(sid1); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
233 scheduler_.SurfaceDamaged(root_surface_id); | 239 scheduler_.SurfaceDamaged(root_surface_id); |
234 EXPECT_GE(now_src().NowTicks(), | 240 EXPECT_GE(now_src().NowTicks(), |
235 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 241 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
236 scheduler_.BeginFrameDeadlineForTest(); | 242 scheduler_.BeginFrameDeadlineForTest(); |
237 } | 243 } |
238 | 244 |
239 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) { | 245 TEST_F(DisplaySchedulerTest, OutputSurfaceLost) { |
240 SurfaceId root_surface_id(0, 0, 0); | 246 SurfaceId root_surface_id(0, 0, 0); |
241 SurfaceId sid1(0, 1, 0); | 247 SurfaceId sid1(0, 1, 0); |
242 | 248 |
249 scheduler_.SetVisible(true); | |
250 | |
243 // Set the root surface | 251 // Set the root surface |
244 scheduler_.SetNewRootSurface(root_surface_id); | 252 scheduler_.SetNewRootSurface(root_surface_id); |
245 | 253 |
246 // DrawAndSwap normally. | 254 // DrawAndSwap normally. |
247 BeginFrameForTest(); | 255 BeginFrameForTest(); |
248 EXPECT_LT(now_src().NowTicks(), | 256 EXPECT_LT(now_src().NowTicks(), |
249 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 257 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
250 EXPECT_EQ(0, client_.draw_and_swap_count()); | 258 EXPECT_EQ(0, client_.draw_and_swap_count()); |
251 scheduler_.SurfaceDamaged(sid1); | 259 scheduler_.SurfaceDamaged(sid1); |
252 scheduler_.BeginFrameDeadlineForTest(); | 260 scheduler_.BeginFrameDeadlineForTest(); |
253 EXPECT_EQ(1, client_.draw_and_swap_count()); | 261 EXPECT_EQ(1, client_.draw_and_swap_count()); |
254 | 262 |
255 // Deadline triggers immediately on OutputSurfaceLost. | 263 // Deadline triggers immediately on OutputSurfaceLost. |
256 BeginFrameForTest(); | 264 BeginFrameForTest(); |
257 EXPECT_LT(now_src().NowTicks(), | 265 EXPECT_LT(now_src().NowTicks(), |
258 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 266 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
259 scheduler_.OutputSurfaceLost(); | 267 scheduler_.OutputSurfaceLost(); |
260 EXPECT_GE(now_src().NowTicks(), | 268 EXPECT_GE(now_src().NowTicks(), |
261 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 269 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
262 | 270 |
263 // Deadline does not DrawAndSwap after OutputSurfaceLost. | 271 // Deadline does not DrawAndSwap after OutputSurfaceLost. |
264 EXPECT_EQ(1, client_.draw_and_swap_count()); | 272 EXPECT_EQ(1, client_.draw_and_swap_count()); |
265 scheduler_.SurfaceDamaged(sid1); | 273 scheduler_.SurfaceDamaged(sid1); |
266 scheduler_.BeginFrameDeadlineForTest(); | 274 scheduler_.BeginFrameDeadlineForTest(); |
267 EXPECT_EQ(1, client_.draw_and_swap_count()); | 275 EXPECT_EQ(1, client_.draw_and_swap_count()); |
268 } | 276 } |
269 | 277 |
278 TEST_F(DisplaySchedulerTest, Visibility) { | |
279 SurfaceId root_surface_id(0, 0, 0); | |
280 SurfaceId sid1(0, 1, 0); | |
281 | |
282 // The scheduler doesn't listen for begin frames until being visible. | |
283 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); | |
284 scheduler_.SetVisible(true); | |
285 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); | |
sunnyps
2016/08/15 23:20:03
Should the scheduler ask for begin frames if we ha
danakj
2016/08/16 00:37:22
I think it would only do one, and then in the dead
| |
286 | |
287 // Set the root surface | |
288 scheduler_.SetNewRootSurface(root_surface_id); | |
289 | |
290 // DrawAndSwap normally. | |
291 BeginFrameForTest(); | |
292 EXPECT_LT(now_src().NowTicks(), | |
293 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | |
294 EXPECT_EQ(0, client_.draw_and_swap_count()); | |
295 scheduler_.SurfaceDamaged(sid1); | |
296 scheduler_.BeginFrameDeadlineForTest(); | |
297 EXPECT_EQ(1, client_.draw_and_swap_count()); | |
298 | |
299 BeginFrameForTest(); | |
300 EXPECT_LT(now_src().NowTicks(), | |
301 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | |
302 | |
303 // Become not visible. | |
304 scheduler_.SetVisible(false); | |
305 | |
306 // It will stop listening for begin frames after the current deadline. | |
307 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); | |
308 | |
309 // Deadline does not DrawAndSwap when not visible. | |
310 EXPECT_EQ(1, client_.draw_and_swap_count()); | |
311 scheduler_.SurfaceDamaged(sid1); | |
312 scheduler_.BeginFrameDeadlineForTest(); | |
313 EXPECT_EQ(1, client_.draw_and_swap_count()); | |
314 // Now it stops listening for begin frames. | |
315 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); | |
316 | |
317 // Does not start listening for begin frames when damage arrives. | |
318 scheduler_.SurfaceDamaged(sid1); | |
319 EXPECT_EQ(0u, fake_begin_frame_source_.num_observers()); | |
320 | |
321 // But does when becoming visible. | |
322 scheduler_.SetVisible(true); | |
323 EXPECT_EQ(1u, fake_begin_frame_source_.num_observers()); | |
324 } | |
325 | |
270 TEST_F(DisplaySchedulerTest, ResizeCausesSwap) { | 326 TEST_F(DisplaySchedulerTest, ResizeCausesSwap) { |
271 SurfaceId root_surface_id(0, 0, 0); | 327 SurfaceId root_surface_id(0, 0, 0); |
272 SurfaceId sid1(0, 1, 0); | 328 SurfaceId sid1(0, 1, 0); |
273 | 329 |
330 scheduler_.SetVisible(true); | |
331 | |
274 // Set the root surface | 332 // Set the root surface |
275 scheduler_.SetNewRootSurface(root_surface_id); | 333 scheduler_.SetNewRootSurface(root_surface_id); |
276 | 334 |
277 // DrawAndSwap normally. | 335 // DrawAndSwap normally. |
278 BeginFrameForTest(); | 336 BeginFrameForTest(); |
279 EXPECT_LT(now_src().NowTicks(), | 337 EXPECT_LT(now_src().NowTicks(), |
280 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 338 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
281 EXPECT_EQ(0, client_.draw_and_swap_count()); | 339 EXPECT_EQ(0, client_.draw_and_swap_count()); |
282 scheduler_.SurfaceDamaged(sid1); | 340 scheduler_.SurfaceDamaged(sid1); |
283 scheduler_.BeginFrameDeadlineForTest(); | 341 scheduler_.BeginFrameDeadlineForTest(); |
284 EXPECT_EQ(1, client_.draw_and_swap_count()); | 342 EXPECT_EQ(1, client_.draw_and_swap_count()); |
285 | 343 |
286 scheduler_.DisplayResized(); | 344 scheduler_.DisplayResized(); |
287 BeginFrameForTest(); | 345 BeginFrameForTest(); |
288 // DisplayResized should trigger a swap to happen. | 346 // DisplayResized should trigger a swap to happen. |
289 scheduler_.BeginFrameDeadlineForTest(); | 347 scheduler_.BeginFrameDeadlineForTest(); |
290 EXPECT_EQ(2, client_.draw_and_swap_count()); | 348 EXPECT_EQ(2, client_.draw_and_swap_count()); |
291 } | 349 } |
292 | 350 |
293 TEST_F(DisplaySchedulerTest, RootSurfaceResourcesLocked) { | 351 TEST_F(DisplaySchedulerTest, RootSurfaceResourcesLocked) { |
294 SurfaceId root_surface_id(0, 0, 0); | 352 SurfaceId root_surface_id(0, 0, 0); |
295 SurfaceId sid1(0, 1, 0); | 353 SurfaceId sid1(0, 1, 0); |
296 base::TimeTicks late_deadline; | 354 base::TimeTicks late_deadline; |
297 | 355 |
356 scheduler_.SetVisible(true); | |
357 | |
298 // Set the root surface | 358 // Set the root surface |
299 scheduler_.SetNewRootSurface(root_surface_id); | 359 scheduler_.SetNewRootSurface(root_surface_id); |
300 | 360 |
301 // DrawAndSwap normally. | 361 // DrawAndSwap normally. |
302 BeginFrameForTest(); | 362 BeginFrameForTest(); |
303 EXPECT_LT(now_src().NowTicks(), | 363 EXPECT_LT(now_src().NowTicks(), |
304 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); | 364 scheduler_.DesiredBeginFrameDeadlineTimeForTest()); |
305 EXPECT_EQ(0, client_.draw_and_swap_count()); | 365 EXPECT_EQ(0, client_.draw_and_swap_count()); |
306 scheduler_.SurfaceDamaged(sid1); | 366 scheduler_.SurfaceDamaged(sid1); |
307 scheduler_.BeginFrameDeadlineForTest(); | 367 scheduler_.BeginFrameDeadlineForTest(); |
(...skipping 26 matching lines...) Expand all Loading... | |
334 EXPECT_EQ(1, client_.draw_and_swap_count()); | 394 EXPECT_EQ(1, client_.draw_and_swap_count()); |
335 scheduler_.BeginFrameDeadlineForTest(); | 395 scheduler_.BeginFrameDeadlineForTest(); |
336 EXPECT_EQ(2, client_.draw_and_swap_count()); | 396 EXPECT_EQ(2, client_.draw_and_swap_count()); |
337 } | 397 } |
338 | 398 |
339 TEST_F(DisplaySchedulerTest, DidSwapBuffers) { | 399 TEST_F(DisplaySchedulerTest, DidSwapBuffers) { |
340 SurfaceId root_surface_id(0, 0, 0); | 400 SurfaceId root_surface_id(0, 0, 0); |
341 SurfaceId sid1(0, 1, 0); | 401 SurfaceId sid1(0, 1, 0); |
342 SurfaceId sid2(0, 2, 0); | 402 SurfaceId sid2(0, 2, 0); |
343 | 403 |
404 scheduler_.SetVisible(true); | |
405 | |
344 // Set the root surface | 406 // Set the root surface |
345 scheduler_.SetNewRootSurface(root_surface_id); | 407 scheduler_.SetNewRootSurface(root_surface_id); |
346 | 408 |
347 // Get scheduler to detect surface 1 and 2 as active. | 409 // Get scheduler to detect surface 1 and 2 as active. |
348 BeginFrameForTest(); | 410 BeginFrameForTest(); |
349 scheduler_.SurfaceDamaged(sid1); | 411 scheduler_.SurfaceDamaged(sid1); |
350 scheduler_.SurfaceDamaged(sid2); | 412 scheduler_.SurfaceDamaged(sid2); |
351 scheduler_.BeginFrameDeadlineForTest(); | 413 scheduler_.BeginFrameDeadlineForTest(); |
352 BeginFrameForTest(); | 414 BeginFrameForTest(); |
353 scheduler_.SurfaceDamaged(sid1); | 415 scheduler_.SurfaceDamaged(sid1); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
398 scheduler_.BeginFrameDeadlineForTest(); | 460 scheduler_.BeginFrameDeadlineForTest(); |
399 EXPECT_EQ(4, client_.draw_and_swap_count()); | 461 EXPECT_EQ(4, client_.draw_and_swap_count()); |
400 } | 462 } |
401 | 463 |
402 // This test verfies that we try to reschedule the deadline | 464 // This test verfies that we try to reschedule the deadline |
403 // after any event that may change what deadline we want. | 465 // after any event that may change what deadline we want. |
404 TEST_F(DisplaySchedulerTest, ScheduleBeginFrameDeadline) { | 466 TEST_F(DisplaySchedulerTest, ScheduleBeginFrameDeadline) { |
405 SurfaceId root_surface_id(0, 1, 0); | 467 SurfaceId root_surface_id(0, 1, 0); |
406 SurfaceId sid1(0, 2, 0); | 468 SurfaceId sid1(0, 2, 0); |
407 int count = 1; | 469 int count = 1; |
408 EXPECT_EQ(count++, scheduler_.scheduler_begin_frame_deadline_count()); | 470 EXPECT_EQ(count, scheduler_.scheduler_begin_frame_deadline_count()); |
409 | 471 |
410 // Set the root surface | 472 scheduler_.SetVisible(true); |
473 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); | |
474 | |
475 scheduler_.SetVisible(true); | |
476 EXPECT_EQ(count, scheduler_.scheduler_begin_frame_deadline_count()); | |
477 | |
478 scheduler_.SetVisible(false); | |
479 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); | |
480 | |
481 // Set the root surface while not visible. | |
411 scheduler_.SetNewRootSurface(root_surface_id); | 482 scheduler_.SetNewRootSurface(root_surface_id); |
412 EXPECT_EQ(count++, scheduler_.scheduler_begin_frame_deadline_count()); | 483 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
484 | |
485 scheduler_.SetVisible(true); | |
486 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); | |
487 | |
488 // Set the root surface while visible. | |
489 scheduler_.SetNewRootSurface(root_surface_id); | |
490 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); | |
413 | 491 |
414 BeginFrameForTest(); | 492 BeginFrameForTest(); |
415 EXPECT_EQ(count++, scheduler_.scheduler_begin_frame_deadline_count()); | 493 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
416 | 494 |
417 scheduler_.BeginFrameDeadlineForTest(); | 495 scheduler_.BeginFrameDeadlineForTest(); |
418 scheduler_.DidSwapBuffers(); | 496 scheduler_.DidSwapBuffers(); |
419 BeginFrameForTest(); | 497 BeginFrameForTest(); |
420 EXPECT_EQ(count++, scheduler_.scheduler_begin_frame_deadline_count()); | 498 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
421 | 499 |
422 scheduler_.DidSwapBuffersComplete(); | 500 scheduler_.DidSwapBuffersComplete(); |
423 EXPECT_EQ(count++, scheduler_.scheduler_begin_frame_deadline_count()); | 501 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
424 | 502 |
425 scheduler_.DisplayResized(); | 503 scheduler_.DisplayResized(); |
426 EXPECT_EQ(count++, scheduler_.scheduler_begin_frame_deadline_count()); | 504 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
427 | 505 |
428 scheduler_.SetNewRootSurface(root_surface_id); | 506 scheduler_.SetNewRootSurface(root_surface_id); |
429 EXPECT_EQ(count++, scheduler_.scheduler_begin_frame_deadline_count()); | 507 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
430 | 508 |
431 scheduler_.SurfaceDamaged(sid1); | 509 scheduler_.SurfaceDamaged(sid1); |
432 EXPECT_EQ(count++, scheduler_.scheduler_begin_frame_deadline_count()); | 510 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
433 | 511 |
434 scheduler_.SetRootSurfaceResourcesLocked(true); | 512 scheduler_.SetRootSurfaceResourcesLocked(true); |
435 EXPECT_EQ(count++, scheduler_.scheduler_begin_frame_deadline_count()); | 513 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
436 | 514 |
437 scheduler_.OutputSurfaceLost(); | 515 scheduler_.OutputSurfaceLost(); |
438 EXPECT_EQ(count++, scheduler_.scheduler_begin_frame_deadline_count()); | 516 EXPECT_EQ(++count, scheduler_.scheduler_begin_frame_deadline_count()); |
439 } | 517 } |
440 | 518 |
441 } // namespace | 519 } // namespace |
442 } // namespace cc | 520 } // namespace cc |
OLD | NEW |