| Index: chrome/browser/cocoa/throbber_view.mm
|
| ===================================================================
|
| --- chrome/browser/cocoa/throbber_view.mm (revision 16615)
|
| +++ chrome/browser/cocoa/throbber_view.mm (working copy)
|
| @@ -48,8 +48,19 @@
|
| DCHECK((int)imageSize.width % (int)imageSize.height == 0);
|
| numFrames_ = (int)imageSize.width / (int)imageSize.height;
|
| DCHECK(numFrames_);
|
| - image_.reset([image retain]);
|
|
|
| + // First check if we have a bitmap image rep and use it, otherwise fall
|
| + // back to creating one.
|
| + NSBitmapImageRep* rep = [[image representations] objectAtIndex:0];
|
| + if (![rep isKindOfClass:[NSBitmapImageRep class]]) {
|
| + [image lockFocus];
|
| + NSRect imageRect = NSMakeRect(0, 0, imageSize.width, imageSize.height);
|
| + rep = [[[NSBitmapImageRep alloc] initWithFocusedViewRect:imageRect]
|
| + autorelease];
|
| + [image unlockFocus];
|
| + }
|
| + image_.reset([[CIImage alloc] initWithBitmapImageRep:rep]);
|
| +
|
| // Start a timer for the animation frames.
|
| target_.reset([[TimerTarget alloc] initWithThrobber:self]);
|
| timer_ =
|
| @@ -78,18 +89,19 @@
|
| // counter and mark as needing display.
|
| - (void)animate {
|
| animationFrame_ = ++animationFrame_ % numFrames_;
|
| - //[self setNeedsDisplay:YES];
|
| + [self setNeedsDisplay:YES];
|
| }
|
|
|
| // Overridden to draw the appropriate frame in the image strip.
|
| - (void)drawRect:(NSRect)rect {
|
| - float imageDimension = [image_ size].height;
|
| + float imageDimension = [image_ extent].size.height;
|
| float xOffset = animationFrame_ * imageDimension;
|
| NSRect sourceImageRect =
|
| NSMakeRect(xOffset, 0, imageDimension, imageDimension);
|
| - [image_ compositeToPoint:NSMakePoint(0, 0)
|
| - fromRect:sourceImageRect
|
| - operation:NSCompositeSourceOver];
|
| + [image_ drawInRect:[self bounds]
|
| + fromRect:sourceImageRect
|
| + operation:NSCompositeSourceOver
|
| + fraction:1.0];
|
| }
|
|
|
| @end
|
|
|