| 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/tiles/software_image_decode_controller.h" | 5 #include "cc/tiles/software_image_decode_controller.h" |
| 6 | 6 |
| 7 #include "cc/playback/draw_image.h" | 7 #include "cc/playback/draw_image.h" |
| 8 #include "cc/raster/tile_task.h" | 8 #include "cc/raster/tile_task.h" |
| 9 #include "cc/resources/resource_format.h" | 9 #include "cc/resources/resource_format.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 630 sk_sp<SkImage> image = CreateImage(100, 100); | 630 sk_sp<SkImage> image = CreateImage(100, 100); |
| 631 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), | 631 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
| 632 quality, | 632 quality, |
| 633 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); | 633 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
| 634 scoped_refptr<TileTask> task; | 634 scoped_refptr<TileTask> task; |
| 635 bool need_unref = controller.GetTaskForImageAndRef( | 635 bool need_unref = controller.GetTaskForImageAndRef( |
| 636 draw_image, ImageDecodeController::TracingInfo(), &task); | 636 draw_image, ImageDecodeController::TracingInfo(), &task); |
| 637 EXPECT_TRUE(need_unref); | 637 EXPECT_TRUE(need_unref); |
| 638 EXPECT_TRUE(task); | 638 EXPECT_TRUE(task); |
| 639 | 639 |
| 640 task->WillSchedule(); | 640 // TODO(prashant.n): Implement proper task life cycle. crbug.com/599863. |
| 641 task->ScheduleOnOriginThread(nullptr); | |
| 642 task->DidSchedule(); | |
| 643 task->RunOnWorkerThread(); | 641 task->RunOnWorkerThread(); |
| 644 | 642 |
| 645 scoped_refptr<TileTask> another_task; | 643 scoped_refptr<TileTask> another_task; |
| 646 need_unref = controller.GetTaskForImageAndRef( | 644 need_unref = controller.GetTaskForImageAndRef( |
| 647 draw_image, ImageDecodeController::TracingInfo(), &another_task); | 645 draw_image, ImageDecodeController::TracingInfo(), &another_task); |
| 648 EXPECT_TRUE(need_unref); | 646 EXPECT_TRUE(need_unref); |
| 649 EXPECT_FALSE(another_task); | 647 EXPECT_FALSE(another_task); |
| 650 | 648 |
| 651 task->WillComplete(); | 649 task->OnTaskCompleted(); |
| 652 task->CompleteOnOriginThread(nullptr); | |
| 653 task->DidComplete(); | |
| 654 | 650 |
| 655 controller.UnrefImage(draw_image); | 651 controller.UnrefImage(draw_image); |
| 656 controller.UnrefImage(draw_image); | 652 controller.UnrefImage(draw_image); |
| 657 } | 653 } |
| 658 | 654 |
| 659 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageAlreadyPrerolled) { | 655 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageAlreadyPrerolled) { |
| 660 TestSoftwareImageDecodeController controller; | 656 TestSoftwareImageDecodeController controller; |
| 661 bool is_decomposable = true; | 657 bool is_decomposable = true; |
| 662 SkFilterQuality quality = kLow_SkFilterQuality; | 658 SkFilterQuality quality = kLow_SkFilterQuality; |
| 663 | 659 |
| 664 sk_sp<SkImage> image = CreateImage(100, 100); | 660 sk_sp<SkImage> image = CreateImage(100, 100); |
| 665 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), | 661 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
| 666 quality, | 662 quality, |
| 667 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable)); | 663 CreateMatrix(SkSize::Make(1.f, 1.f), is_decomposable)); |
| 668 scoped_refptr<TileTask> task; | 664 scoped_refptr<TileTask> task; |
| 669 bool need_unref = controller.GetTaskForImageAndRef( | 665 bool need_unref = controller.GetTaskForImageAndRef( |
| 670 draw_image, ImageDecodeController::TracingInfo(), &task); | 666 draw_image, ImageDecodeController::TracingInfo(), &task); |
| 671 EXPECT_TRUE(need_unref); | 667 EXPECT_TRUE(need_unref); |
| 672 EXPECT_TRUE(task); | 668 EXPECT_TRUE(task); |
| 673 | 669 |
| 674 task->WillSchedule(); | |
| 675 task->ScheduleOnOriginThread(nullptr); | |
| 676 task->DidSchedule(); | |
| 677 task->RunOnWorkerThread(); | 670 task->RunOnWorkerThread(); |
| 678 | 671 |
| 679 scoped_refptr<TileTask> another_task; | 672 scoped_refptr<TileTask> another_task; |
| 680 need_unref = controller.GetTaskForImageAndRef( | 673 need_unref = controller.GetTaskForImageAndRef( |
| 681 draw_image, ImageDecodeController::TracingInfo(), &another_task); | 674 draw_image, ImageDecodeController::TracingInfo(), &another_task); |
| 682 EXPECT_TRUE(need_unref); | 675 EXPECT_TRUE(need_unref); |
| 683 EXPECT_FALSE(another_task); | 676 EXPECT_FALSE(another_task); |
| 684 | 677 |
| 685 task->WillComplete(); | 678 task->OnTaskCompleted(); |
| 686 task->CompleteOnOriginThread(nullptr); | |
| 687 task->DidComplete(); | |
| 688 | 679 |
| 689 scoped_refptr<TileTask> third_task; | 680 scoped_refptr<TileTask> third_task; |
| 690 need_unref = controller.GetTaskForImageAndRef( | 681 need_unref = controller.GetTaskForImageAndRef( |
| 691 draw_image, ImageDecodeController::TracingInfo(), &third_task); | 682 draw_image, ImageDecodeController::TracingInfo(), &third_task); |
| 692 EXPECT_TRUE(need_unref); | 683 EXPECT_TRUE(need_unref); |
| 693 EXPECT_FALSE(third_task); | 684 EXPECT_FALSE(third_task); |
| 694 | 685 |
| 695 controller.UnrefImage(draw_image); | 686 controller.UnrefImage(draw_image); |
| 696 controller.UnrefImage(draw_image); | 687 controller.UnrefImage(draw_image); |
| 697 controller.UnrefImage(draw_image); | 688 controller.UnrefImage(draw_image); |
| 698 } | 689 } |
| 699 | 690 |
| 700 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageCanceledGetsNewTask) { | 691 TEST(SoftwareImageDecodeControllerTest, GetTaskForImageCanceledGetsNewTask) { |
| 701 TestSoftwareImageDecodeController controller; | 692 TestSoftwareImageDecodeController controller; |
| 702 bool is_decomposable = true; | 693 bool is_decomposable = true; |
| 703 SkFilterQuality quality = kHigh_SkFilterQuality; | 694 SkFilterQuality quality = kHigh_SkFilterQuality; |
| 704 | 695 |
| 705 sk_sp<SkImage> image = CreateImage(100, 100); | 696 sk_sp<SkImage> image = CreateImage(100, 100); |
| 706 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), | 697 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
| 707 quality, | 698 quality, |
| 708 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); | 699 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
| 709 scoped_refptr<TileTask> task; | 700 scoped_refptr<TileTask> task; |
| 710 bool need_unref = controller.GetTaskForImageAndRef( | 701 bool need_unref = controller.GetTaskForImageAndRef( |
| 711 draw_image, ImageDecodeController::TracingInfo(), &task); | 702 draw_image, ImageDecodeController::TracingInfo(), &task); |
| 712 EXPECT_TRUE(need_unref); | 703 EXPECT_TRUE(need_unref); |
| 713 EXPECT_TRUE(task); | 704 EXPECT_TRUE(task); |
| 714 | 705 |
| 715 task->WillSchedule(); | |
| 716 task->ScheduleOnOriginThread(nullptr); | |
| 717 task->DidSchedule(); | |
| 718 | |
| 719 scoped_refptr<TileTask> another_task; | 706 scoped_refptr<TileTask> another_task; |
| 720 need_unref = controller.GetTaskForImageAndRef( | 707 need_unref = controller.GetTaskForImageAndRef( |
| 721 draw_image, ImageDecodeController::TracingInfo(), &another_task); | 708 draw_image, ImageDecodeController::TracingInfo(), &another_task); |
| 722 EXPECT_TRUE(need_unref); | 709 EXPECT_TRUE(need_unref); |
| 723 EXPECT_TRUE(another_task.get() == task.get()); | 710 EXPECT_TRUE(another_task.get() == task.get()); |
| 724 | 711 |
| 725 // Didn't run the task, complete it (it was canceled). | 712 // Didn't run the task, complete it (it was canceled). |
| 726 task->WillComplete(); | 713 task->OnTaskCompleted(); |
| 727 task->CompleteOnOriginThread(nullptr); | |
| 728 task->DidComplete(); | |
| 729 | 714 |
| 730 // Fully cancel everything (so the raster would unref things). | 715 // Fully cancel everything (so the raster would unref things). |
| 731 controller.UnrefImage(draw_image); | 716 controller.UnrefImage(draw_image); |
| 732 controller.UnrefImage(draw_image); | 717 controller.UnrefImage(draw_image); |
| 733 | 718 |
| 734 // Here a new task is created. | 719 // Here a new task is created. |
| 735 scoped_refptr<TileTask> third_task; | 720 scoped_refptr<TileTask> third_task; |
| 736 need_unref = controller.GetTaskForImageAndRef( | 721 need_unref = controller.GetTaskForImageAndRef( |
| 737 draw_image, ImageDecodeController::TracingInfo(), &third_task); | 722 draw_image, ImageDecodeController::TracingInfo(), &third_task); |
| 738 EXPECT_TRUE(need_unref); | 723 EXPECT_TRUE(need_unref); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 751 sk_sp<SkImage> image = CreateImage(100, 100); | 736 sk_sp<SkImage> image = CreateImage(100, 100); |
| 752 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), | 737 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
| 753 quality, | 738 quality, |
| 754 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); | 739 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
| 755 scoped_refptr<TileTask> task; | 740 scoped_refptr<TileTask> task; |
| 756 bool need_unref = controller.GetTaskForImageAndRef( | 741 bool need_unref = controller.GetTaskForImageAndRef( |
| 757 draw_image, ImageDecodeController::TracingInfo(), &task); | 742 draw_image, ImageDecodeController::TracingInfo(), &task); |
| 758 EXPECT_TRUE(need_unref); | 743 EXPECT_TRUE(need_unref); |
| 759 EXPECT_TRUE(task); | 744 EXPECT_TRUE(task); |
| 760 | 745 |
| 761 task->WillSchedule(); | |
| 762 task->ScheduleOnOriginThread(nullptr); | |
| 763 task->DidSchedule(); | |
| 764 | |
| 765 scoped_refptr<TileTask> another_task; | 746 scoped_refptr<TileTask> another_task; |
| 766 need_unref = controller.GetTaskForImageAndRef( | 747 need_unref = controller.GetTaskForImageAndRef( |
| 767 draw_image, ImageDecodeController::TracingInfo(), &another_task); | 748 draw_image, ImageDecodeController::TracingInfo(), &another_task); |
| 768 EXPECT_TRUE(need_unref); | 749 EXPECT_TRUE(need_unref); |
| 769 EXPECT_TRUE(another_task.get() == task.get()); | 750 EXPECT_TRUE(another_task.get() == task.get()); |
| 770 | 751 |
| 771 // Didn't run the task, complete it (it was canceled). | 752 // Didn't run the task, complete it (it was canceled). |
| 772 task->WillComplete(); | 753 task->OnTaskCompleted(); |
| 773 task->CompleteOnOriginThread(nullptr); | |
| 774 task->DidComplete(); | |
| 775 | 754 |
| 776 // Note that here, everything is reffed, but a new task is created. This is | 755 // Note that here, everything is reffed, but a new task is created. This is |
| 777 // possible with repeated schedule/cancel operations. | 756 // possible with repeated schedule/cancel operations. |
| 778 scoped_refptr<TileTask> third_task; | 757 scoped_refptr<TileTask> third_task; |
| 779 need_unref = controller.GetTaskForImageAndRef( | 758 need_unref = controller.GetTaskForImageAndRef( |
| 780 draw_image, ImageDecodeController::TracingInfo(), &third_task); | 759 draw_image, ImageDecodeController::TracingInfo(), &third_task); |
| 781 EXPECT_TRUE(need_unref); | 760 EXPECT_TRUE(need_unref); |
| 782 EXPECT_TRUE(third_task); | 761 EXPECT_TRUE(third_task); |
| 783 EXPECT_FALSE(third_task.get() == task.get()); | 762 EXPECT_FALSE(third_task.get() == task.get()); |
| 784 | 763 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 796 sk_sp<SkImage> image = CreateImage(100, 100); | 775 sk_sp<SkImage> image = CreateImage(100, 100); |
| 797 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), | 776 DrawImage draw_image(image, SkIRect::MakeWH(image->width(), image->height()), |
| 798 quality, | 777 quality, |
| 799 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); | 778 CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
| 800 scoped_refptr<TileTask> task; | 779 scoped_refptr<TileTask> task; |
| 801 bool need_unref = controller.GetTaskForImageAndRef( | 780 bool need_unref = controller.GetTaskForImageAndRef( |
| 802 draw_image, ImageDecodeController::TracingInfo(), &task); | 781 draw_image, ImageDecodeController::TracingInfo(), &task); |
| 803 EXPECT_TRUE(need_unref); | 782 EXPECT_TRUE(need_unref); |
| 804 EXPECT_TRUE(task); | 783 EXPECT_TRUE(task); |
| 805 | 784 |
| 806 task->WillSchedule(); | |
| 807 task->ScheduleOnOriginThread(nullptr); | |
| 808 task->DidSchedule(); | |
| 809 | |
| 810 task->RunOnWorkerThread(); | 785 task->RunOnWorkerThread(); |
| 811 | 786 |
| 812 task->WillComplete(); | 787 task->OnTaskCompleted(); |
| 813 task->CompleteOnOriginThread(nullptr); | |
| 814 task->DidComplete(); | |
| 815 | 788 |
| 816 DecodedDrawImage decoded_draw_image = | 789 DecodedDrawImage decoded_draw_image = |
| 817 controller.GetDecodedImageForDraw(draw_image); | 790 controller.GetDecodedImageForDraw(draw_image); |
| 818 EXPECT_TRUE(decoded_draw_image.image()); | 791 EXPECT_TRUE(decoded_draw_image.image()); |
| 819 EXPECT_EQ(50, decoded_draw_image.image()->width()); | 792 EXPECT_EQ(50, decoded_draw_image.image()->width()); |
| 820 EXPECT_EQ(50, decoded_draw_image.image()->height()); | 793 EXPECT_EQ(50, decoded_draw_image.image()->height()); |
| 821 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width()); | 794 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width()); |
| 822 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().height()); | 795 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().height()); |
| 823 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); | 796 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); |
| 824 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity()); | 797 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 837 sk_sp<SkImage> image = CreateImage(100, 100); | 810 sk_sp<SkImage> image = CreateImage(100, 100); |
| 838 DrawImage draw_image( | 811 DrawImage draw_image( |
| 839 image, SkIRect::MakeXYWH(20, 30, image->width(), image->height()), | 812 image, SkIRect::MakeXYWH(20, 30, image->width(), image->height()), |
| 840 quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); | 813 quality, CreateMatrix(SkSize::Make(0.5f, 0.5f), is_decomposable)); |
| 841 scoped_refptr<TileTask> task; | 814 scoped_refptr<TileTask> task; |
| 842 bool need_unref = controller.GetTaskForImageAndRef( | 815 bool need_unref = controller.GetTaskForImageAndRef( |
| 843 draw_image, ImageDecodeController::TracingInfo(), &task); | 816 draw_image, ImageDecodeController::TracingInfo(), &task); |
| 844 EXPECT_TRUE(need_unref); | 817 EXPECT_TRUE(need_unref); |
| 845 EXPECT_TRUE(task); | 818 EXPECT_TRUE(task); |
| 846 | 819 |
| 847 task->WillSchedule(); | |
| 848 task->ScheduleOnOriginThread(nullptr); | |
| 849 task->DidSchedule(); | |
| 850 | |
| 851 task->RunOnWorkerThread(); | 820 task->RunOnWorkerThread(); |
| 852 | 821 |
| 853 task->WillComplete(); | 822 task->OnTaskCompleted(); |
| 854 task->CompleteOnOriginThread(nullptr); | |
| 855 task->DidComplete(); | |
| 856 | 823 |
| 857 DecodedDrawImage decoded_draw_image = | 824 DecodedDrawImage decoded_draw_image = |
| 858 controller.GetDecodedImageForDraw(draw_image); | 825 controller.GetDecodedImageForDraw(draw_image); |
| 859 EXPECT_TRUE(decoded_draw_image.image()); | 826 EXPECT_TRUE(decoded_draw_image.image()); |
| 860 EXPECT_EQ(40, decoded_draw_image.image()->width()); | 827 EXPECT_EQ(40, decoded_draw_image.image()->width()); |
| 861 EXPECT_EQ(35, decoded_draw_image.image()->height()); | 828 EXPECT_EQ(35, decoded_draw_image.image()->height()); |
| 862 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width()); | 829 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().width()); |
| 863 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().height()); | 830 EXPECT_FLOAT_EQ(0.5f, decoded_draw_image.scale_adjustment().height()); |
| 864 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); | 831 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); |
| 865 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity()); | 832 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity()); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 945 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); | 912 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); |
| 946 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity()); | 913 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity()); |
| 947 EXPECT_TRUE(decoded_draw_image.is_at_raster_decode()); | 914 EXPECT_TRUE(decoded_draw_image.is_at_raster_decode()); |
| 948 | 915 |
| 949 scoped_refptr<TileTask> task; | 916 scoped_refptr<TileTask> task; |
| 950 bool need_unref = controller.GetTaskForImageAndRef( | 917 bool need_unref = controller.GetTaskForImageAndRef( |
| 951 draw_image, ImageDecodeController::TracingInfo(), &task); | 918 draw_image, ImageDecodeController::TracingInfo(), &task); |
| 952 EXPECT_TRUE(need_unref); | 919 EXPECT_TRUE(need_unref); |
| 953 EXPECT_TRUE(task); | 920 EXPECT_TRUE(task); |
| 954 | 921 |
| 955 task->WillSchedule(); | |
| 956 task->ScheduleOnOriginThread(nullptr); | |
| 957 task->DidSchedule(); | |
| 958 | |
| 959 task->RunOnWorkerThread(); | 922 task->RunOnWorkerThread(); |
| 960 | 923 |
| 961 task->WillComplete(); | 924 task->OnTaskCompleted(); |
| 962 task->CompleteOnOriginThread(nullptr); | |
| 963 task->DidComplete(); | |
| 964 | 925 |
| 965 DecodedDrawImage another_decoded_draw_image = | 926 DecodedDrawImage another_decoded_draw_image = |
| 966 controller.GetDecodedImageForDraw(draw_image); | 927 controller.GetDecodedImageForDraw(draw_image); |
| 967 // This should get the new decoded/locked image, not the one we're using at | 928 // This should get the new decoded/locked image, not the one we're using at |
| 968 // raster. | 929 // raster. |
| 969 // TODO(vmpstr): We can possibly optimize this so that the decode simply moves | 930 // TODO(vmpstr): We can possibly optimize this so that the decode simply moves |
| 970 // the image to the right spot. | 931 // the image to the right spot. |
| 971 EXPECT_NE(decoded_draw_image.image()->uniqueID(), | 932 EXPECT_NE(decoded_draw_image.image()->uniqueID(), |
| 972 another_decoded_draw_image.image()->uniqueID()); | 933 another_decoded_draw_image.image()->uniqueID()); |
| 973 EXPECT_FALSE(another_decoded_draw_image.is_at_raster_decode()); | 934 EXPECT_FALSE(another_decoded_draw_image.is_at_raster_decode()); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 998 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); | 959 EXPECT_EQ(kLow_SkFilterQuality, decoded_draw_image.filter_quality()); |
| 999 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity()); | 960 EXPECT_FALSE(decoded_draw_image.is_scale_adjustment_identity()); |
| 1000 EXPECT_TRUE(decoded_draw_image.is_at_raster_decode()); | 961 EXPECT_TRUE(decoded_draw_image.is_at_raster_decode()); |
| 1001 | 962 |
| 1002 scoped_refptr<TileTask> task; | 963 scoped_refptr<TileTask> task; |
| 1003 bool need_unref = controller.GetTaskForImageAndRef( | 964 bool need_unref = controller.GetTaskForImageAndRef( |
| 1004 draw_image, ImageDecodeController::TracingInfo(), &task); | 965 draw_image, ImageDecodeController::TracingInfo(), &task); |
| 1005 EXPECT_TRUE(need_unref); | 966 EXPECT_TRUE(need_unref); |
| 1006 EXPECT_TRUE(task); | 967 EXPECT_TRUE(task); |
| 1007 | 968 |
| 1008 task->WillSchedule(); | |
| 1009 task->ScheduleOnOriginThread(nullptr); | |
| 1010 task->DidSchedule(); | |
| 1011 | |
| 1012 // If we finish the draw here, then we will use it for the locked decode | 969 // If we finish the draw here, then we will use it for the locked decode |
| 1013 // instead of decoding again. | 970 // instead of decoding again. |
| 1014 controller.DrawWithImageFinished(draw_image, decoded_draw_image); | 971 controller.DrawWithImageFinished(draw_image, decoded_draw_image); |
| 1015 | 972 |
| 1016 task->RunOnWorkerThread(); | 973 task->RunOnWorkerThread(); |
| 1017 | 974 |
| 1018 task->WillComplete(); | 975 task->OnTaskCompleted(); |
| 1019 task->CompleteOnOriginThread(nullptr); | |
| 1020 task->DidComplete(); | |
| 1021 | 976 |
| 1022 DecodedDrawImage another_decoded_draw_image = | 977 DecodedDrawImage another_decoded_draw_image = |
| 1023 controller.GetDecodedImageForDraw(draw_image); | 978 controller.GetDecodedImageForDraw(draw_image); |
| 1024 // This should get the decoded/locked image which we originally decoded at | 979 // This should get the decoded/locked image which we originally decoded at |
| 1025 // raster time, since it's now in the locked cache. | 980 // raster time, since it's now in the locked cache. |
| 1026 EXPECT_EQ(decoded_draw_image.image()->uniqueID(), | 981 EXPECT_EQ(decoded_draw_image.image()->uniqueID(), |
| 1027 another_decoded_draw_image.image()->uniqueID()); | 982 another_decoded_draw_image.image()->uniqueID()); |
| 1028 EXPECT_FALSE(another_decoded_draw_image.is_at_raster_decode()); | 983 EXPECT_FALSE(another_decoded_draw_image.is_at_raster_decode()); |
| 1029 | 984 |
| 1030 controller.DrawWithImageFinished(draw_image, another_decoded_draw_image); | 985 controller.DrawWithImageFinished(draw_image, another_decoded_draw_image); |
| (...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1438 EXPECT_EQ(decoded_draw_image_50.image(), decoded_draw_image_49.image()); | 1393 EXPECT_EQ(decoded_draw_image_50.image(), decoded_draw_image_49.image()); |
| 1439 | 1394 |
| 1440 controller.DrawWithImageFinished(draw_image_50, decoded_draw_image_50); | 1395 controller.DrawWithImageFinished(draw_image_50, decoded_draw_image_50); |
| 1441 controller.UnrefImage(draw_image_50); | 1396 controller.UnrefImage(draw_image_50); |
| 1442 controller.DrawWithImageFinished(draw_image_49, decoded_draw_image_49); | 1397 controller.DrawWithImageFinished(draw_image_49, decoded_draw_image_49); |
| 1443 controller.UnrefImage(draw_image_49); | 1398 controller.UnrefImage(draw_image_49); |
| 1444 } | 1399 } |
| 1445 | 1400 |
| 1446 } // namespace | 1401 } // namespace |
| 1447 } // namespace cc | 1402 } // namespace cc |
| OLD | NEW |