Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(177)

Side by Side Diff: third_party/WebKit/Source/platform/graphics/BitmapImage.cpp

Issue 2050123002: Remove OwnPtr from Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: First attempt to land. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) 2 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
3 * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved. 3 * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 19 matching lines...) Expand all
30 #include "platform/Timer.h" 30 #include "platform/Timer.h"
31 #include "platform/TraceEvent.h" 31 #include "platform/TraceEvent.h"
32 #include "platform/geometry/FloatRect.h" 32 #include "platform/geometry/FloatRect.h"
33 #include "platform/graphics/BitmapImageMetrics.h" 33 #include "platform/graphics/BitmapImageMetrics.h"
34 #include "platform/graphics/DeferredImageDecoder.h" 34 #include "platform/graphics/DeferredImageDecoder.h"
35 #include "platform/graphics/ImageObserver.h" 35 #include "platform/graphics/ImageObserver.h"
36 #include "platform/graphics/StaticBitmapImage.h" 36 #include "platform/graphics/StaticBitmapImage.h"
37 #include "platform/graphics/skia/SkiaUtils.h" 37 #include "platform/graphics/skia/SkiaUtils.h"
38 #include "third_party/skia/include/core/SkCanvas.h" 38 #include "third_party/skia/include/core/SkCanvas.h"
39 #include "wtf/PassRefPtr.h" 39 #include "wtf/PassRefPtr.h"
40 #include "wtf/PtrUtil.h"
40 #include "wtf/text/WTFString.h" 41 #include "wtf/text/WTFString.h"
41 42
42 namespace blink { 43 namespace blink {
43 44
44 PassRefPtr<BitmapImage> BitmapImage::createWithOrientationForTesting(const SkBit map& bitmap, ImageOrientation orientation) 45 PassRefPtr<BitmapImage> BitmapImage::createWithOrientationForTesting(const SkBit map& bitmap, ImageOrientation orientation)
45 { 46 {
46 if (bitmap.isNull()) { 47 if (bitmap.isNull()) {
47 return BitmapImage::create(); 48 return BitmapImage::create();
48 } 49 }
49 50
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 // don't miss any repetitions, and is closer to what other browsers do; on 473 // don't miss any repetitions, and is closer to what other browsers do; on
473 // the other hand, it makes animations "less accurate" for pages that try to 474 // the other hand, it makes animations "less accurate" for pages that try to
474 // sync an image and some other resource (e.g. audio), especially if users 475 // sync an image and some other resource (e.g. audio), especially if users
475 // switch tabs (and thus stop drawing the animation, which will pause it) 476 // switch tabs (and thus stop drawing the animation, which will pause it)
476 // during that initial loop, then switch back later. 477 // during that initial loop, then switch back later.
477 if (nextFrame == 0 && m_repetitionsComplete == 0 && m_desiredFrameStartTime < time) 478 if (nextFrame == 0 && m_repetitionsComplete == 0 && m_desiredFrameStartTime < time)
478 m_desiredFrameStartTime = time; 479 m_desiredFrameStartTime = time;
479 480
480 if (catchUpIfNecessary == DoNotCatchUp || time < m_desiredFrameStartTime) { 481 if (catchUpIfNecessary == DoNotCatchUp || time < m_desiredFrameStartTime) {
481 // Haven't yet reached time for next frame to start; delay until then. 482 // Haven't yet reached time for next frame to start; delay until then.
482 m_frameTimer = adoptPtr(new Timer<BitmapImage>(this, &BitmapImage::advan ceAnimation)); 483 m_frameTimer = wrapUnique(new Timer<BitmapImage>(this, &BitmapImage::adv anceAnimation));
483 m_frameTimer->startOneShot(std::max(m_desiredFrameStartTime - time, 0.), BLINK_FROM_HERE); 484 m_frameTimer->startOneShot(std::max(m_desiredFrameStartTime - time, 0.), BLINK_FROM_HERE);
484 } else { 485 } else {
485 // We've already reached or passed the time for the next frame to start. 486 // We've already reached or passed the time for the next frame to start.
486 // See if we've also passed the time for frames after that to start, in 487 // See if we've also passed the time for frames after that to start, in
487 // case we need to skip some frames entirely. Remember not to advance 488 // case we need to skip some frames entirely. Remember not to advance
488 // to an incomplete frame. 489 // to an incomplete frame.
489 for (size_t frameAfterNext = (nextFrame + 1) % frameCount(); frameIsComp leteAtIndex(frameAfterNext); frameAfterNext = (nextFrame + 1) % frameCount()) { 490 for (size_t frameAfterNext = (nextFrame + 1) % frameCount(); frameIsComp leteAtIndex(frameAfterNext); frameAfterNext = (nextFrame + 1) % frameCount()) {
490 // Should we skip the next frame? 491 // Should we skip the next frame?
491 double frameAfterNextStartTime = m_desiredFrameStartTime + frameDura tionAtIndex(nextFrame); 492 double frameAfterNextStartTime = m_desiredFrameStartTime + frameDura tionAtIndex(nextFrame);
492 if (time < frameAfterNextStartTime) 493 if (time < frameAfterNextStartTime)
493 break; 494 break;
494 495
495 // Yes; skip over it without notifying our observers. 496 // Yes; skip over it without notifying our observers.
496 if (!internalAdvanceAnimation(true)) 497 if (!internalAdvanceAnimation(true))
497 return; 498 return;
498 m_desiredFrameStartTime = frameAfterNextStartTime; 499 m_desiredFrameStartTime = frameAfterNextStartTime;
499 nextFrame = frameAfterNext; 500 nextFrame = frameAfterNext;
500 } 501 }
501 502
502 // Post a task to advance the frame immediately. m_desiredFrameStartTime 503 // Post a task to advance the frame immediately. m_desiredFrameStartTime
503 // may be in the past, meaning the next time through this function we'll 504 // may be in the past, meaning the next time through this function we'll
504 // kick off the next advancement sooner than this frame's duration would 505 // kick off the next advancement sooner than this frame's duration would
505 // suggest. 506 // suggest.
506 m_frameTimer = adoptPtr(new Timer<BitmapImage>(this, &BitmapImage::advan ceAnimationWithoutCatchUp)); 507 m_frameTimer = wrapUnique(new Timer<BitmapImage>(this, &BitmapImage::adv anceAnimationWithoutCatchUp));
507 m_frameTimer->startOneShot(0, BLINK_FROM_HERE); 508 m_frameTimer->startOneShot(0, BLINK_FROM_HERE);
508 } 509 }
509 } 510 }
510 511
511 void BitmapImage::stopAnimation() 512 void BitmapImage::stopAnimation()
512 { 513 {
513 // This timer is used to animate all occurrences of this image. Don't inval idate 514 // This timer is used to animate all occurrences of this image. Don't inval idate
514 // the timer unless all renderers have stopped drawing. 515 // the timer unless all renderers have stopped drawing.
515 m_frameTimer.reset(); 516 m_frameTimer.reset();
516 } 517 }
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 590
590 // We need to draw this frame if we advanced to it while not skipping, or if 591 // We need to draw this frame if we advanced to it while not skipping, or if
591 // while trying to skip frames we hit the last frame and thus had to stop. 592 // while trying to skip frames we hit the last frame and thus had to stop.
592 if (skippingFrames != advancedAnimation) 593 if (skippingFrames != advancedAnimation)
593 getImageObserver()->animationAdvanced(this); 594 getImageObserver()->animationAdvanced(this);
594 595
595 return advancedAnimation; 596 return advancedAnimation;
596 } 597 }
597 598
598 } // namespace blink 599 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698