Index: third_party/WebKit/Source/platform/graphics/BitmapImage.cpp |
diff --git a/third_party/WebKit/Source/platform/graphics/BitmapImage.cpp b/third_party/WebKit/Source/platform/graphics/BitmapImage.cpp |
index f1524ed4ee789d4e4adcd82d0fa19939b901f40e..a6a92481e1513134e2e427d185a8875df6ae3e00 100644 |
--- a/third_party/WebKit/Source/platform/graphics/BitmapImage.cpp |
+++ b/third_party/WebKit/Source/platform/graphics/BitmapImage.cpp |
@@ -56,20 +56,24 @@ ColorBehavior DefaultColorBehavior() { |
} // namespace |
PassRefPtr<BitmapImage> BitmapImage::CreateWithOrientationForTesting( |
+ RefPtr<WebTaskRunner> task_runner, |
const SkBitmap& bitmap, |
ImageOrientation orientation) { |
if (bitmap.isNull()) { |
- return BitmapImage::Create(); |
+ return BitmapImage::Create(task_runner); |
} |
- RefPtr<BitmapImage> result = AdoptRef(new BitmapImage(bitmap)); |
+ RefPtr<BitmapImage> result = AdoptRef(new BitmapImage(task_runner, bitmap)); |
result->frames_[0].orientation_ = orientation; |
if (orientation.UsesWidthAsHeight()) |
result->size_respecting_orientation_ = result->size_.TransposedSize(); |
return result.Release(); |
} |
-BitmapImage::BitmapImage(ImageObserver* observer) |
+BitmapImage::BitmapImage() : BitmapImage(TimerBase::GetTimerTaskRunner()) {} |
Dan Elphick
2017/04/27 14:41:39
I guess I could just inline that function here:
P
Sami
2017/04/27 17:38:17
So this is the case where we can't tie the image t
fs
2017/04/27 17:42:54
Sorry to say, but Images don't have a 1:1 relation
Dan Elphick
2017/05/03 09:41:06
I've reworked it all now to get the Compositor tas
|
+ |
+BitmapImage::BitmapImage(RefPtr<WebTaskRunner> task_runner, |
+ ImageObserver* observer) |
: Image(observer), |
current_frame_(0), |
cached_frame_index_(0), |
@@ -83,9 +87,12 @@ BitmapImage::BitmapImage(ImageObserver* observer) |
all_data_received_(false), |
have_size_(false), |
size_available_(false), |
- have_frame_count_(false) {} |
+ have_frame_count_(false), |
+ task_runner_(task_runner) {} |
-BitmapImage::BitmapImage(const SkBitmap& bitmap, ImageObserver* observer) |
+BitmapImage::BitmapImage(RefPtr<WebTaskRunner> task_runner, |
+ const SkBitmap& bitmap, |
+ ImageObserver* observer) |
: Image(observer), |
size_(bitmap.width(), bitmap.height()), |
current_frame_(0), |
@@ -100,7 +107,8 @@ BitmapImage::BitmapImage(const SkBitmap& bitmap, ImageObserver* observer) |
all_data_received_(true), |
have_size_(true), |
size_available_(true), |
- have_frame_count_(true) { |
+ have_frame_count_(true), |
+ task_runner_(task_runner) { |
// Since we don't have a decoder, we can't figure out the image orientation. |
// Set m_sizeRespectingOrientation to be the same as m_size so it's not 0x0. |
size_respecting_orientation_ = size_; |
@@ -517,8 +525,8 @@ void BitmapImage::StartAnimation(CatchUpAnimation catch_up_if_necessary) { |
if (catch_up_if_necessary == kDoNotCatchUp || |
time < desired_frame_start_time_) { |
// Haven't yet reached time for next frame to start; delay until then. |
- frame_timer_ = WTF::WrapUnique( |
- new Timer<BitmapImage>(this, &BitmapImage::AdvanceAnimation)); |
+ frame_timer_ = WTF::WrapUnique(new TaskRunnerTimer<BitmapImage>( |
+ task_runner_, this, &BitmapImage::AdvanceAnimation)); |
frame_timer_->StartOneShot(std::max(desired_frame_start_time_ - time, 0.), |
BLINK_FROM_HERE); |
} else { |
@@ -548,8 +556,8 @@ void BitmapImage::StartAnimation(CatchUpAnimation catch_up_if_necessary) { |
// may be in the past, meaning the next time through this function we'll |
// kick off the next advancement sooner than this frame's duration would |
// suggest. |
- frame_timer_ = WTF::WrapUnique(new Timer<BitmapImage>( |
- this, &BitmapImage::AdvanceAnimationWithoutCatchUp)); |
+ frame_timer_ = WTF::WrapUnique(new TaskRunnerTimer<BitmapImage>( |
+ task_runner_, this, &BitmapImage::AdvanceAnimationWithoutCatchUp)); |
frame_timer_->StartOneShot(0, BLINK_FROM_HERE); |
} |
} |
@@ -631,8 +639,9 @@ bool BitmapImage::InternalAdvanceAnimation(AnimationAdvancement advancement) { |
// last frame. Skipping frames occurs while painting so we do not |
// synchronously notify the observer which could cause a layout. |
if (advancement == kSkipFramesToCatchUp) { |
- frame_timer_ = WTF::WrapUnique(new Timer<BitmapImage>( |
- this, &BitmapImage::NotifyObserversOfAnimationAdvance)); |
+ frame_timer_ = WTF::WrapUnique(new TaskRunnerTimer<BitmapImage>( |
+ task_runner_, this, |
+ &BitmapImage::NotifyObserversOfAnimationAdvance)); |
frame_timer_->StartOneShot(0, BLINK_FROM_HERE); |
} |