OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/output/gl_renderer.h" | 5 #include "cc/output/gl_renderer.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "cc/base/math_util.h" | 9 #include "cc/base/math_util.h" |
10 #include "cc/output/compositor_frame_metadata.h" | 10 #include "cc/output/compositor_frame_metadata.h" |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create()).Pass(); | 152 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create()).Pass(); |
153 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 153 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
154 | 154 |
155 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 155 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
156 resource_provider_ = ResourceProvider::Create(output_surface_.get(), | 156 resource_provider_ = ResourceProvider::Create(output_surface_.get(), |
157 shared_bitmap_manager_.get(), | 157 shared_bitmap_manager_.get(), |
158 NULL, | 158 NULL, |
159 NULL, | 159 NULL, |
160 0, | 160 0, |
161 false, | 161 false, |
162 1, | 162 1).Pass(); |
163 false).Pass(); | |
164 renderer_ = make_scoped_ptr(new FakeRendererGL(&renderer_client_, | 163 renderer_ = make_scoped_ptr(new FakeRendererGL(&renderer_client_, |
165 &settings_, | 164 &settings_, |
166 output_surface_.get(), | 165 output_surface_.get(), |
167 resource_provider_.get())); | 166 resource_provider_.get())); |
168 } | 167 } |
169 | 168 |
170 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } | 169 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } |
171 | 170 |
172 LayerTreeSettings settings_; | 171 LayerTreeSettings settings_; |
173 FakeOutputSurfaceClient output_surface_client_; | 172 FakeOutputSurfaceClient output_surface_client_; |
(...skipping 15 matching lines...) Expand all Loading... |
189 output_surface_ = FakeOutputSurface::Create3d().Pass(); | 188 output_surface_ = FakeOutputSurface::Create3d().Pass(); |
190 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 189 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
191 | 190 |
192 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 191 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
193 resource_provider_ = ResourceProvider::Create(output_surface_.get(), | 192 resource_provider_ = ResourceProvider::Create(output_surface_.get(), |
194 shared_bitmap_manager_.get(), | 193 shared_bitmap_manager_.get(), |
195 NULL, | 194 NULL, |
196 NULL, | 195 NULL, |
197 0, | 196 0, |
198 false, | 197 false, |
199 1, | 198 1).Pass(); |
200 false).Pass(); | |
201 renderer_.reset(new FakeRendererGL(&renderer_client_, | 199 renderer_.reset(new FakeRendererGL(&renderer_client_, |
202 &settings_, | 200 &settings_, |
203 output_surface_.get(), | 201 output_surface_.get(), |
204 resource_provider_.get())); | 202 resource_provider_.get())); |
205 } | 203 } |
206 | 204 |
207 void TestRenderPassProgram(TexCoordPrecision precision) { | 205 void TestRenderPassProgram(TexCoordPrecision precision) { |
208 EXPECT_PROGRAM_VALID(&renderer_->render_pass_program_[precision]); | 206 EXPECT_PROGRAM_VALID(&renderer_->render_pass_program_[precision]); |
209 EXPECT_EQ(renderer_->render_pass_program_[precision].program(), | 207 EXPECT_EQ(renderer_->render_pass_program_[precision].program(), |
210 renderer_->program_shadow_); | 208 renderer_->program_shadow_); |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
463 | 461 |
464 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 462 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
465 new TestSharedBitmapManager()); | 463 new TestSharedBitmapManager()); |
466 scoped_ptr<ResourceProvider> resource_provider( | 464 scoped_ptr<ResourceProvider> resource_provider( |
467 ResourceProvider::Create(output_surface.get(), | 465 ResourceProvider::Create(output_surface.get(), |
468 shared_bitmap_manager.get(), | 466 shared_bitmap_manager.get(), |
469 NULL, | 467 NULL, |
470 NULL, | 468 NULL, |
471 0, | 469 0, |
472 false, | 470 false, |
473 1, | 471 1)); |
474 false)); | |
475 | 472 |
476 LayerTreeSettings settings; | 473 LayerTreeSettings settings; |
477 FakeRendererClient renderer_client; | 474 FakeRendererClient renderer_client; |
478 FakeRendererGL renderer(&renderer_client, | 475 FakeRendererGL renderer(&renderer_client, |
479 &settings, | 476 &settings, |
480 output_surface.get(), | 477 output_surface.get(), |
481 resource_provider.get()); | 478 resource_provider.get()); |
482 } | 479 } |
483 | 480 |
484 class LoseContextOnFirstGetContext : public TestWebGraphicsContext3D { | 481 class LoseContextOnFirstGetContext : public TestWebGraphicsContext3D { |
(...skipping 19 matching lines...) Expand all Loading... |
504 | 501 |
505 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 502 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
506 new TestSharedBitmapManager()); | 503 new TestSharedBitmapManager()); |
507 scoped_ptr<ResourceProvider> resource_provider( | 504 scoped_ptr<ResourceProvider> resource_provider( |
508 ResourceProvider::Create(output_surface.get(), | 505 ResourceProvider::Create(output_surface.get(), |
509 shared_bitmap_manager.get(), | 506 shared_bitmap_manager.get(), |
510 NULL, | 507 NULL, |
511 NULL, | 508 NULL, |
512 0, | 509 0, |
513 false, | 510 false, |
514 1, | 511 1)); |
515 false)); | |
516 | 512 |
517 LayerTreeSettings settings; | 513 LayerTreeSettings settings; |
518 FakeRendererClient renderer_client; | 514 FakeRendererClient renderer_client; |
519 FakeRendererGL renderer(&renderer_client, | 515 FakeRendererGL renderer(&renderer_client, |
520 &settings, | 516 &settings, |
521 output_surface.get(), | 517 output_surface.get(), |
522 resource_provider.get()); | 518 resource_provider.get()); |
523 } | 519 } |
524 | 520 |
525 class ClearCountingContext : public TestWebGraphicsContext3D { | 521 class ClearCountingContext : public TestWebGraphicsContext3D { |
(...skipping 18 matching lines...) Expand all Loading... |
544 | 540 |
545 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 541 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
546 new TestSharedBitmapManager()); | 542 new TestSharedBitmapManager()); |
547 scoped_ptr<ResourceProvider> resource_provider( | 543 scoped_ptr<ResourceProvider> resource_provider( |
548 ResourceProvider::Create(output_surface.get(), | 544 ResourceProvider::Create(output_surface.get(), |
549 shared_bitmap_manager.get(), | 545 shared_bitmap_manager.get(), |
550 NULL, | 546 NULL, |
551 NULL, | 547 NULL, |
552 0, | 548 0, |
553 false, | 549 false, |
554 1, | 550 1)); |
555 false)); | |
556 | 551 |
557 LayerTreeSettings settings; | 552 LayerTreeSettings settings; |
558 FakeRendererClient renderer_client; | 553 FakeRendererClient renderer_client; |
559 FakeRendererGL renderer(&renderer_client, | 554 FakeRendererGL renderer(&renderer_client, |
560 &settings, | 555 &settings, |
561 output_surface.get(), | 556 output_surface.get(), |
562 resource_provider.get()); | 557 resource_provider.get()); |
563 | 558 |
564 gfx::Rect viewport_rect(1, 1); | 559 gfx::Rect viewport_rect(1, 1); |
565 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, | 560 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
597 | 592 |
598 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 593 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
599 new TestSharedBitmapManager()); | 594 new TestSharedBitmapManager()); |
600 scoped_ptr<ResourceProvider> resource_provider( | 595 scoped_ptr<ResourceProvider> resource_provider( |
601 ResourceProvider::Create(output_surface.get(), | 596 ResourceProvider::Create(output_surface.get(), |
602 shared_bitmap_manager.get(), | 597 shared_bitmap_manager.get(), |
603 NULL, | 598 NULL, |
604 NULL, | 599 NULL, |
605 0, | 600 0, |
606 false, | 601 false, |
607 1, | 602 1)); |
608 false)); | |
609 | 603 |
610 LayerTreeSettings settings; | 604 LayerTreeSettings settings; |
611 FakeRendererClient renderer_client; | 605 FakeRendererClient renderer_client; |
612 FakeRendererGL renderer(&renderer_client, | 606 FakeRendererGL renderer(&renderer_client, |
613 &settings, | 607 &settings, |
614 output_surface.get(), | 608 output_surface.get(), |
615 resource_provider.get()); | 609 resource_provider.get()); |
616 | 610 |
617 gfx::Rect viewport_rect(1, 1); | 611 gfx::Rect viewport_rect(1, 1); |
618 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, | 612 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
(...skipping 24 matching lines...) Expand all Loading... |
643 | 637 |
644 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 638 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
645 new TestSharedBitmapManager()); | 639 new TestSharedBitmapManager()); |
646 scoped_ptr<ResourceProvider> resource_provider( | 640 scoped_ptr<ResourceProvider> resource_provider( |
647 ResourceProvider::Create(output_surface.get(), | 641 ResourceProvider::Create(output_surface.get(), |
648 shared_bitmap_manager.get(), | 642 shared_bitmap_manager.get(), |
649 NULL, | 643 NULL, |
650 NULL, | 644 NULL, |
651 0, | 645 0, |
652 false, | 646 false, |
653 1, | 647 1)); |
654 false)); | |
655 | 648 |
656 LayerTreeSettings settings; | 649 LayerTreeSettings settings; |
657 FakeRendererClient renderer_client; | 650 FakeRendererClient renderer_client; |
658 FakeRendererGL renderer(&renderer_client, | 651 FakeRendererGL renderer(&renderer_client, |
659 &settings, | 652 &settings, |
660 output_surface.get(), | 653 output_surface.get(), |
661 resource_provider.get()); | 654 resource_provider.get()); |
662 | 655 |
663 gfx::Rect viewport_rect(1, 1); | 656 gfx::Rect viewport_rect(1, 1); |
664 AddRenderPass(&render_passes_in_draw_order_, | 657 AddRenderPass(&render_passes_in_draw_order_, |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
729 | 722 |
730 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 723 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
731 new TestSharedBitmapManager()); | 724 new TestSharedBitmapManager()); |
732 scoped_ptr<ResourceProvider> resource_provider( | 725 scoped_ptr<ResourceProvider> resource_provider( |
733 ResourceProvider::Create(output_surface.get(), | 726 ResourceProvider::Create(output_surface.get(), |
734 shared_bitmap_manager.get(), | 727 shared_bitmap_manager.get(), |
735 NULL, | 728 NULL, |
736 NULL, | 729 NULL, |
737 0, | 730 0, |
738 false, | 731 false, |
739 1, | 732 1)); |
740 false)); | |
741 | 733 |
742 LayerTreeSettings settings; | 734 LayerTreeSettings settings; |
743 FakeRendererClient renderer_client; | 735 FakeRendererClient renderer_client; |
744 FakeRendererGL renderer(&renderer_client, | 736 FakeRendererGL renderer(&renderer_client, |
745 &settings, | 737 &settings, |
746 output_surface.get(), | 738 output_surface.get(), |
747 resource_provider.get()); | 739 resource_provider.get()); |
748 | 740 |
749 gfx::Rect viewport_rect(1, 1); | 741 gfx::Rect viewport_rect(1, 1); |
750 AddRenderPass(&render_passes_in_draw_order_, | 742 AddRenderPass(&render_passes_in_draw_order_, |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
801 | 793 |
802 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 794 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
803 new TestSharedBitmapManager()); | 795 new TestSharedBitmapManager()); |
804 scoped_ptr<ResourceProvider> resource_provider( | 796 scoped_ptr<ResourceProvider> resource_provider( |
805 ResourceProvider::Create(output_surface.get(), | 797 ResourceProvider::Create(output_surface.get(), |
806 shared_bitmap_manager.get(), | 798 shared_bitmap_manager.get(), |
807 NULL, | 799 NULL, |
808 NULL, | 800 NULL, |
809 0, | 801 0, |
810 false, | 802 false, |
811 1, | 803 1)); |
812 false)); | |
813 | 804 |
814 LayerTreeSettings settings; | 805 LayerTreeSettings settings; |
815 FakeRendererClient renderer_client; | 806 FakeRendererClient renderer_client; |
816 FakeRendererGL renderer(&renderer_client, | 807 FakeRendererGL renderer(&renderer_client, |
817 &settings, | 808 &settings, |
818 output_surface.get(), | 809 output_surface.get(), |
819 resource_provider.get()); | 810 resource_provider.get()); |
820 | 811 |
821 // During initialization we are allowed to set any texture parameters. | 812 // During initialization we are allowed to set any texture parameters. |
822 EXPECT_CALL(*context, texParameteri(_, _, _)).Times(AnyNumber()); | 813 EXPECT_CALL(*context, texParameteri(_, _, _)).Times(AnyNumber()); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
893 | 884 |
894 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 885 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
895 new TestSharedBitmapManager()); | 886 new TestSharedBitmapManager()); |
896 scoped_ptr<ResourceProvider> resource_provider( | 887 scoped_ptr<ResourceProvider> resource_provider( |
897 ResourceProvider::Create(output_surface.get(), | 888 ResourceProvider::Create(output_surface.get(), |
898 shared_bitmap_manager.get(), | 889 shared_bitmap_manager.get(), |
899 NULL, | 890 NULL, |
900 NULL, | 891 NULL, |
901 0, | 892 0, |
902 false, | 893 false, |
903 1, | 894 1)); |
904 false)); | |
905 | 895 |
906 LayerTreeSettings settings; | 896 LayerTreeSettings settings; |
907 settings.should_clear_root_render_pass = false; | 897 settings.should_clear_root_render_pass = false; |
908 | 898 |
909 FakeRendererClient renderer_client; | 899 FakeRendererClient renderer_client; |
910 FakeRendererGL renderer(&renderer_client, | 900 FakeRendererGL renderer(&renderer_client, |
911 &settings, | 901 &settings, |
912 output_surface.get(), | 902 output_surface.get(), |
913 resource_provider.get()); | 903 resource_provider.get()); |
914 | 904 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
992 | 982 |
993 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 983 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
994 new TestSharedBitmapManager()); | 984 new TestSharedBitmapManager()); |
995 scoped_ptr<ResourceProvider> resource_provider( | 985 scoped_ptr<ResourceProvider> resource_provider( |
996 ResourceProvider::Create(output_surface.get(), | 986 ResourceProvider::Create(output_surface.get(), |
997 shared_bitmap_manager.get(), | 987 shared_bitmap_manager.get(), |
998 NULL, | 988 NULL, |
999 NULL, | 989 NULL, |
1000 0, | 990 0, |
1001 false, | 991 false, |
1002 1, | 992 1)); |
1003 false)); | |
1004 | 993 |
1005 LayerTreeSettings settings; | 994 LayerTreeSettings settings; |
1006 FakeRendererClient renderer_client; | 995 FakeRendererClient renderer_client; |
1007 FakeRendererGL renderer(&renderer_client, | 996 FakeRendererGL renderer(&renderer_client, |
1008 &settings, | 997 &settings, |
1009 output_surface.get(), | 998 output_surface.get(), |
1010 resource_provider.get()); | 999 resource_provider.get()); |
1011 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); | 1000 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); |
1012 | 1001 |
1013 gfx::Rect viewport_rect(1, 1); | 1002 gfx::Rect viewport_rect(1, 1); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1091 | 1080 |
1092 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 1081 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
1093 new TestSharedBitmapManager()); | 1082 new TestSharedBitmapManager()); |
1094 scoped_ptr<ResourceProvider> resource_provider( | 1083 scoped_ptr<ResourceProvider> resource_provider( |
1095 ResourceProvider::Create(output_surface.get(), | 1084 ResourceProvider::Create(output_surface.get(), |
1096 shared_bitmap_manager.get(), | 1085 shared_bitmap_manager.get(), |
1097 NULL, | 1086 NULL, |
1098 NULL, | 1087 NULL, |
1099 0, | 1088 0, |
1100 false, | 1089 false, |
1101 1, | 1090 1)); |
1102 false)); | |
1103 | 1091 |
1104 LayerTreeSettings settings; | 1092 LayerTreeSettings settings; |
1105 settings.partial_swap_enabled = true; | 1093 settings.partial_swap_enabled = true; |
1106 FakeRendererClient renderer_client; | 1094 FakeRendererClient renderer_client; |
1107 FakeRendererGL renderer(&renderer_client, | 1095 FakeRendererGL renderer(&renderer_client, |
1108 &settings, | 1096 &settings, |
1109 output_surface.get(), | 1097 output_surface.get(), |
1110 resource_provider.get()); | 1098 resource_provider.get()); |
1111 EXPECT_TRUE(renderer.Capabilities().using_partial_swap); | 1099 EXPECT_TRUE(renderer.Capabilities().using_partial_swap); |
1112 | 1100 |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1281 | 1269 |
1282 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( | 1270 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
1283 new TestSharedBitmapManager()); | 1271 new TestSharedBitmapManager()); |
1284 scoped_ptr<ResourceProvider> resource_provider( | 1272 scoped_ptr<ResourceProvider> resource_provider( |
1285 ResourceProvider::Create(output_surface.get(), | 1273 ResourceProvider::Create(output_surface.get(), |
1286 shared_bitmap_manager.get(), | 1274 shared_bitmap_manager.get(), |
1287 NULL, | 1275 NULL, |
1288 NULL, | 1276 NULL, |
1289 0, | 1277 0, |
1290 false, | 1278 false, |
1291 1, | 1279 1)); |
1292 false)); | |
1293 | 1280 |
1294 LayerTreeSettings settings; | 1281 LayerTreeSettings settings; |
1295 FakeRendererClient renderer_client; | 1282 FakeRendererClient renderer_client; |
1296 FakeRendererGL renderer(&renderer_client, | 1283 FakeRendererGL renderer(&renderer_client, |
1297 &settings, | 1284 &settings, |
1298 output_surface.get(), | 1285 output_surface.get(), |
1299 resource_provider.get()); | 1286 resource_provider.get()); |
1300 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); | 1287 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); |
1301 | 1288 |
1302 gfx::Rect device_viewport_rect(10, 10, 100, 100); | 1289 gfx::Rect device_viewport_rect(10, 10, 100, 100); |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1661 FakeOutputSurfaceClient output_surface_client_; | 1648 FakeOutputSurfaceClient output_surface_client_; |
1662 CHECK(output_surface_.BindToClient(&output_surface_client_)); | 1649 CHECK(output_surface_.BindToClient(&output_surface_client_)); |
1663 | 1650 |
1664 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 1651 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
1665 resource_provider_ = ResourceProvider::Create(&output_surface_, | 1652 resource_provider_ = ResourceProvider::Create(&output_surface_, |
1666 shared_bitmap_manager_.get(), | 1653 shared_bitmap_manager_.get(), |
1667 NULL, | 1654 NULL, |
1668 NULL, | 1655 NULL, |
1669 0, | 1656 0, |
1670 false, | 1657 false, |
1671 1, | 1658 1).Pass(); |
1672 false).Pass(); | |
1673 | 1659 |
1674 renderer_.reset(new FakeRendererGL(&renderer_client_, | 1660 renderer_.reset(new FakeRendererGL(&renderer_client_, |
1675 &settings_, | 1661 &settings_, |
1676 &output_surface_, | 1662 &output_surface_, |
1677 resource_provider_.get())); | 1663 resource_provider_.get())); |
1678 } | 1664 } |
1679 | 1665 |
1680 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } | 1666 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } |
1681 | 1667 |
1682 void DrawFrame(float device_scale_factor, | 1668 void DrawFrame(float device_scale_factor, |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1824 base::MessageLoop::current()->Run(); | 1810 base::MessageLoop::current()->Run(); |
1825 | 1811 |
1826 // The sync point should have happened. | 1812 // The sync point should have happened. |
1827 EXPECT_EQ(1, sync_point_callback_count); | 1813 EXPECT_EQ(1, sync_point_callback_count); |
1828 EXPECT_EQ(1, other_callback_count); | 1814 EXPECT_EQ(1, other_callback_count); |
1829 } | 1815 } |
1830 #endif // OS_ANDROID | 1816 #endif // OS_ANDROID |
1831 | 1817 |
1832 } // namespace | 1818 } // namespace |
1833 } // namespace cc | 1819 } // namespace cc |
OLD | NEW |