Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/layers/picture_layer_impl.h" | 5 #include "cc/layers/picture_layer_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 312 scoped_refptr<FakePicturePileImpl> active_pile = | 312 scoped_refptr<FakePicturePileImpl> active_pile = |
| 313 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 313 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 314 | 314 |
| 315 SetupTrees(pending_pile, active_pile); | 315 SetupTrees(pending_pile, active_pile); |
| 316 | 316 |
| 317 Region invalidation; | 317 Region invalidation; |
| 318 AddDefaultTilingsWithInvalidation(invalidation); | 318 AddDefaultTilingsWithInvalidation(invalidation); |
| 319 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); | 319 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); |
| 320 | 320 |
| 321 // UpdateTiles with valid viewport. Should update tile viewport. | 321 // UpdateTiles with valid viewport. Should update tile viewport. |
| 322 bool resourceless_software_draw = true; | |
|
danakj
2014/07/09 17:21:07
why true? i just expected false for some reason..
boliu
2014/07/09 20:59:50
Yep, this is false after valid_for_tile_management
| |
| 322 bool valid_for_tile_management = true; | 323 bool valid_for_tile_management = true; |
| 323 gfx::Rect viewport = gfx::Rect(layer_bounds); | 324 gfx::Rect viewport = gfx::Rect(layer_bounds); |
| 324 gfx::Transform transform; | 325 gfx::Transform transform; |
| 325 host_impl_.SetExternalDrawConstraints( | 326 host_impl_.SetExternalDrawConstraints(transform, |
| 326 transform, viewport, viewport, valid_for_tile_management); | 327 viewport, |
| 328 viewport, | |
| 329 resourceless_software_draw, | |
| 330 valid_for_tile_management); | |
| 327 active_layer_->draw_properties().visible_content_rect = viewport; | 331 active_layer_->draw_properties().visible_content_rect = viewport; |
| 328 active_layer_->draw_properties().screen_space_transform = transform; | 332 active_layer_->draw_properties().screen_space_transform = transform; |
| 329 active_layer_->UpdateTiles(NULL); | 333 active_layer_->UpdateTiles(NULL); |
| 330 | 334 |
| 331 gfx::Rect visible_rect_for_tile_priority = | 335 gfx::Rect visible_rect_for_tile_priority = |
| 332 active_layer_->visible_rect_for_tile_priority(); | 336 active_layer_->visible_rect_for_tile_priority(); |
| 333 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); | 337 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); |
| 334 gfx::Size viewport_size_for_tile_priority = | 338 gfx::Size viewport_size_for_tile_priority = |
| 335 active_layer_->viewport_size_for_tile_priority(); | 339 active_layer_->viewport_size_for_tile_priority(); |
| 336 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); | 340 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); |
| 337 gfx::Transform screen_space_transform_for_tile_priority = | 341 gfx::Transform screen_space_transform_for_tile_priority = |
| 338 active_layer_->screen_space_transform_for_tile_priority(); | 342 active_layer_->screen_space_transform_for_tile_priority(); |
| 339 | 343 |
| 340 // Expand viewport and set it as invalid for prioritizing tiles. | 344 // Expand viewport and set it as invalid for prioritizing tiles. |
| 341 // Should not update tile viewport. | 345 // Should not update tile viewport. |
| 342 time_ticks += base::TimeDelta::FromMilliseconds(200); | 346 time_ticks += base::TimeDelta::FromMilliseconds(200); |
| 343 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 347 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
| 344 valid_for_tile_management = false; | 348 valid_for_tile_management = false; |
| 345 viewport = gfx::ScaleToEnclosingRect(viewport, 2); | 349 viewport = gfx::ScaleToEnclosingRect(viewport, 2); |
| 346 transform.Translate(1.f, 1.f); | 350 transform.Translate(1.f, 1.f); |
| 347 active_layer_->draw_properties().visible_content_rect = viewport; | 351 active_layer_->draw_properties().visible_content_rect = viewport; |
| 348 active_layer_->draw_properties().screen_space_transform = transform; | 352 active_layer_->draw_properties().screen_space_transform = transform; |
| 349 host_impl_.SetExternalDrawConstraints( | 353 host_impl_.SetExternalDrawConstraints(transform, |
| 350 transform, viewport, viewport, valid_for_tile_management); | 354 viewport, |
| 355 viewport, | |
| 356 resourceless_software_draw, | |
| 357 valid_for_tile_management); | |
| 351 active_layer_->UpdateTiles(NULL); | 358 active_layer_->UpdateTiles(NULL); |
| 352 | 359 |
| 353 EXPECT_RECT_EQ(visible_rect_for_tile_priority, | 360 EXPECT_RECT_EQ(visible_rect_for_tile_priority, |
| 354 active_layer_->visible_rect_for_tile_priority()); | 361 active_layer_->visible_rect_for_tile_priority()); |
| 355 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, | 362 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, |
| 356 active_layer_->viewport_size_for_tile_priority()); | 363 active_layer_->viewport_size_for_tile_priority()); |
| 357 EXPECT_TRANSFORMATION_MATRIX_EQ( | 364 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 358 screen_space_transform_for_tile_priority, | 365 screen_space_transform_for_tile_priority, |
| 359 active_layer_->screen_space_transform_for_tile_priority()); | 366 active_layer_->screen_space_transform_for_tile_priority()); |
| 360 | 367 |
| 361 // Keep expanded viewport but mark it valid. Should update tile viewport. | 368 // Keep expanded viewport but mark it valid. Should update tile viewport. |
| 362 time_ticks += base::TimeDelta::FromMilliseconds(200); | 369 time_ticks += base::TimeDelta::FromMilliseconds(200); |
| 363 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 370 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
| 364 valid_for_tile_management = true; | 371 valid_for_tile_management = true; |
| 365 host_impl_.SetExternalDrawConstraints( | 372 host_impl_.SetExternalDrawConstraints(transform, |
| 366 transform, viewport, viewport, valid_for_tile_management); | 373 viewport, |
| 374 viewport, | |
| 375 resourceless_software_draw, | |
| 376 valid_for_tile_management); | |
| 367 active_layer_->UpdateTiles(NULL); | 377 active_layer_->UpdateTiles(NULL); |
| 368 | 378 |
| 369 EXPECT_FALSE(visible_rect_for_tile_priority == | 379 EXPECT_FALSE(visible_rect_for_tile_priority == |
| 370 active_layer_->visible_rect_for_tile_priority()); | 380 active_layer_->visible_rect_for_tile_priority()); |
| 371 EXPECT_FALSE(viewport_size_for_tile_priority == | 381 EXPECT_FALSE(viewport_size_for_tile_priority == |
| 372 active_layer_->viewport_size_for_tile_priority()); | 382 active_layer_->viewport_size_for_tile_priority()); |
| 373 EXPECT_FALSE(screen_space_transform_for_tile_priority == | 383 EXPECT_FALSE(screen_space_transform_for_tile_priority == |
| 374 active_layer_->screen_space_transform_for_tile_priority()); | 384 active_layer_->screen_space_transform_for_tile_priority()); |
| 375 } | 385 } |
| 376 | 386 |
| 377 TEST_F(PictureLayerImplTest, InvalidViewportAfterReleaseResources) { | 387 TEST_F(PictureLayerImplTest, InvalidViewportAfterReleaseResources) { |
| 378 base::TimeTicks time_ticks; | 388 base::TimeTicks time_ticks; |
| 379 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 389 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
| 380 | 390 |
| 381 gfx::Size tile_size(100, 100); | 391 gfx::Size tile_size(100, 100); |
| 382 gfx::Size layer_bounds(400, 400); | 392 gfx::Size layer_bounds(400, 400); |
| 383 | 393 |
| 384 scoped_refptr<FakePicturePileImpl> pending_pile = | 394 scoped_refptr<FakePicturePileImpl> pending_pile = |
| 385 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 395 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 386 scoped_refptr<FakePicturePileImpl> active_pile = | 396 scoped_refptr<FakePicturePileImpl> active_pile = |
| 387 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 397 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 388 | 398 |
| 389 SetupTrees(pending_pile, active_pile); | 399 SetupTrees(pending_pile, active_pile); |
| 390 | 400 |
| 391 Region invalidation; | 401 Region invalidation; |
| 392 AddDefaultTilingsWithInvalidation(invalidation); | 402 AddDefaultTilingsWithInvalidation(invalidation); |
| 393 | 403 |
| 404 bool resourceless_software_draw = false; | |
| 394 bool valid_for_tile_management = false; | 405 bool valid_for_tile_management = false; |
| 395 gfx::Rect viewport = gfx::Rect(layer_bounds); | 406 gfx::Rect viewport = gfx::Rect(layer_bounds); |
| 396 host_impl_.SetExternalDrawConstraints( | 407 host_impl_.SetExternalDrawConstraints(gfx::Transform(), |
| 397 gfx::Transform(), viewport, viewport, valid_for_tile_management); | 408 viewport, |
| 409 viewport, | |
| 410 resourceless_software_draw, | |
| 411 valid_for_tile_management); | |
| 398 ResetTilingsAndRasterScales(); | 412 ResetTilingsAndRasterScales(); |
| 399 host_impl_.pending_tree()->UpdateDrawProperties(); | 413 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 400 host_impl_.active_tree()->UpdateDrawProperties(); | 414 host_impl_.active_tree()->UpdateDrawProperties(); |
| 401 EXPECT_TRUE(active_layer_->HighResTiling()); | 415 EXPECT_TRUE(active_layer_->HighResTiling()); |
| 402 | 416 |
| 403 size_t num_tilings = active_layer_->num_tilings(); | 417 size_t num_tilings = active_layer_->num_tilings(); |
| 404 active_layer_->UpdateTiles(NULL); | 418 active_layer_->UpdateTiles(NULL); |
| 405 pending_layer_->AddTiling(0.5f); | 419 pending_layer_->AddTiling(0.5f); |
| 406 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); | 420 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); |
| 407 } | 421 } |
| (...skipping 2003 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2411 scoped_refptr<FakePicturePileImpl> active_pile = | 2425 scoped_refptr<FakePicturePileImpl> active_pile = |
| 2412 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2426 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 2413 | 2427 |
| 2414 SetupTrees(pending_pile, active_pile); | 2428 SetupTrees(pending_pile, active_pile); |
| 2415 | 2429 |
| 2416 Region invalidation; | 2430 Region invalidation; |
| 2417 AddDefaultTilingsWithInvalidation(invalidation); | 2431 AddDefaultTilingsWithInvalidation(invalidation); |
| 2418 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); | 2432 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, false); |
| 2419 | 2433 |
| 2420 // UpdateTiles with valid viewport. Should update tile viewport. | 2434 // UpdateTiles with valid viewport. Should update tile viewport. |
| 2435 bool resourceless_software_draw = false; | |
| 2421 bool valid_for_tile_management = true; | 2436 bool valid_for_tile_management = true; |
| 2422 gfx::Rect viewport = gfx::Rect(layer_bounds); | 2437 gfx::Rect viewport = gfx::Rect(layer_bounds); |
| 2423 gfx::Transform transform; | 2438 gfx::Transform transform; |
| 2424 host_impl_.SetExternalDrawConstraints( | 2439 host_impl_.SetExternalDrawConstraints(transform, |
| 2425 transform, viewport, viewport, valid_for_tile_management); | 2440 viewport, |
| 2441 viewport, | |
| 2442 resourceless_software_draw, | |
| 2443 valid_for_tile_management); | |
| 2426 active_layer_->draw_properties().visible_content_rect = viewport; | 2444 active_layer_->draw_properties().visible_content_rect = viewport; |
| 2427 active_layer_->draw_properties().screen_space_transform = transform; | 2445 active_layer_->draw_properties().screen_space_transform = transform; |
| 2428 active_layer_->UpdateTiles(NULL); | 2446 active_layer_->UpdateTiles(NULL); |
| 2429 | 2447 |
| 2430 gfx::Rect visible_rect_for_tile_priority = | 2448 gfx::Rect visible_rect_for_tile_priority = |
| 2431 active_layer_->visible_rect_for_tile_priority(); | 2449 active_layer_->visible_rect_for_tile_priority(); |
| 2432 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); | 2450 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); |
| 2433 gfx::Size viewport_size_for_tile_priority = | 2451 gfx::Size viewport_size_for_tile_priority = |
| 2434 active_layer_->viewport_size_for_tile_priority(); | 2452 active_layer_->viewport_size_for_tile_priority(); |
| 2435 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); | 2453 EXPECT_FALSE(viewport_size_for_tile_priority.IsEmpty()); |
| 2436 gfx::Transform screen_space_transform_for_tile_priority = | 2454 gfx::Transform screen_space_transform_for_tile_priority = |
| 2437 active_layer_->screen_space_transform_for_tile_priority(); | 2455 active_layer_->screen_space_transform_for_tile_priority(); |
| 2438 | 2456 |
| 2439 // Expand viewport and set it as invalid for prioritizing tiles. | 2457 // Expand viewport and set it as invalid for prioritizing tiles. |
| 2440 // Should not update tile viewport. | 2458 // Should not update tile viewport. |
| 2441 time_ticks += base::TimeDelta::FromMilliseconds(200); | 2459 time_ticks += base::TimeDelta::FromMilliseconds(200); |
| 2442 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 2460 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
| 2443 valid_for_tile_management = false; | 2461 valid_for_tile_management = false; |
| 2444 viewport = gfx::ScaleToEnclosingRect(viewport, 2); | 2462 viewport = gfx::ScaleToEnclosingRect(viewport, 2); |
| 2445 transform.Translate(1.f, 1.f); | 2463 transform.Translate(1.f, 1.f); |
| 2446 active_layer_->draw_properties().visible_content_rect = viewport; | 2464 active_layer_->draw_properties().visible_content_rect = viewport; |
| 2447 active_layer_->draw_properties().screen_space_transform = transform; | 2465 active_layer_->draw_properties().screen_space_transform = transform; |
| 2448 host_impl_.SetExternalDrawConstraints( | 2466 host_impl_.SetExternalDrawConstraints(transform, |
| 2449 transform, viewport, viewport, valid_for_tile_management); | 2467 viewport, |
| 2468 viewport, | |
| 2469 resourceless_software_draw, | |
| 2470 valid_for_tile_management); | |
| 2450 active_layer_->UpdateTiles(NULL); | 2471 active_layer_->UpdateTiles(NULL); |
| 2451 | 2472 |
| 2452 EXPECT_RECT_EQ(visible_rect_for_tile_priority, | 2473 EXPECT_RECT_EQ(visible_rect_for_tile_priority, |
| 2453 active_layer_->visible_rect_for_tile_priority()); | 2474 active_layer_->visible_rect_for_tile_priority()); |
| 2454 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, | 2475 EXPECT_SIZE_EQ(viewport_size_for_tile_priority, |
| 2455 active_layer_->viewport_size_for_tile_priority()); | 2476 active_layer_->viewport_size_for_tile_priority()); |
| 2456 EXPECT_TRANSFORMATION_MATRIX_EQ( | 2477 EXPECT_TRANSFORMATION_MATRIX_EQ( |
| 2457 screen_space_transform_for_tile_priority, | 2478 screen_space_transform_for_tile_priority, |
| 2458 active_layer_->screen_space_transform_for_tile_priority()); | 2479 active_layer_->screen_space_transform_for_tile_priority()); |
| 2459 | 2480 |
| 2460 // Keep expanded viewport but mark it valid. Should update tile viewport. | 2481 // Keep expanded viewport but mark it valid. Should update tile viewport. |
| 2461 time_ticks += base::TimeDelta::FromMilliseconds(200); | 2482 time_ticks += base::TimeDelta::FromMilliseconds(200); |
| 2462 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 2483 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
| 2463 valid_for_tile_management = true; | 2484 valid_for_tile_management = true; |
| 2464 host_impl_.SetExternalDrawConstraints( | 2485 host_impl_.SetExternalDrawConstraints(transform, |
| 2465 transform, viewport, viewport, valid_for_tile_management); | 2486 viewport, |
| 2487 viewport, | |
| 2488 resourceless_software_draw, | |
| 2489 valid_for_tile_management); | |
| 2466 active_layer_->UpdateTiles(NULL); | 2490 active_layer_->UpdateTiles(NULL); |
| 2467 | 2491 |
| 2468 EXPECT_FALSE(visible_rect_for_tile_priority == | 2492 EXPECT_FALSE(visible_rect_for_tile_priority == |
| 2469 active_layer_->visible_rect_for_tile_priority()); | 2493 active_layer_->visible_rect_for_tile_priority()); |
| 2470 EXPECT_FALSE(viewport_size_for_tile_priority == | 2494 EXPECT_FALSE(viewport_size_for_tile_priority == |
| 2471 active_layer_->viewport_size_for_tile_priority()); | 2495 active_layer_->viewport_size_for_tile_priority()); |
| 2472 EXPECT_FALSE(screen_space_transform_for_tile_priority == | 2496 EXPECT_FALSE(screen_space_transform_for_tile_priority == |
| 2473 active_layer_->screen_space_transform_for_tile_priority()); | 2497 active_layer_->screen_space_transform_for_tile_priority()); |
| 2474 } | 2498 } |
| 2475 | 2499 |
| 2476 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportAfterReleaseResources) { | 2500 TEST_F(NoLowResPictureLayerImplTest, InvalidViewportAfterReleaseResources) { |
| 2477 base::TimeTicks time_ticks; | 2501 base::TimeTicks time_ticks; |
| 2478 host_impl_.SetCurrentFrameTimeTicks(time_ticks); | 2502 host_impl_.SetCurrentFrameTimeTicks(time_ticks); |
| 2479 | 2503 |
| 2480 gfx::Size tile_size(100, 100); | 2504 gfx::Size tile_size(100, 100); |
| 2481 gfx::Size layer_bounds(400, 400); | 2505 gfx::Size layer_bounds(400, 400); |
| 2482 | 2506 |
| 2483 scoped_refptr<FakePicturePileImpl> pending_pile = | 2507 scoped_refptr<FakePicturePileImpl> pending_pile = |
| 2484 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2508 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 2485 scoped_refptr<FakePicturePileImpl> active_pile = | 2509 scoped_refptr<FakePicturePileImpl> active_pile = |
| 2486 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); | 2510 FakePicturePileImpl::CreateFilledPile(tile_size, layer_bounds); |
| 2487 | 2511 |
| 2488 SetupTrees(pending_pile, active_pile); | 2512 SetupTrees(pending_pile, active_pile); |
| 2489 | 2513 |
| 2490 Region invalidation; | 2514 Region invalidation; |
| 2491 AddDefaultTilingsWithInvalidation(invalidation); | 2515 AddDefaultTilingsWithInvalidation(invalidation); |
| 2492 | 2516 |
| 2517 bool resourceless_software_draw = false; | |
| 2493 bool valid_for_tile_management = false; | 2518 bool valid_for_tile_management = false; |
| 2494 gfx::Rect viewport = gfx::Rect(layer_bounds); | 2519 gfx::Rect viewport = gfx::Rect(layer_bounds); |
| 2495 host_impl_.SetExternalDrawConstraints( | 2520 host_impl_.SetExternalDrawConstraints(gfx::Transform(), |
| 2496 gfx::Transform(), viewport, viewport, valid_for_tile_management); | 2521 viewport, |
| 2522 viewport, | |
| 2523 resourceless_software_draw, | |
| 2524 valid_for_tile_management); | |
| 2497 ResetTilingsAndRasterScales(); | 2525 ResetTilingsAndRasterScales(); |
| 2498 host_impl_.pending_tree()->UpdateDrawProperties(); | 2526 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 2499 host_impl_.active_tree()->UpdateDrawProperties(); | 2527 host_impl_.active_tree()->UpdateDrawProperties(); |
| 2500 EXPECT_TRUE(active_layer_->HighResTiling()); | 2528 EXPECT_TRUE(active_layer_->HighResTiling()); |
| 2501 | 2529 |
| 2502 size_t num_tilings = active_layer_->num_tilings(); | 2530 size_t num_tilings = active_layer_->num_tilings(); |
| 2503 active_layer_->UpdateTiles(NULL); | 2531 active_layer_->UpdateTiles(NULL); |
| 2504 pending_layer_->AddTiling(0.5f); | 2532 pending_layer_->AddTiling(0.5f); |
| 2505 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); | 2533 EXPECT_EQ(num_tilings + 1, active_layer_->num_tilings()); |
| 2506 } | 2534 } |
| (...skipping 588 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3095 NOTREACHED(); | 3123 NOTREACHED(); |
| 3096 } | 3124 } |
| 3097 | 3125 |
| 3098 tiling_count++; | 3126 tiling_count++; |
| 3099 } | 3127 } |
| 3100 | 3128 |
| 3101 EXPECT_EQ(tiling_count, 5); | 3129 EXPECT_EQ(tiling_count, 5); |
| 3102 } | 3130 } |
| 3103 } // namespace | 3131 } // namespace |
| 3104 } // namespace cc | 3132 } // namespace cc |
| OLD | NEW |