[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

darin darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 06:20:54 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 617bfaf95d5472fe59eea041e6eea7c5d7f89b6c
Author: darin <darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Jun 21 17:24:05 2002 +0000

    	Fix rendering of non-opaque animated images.
    
    	* WebCoreSupport.subproj/IFImageRenderer.m:
    	(-[IFImageRenderer nextFrame:]): Use [NSView displayRect:] instead of
    	drawing explicitly so that views behind us get a chance to draw too.
    	This is less efficient than just drawing for opaque images, but NSImage
    	doesn't offer a way to find out if the image is opaque. Also, this changes
    	things a bit because beginAnimationInView gets called again, so we don't
    	have to reschedule the timer.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@1414 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index 3bbab25..2ae4d59 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,15 @@
+2002-06-21  Darin Adler  <darin at apple.com>
+
+	Fix rendering of non-opaque animated images.
+
+	* WebCoreSupport.subproj/IFImageRenderer.m:
+	(-[IFImageRenderer nextFrame:]): Use [NSView displayRect:] instead of
+	drawing explicitly so that views behind us get a chance to draw too.
+	This is less efficient than just drawing for opaque images, but NSImage
+	doesn't offer a way to find out if the image is opaque. Also, this changes
+	things a bit because beginAnimationInView gets called again, so we don't
+	have to reschedule the timer.
+
 2002-06-20  Richard Williamson (local)  <rjw at apple.com>
 
 	* WebCoreSupport.subproj/IFImageRenderer.m:
diff --git a/WebKit/ChangeLog-2002-12-03 b/WebKit/ChangeLog-2002-12-03
index 3bbab25..2ae4d59 100644
--- a/WebKit/ChangeLog-2002-12-03
+++ b/WebKit/ChangeLog-2002-12-03
@@ -1,3 +1,15 @@
+2002-06-21  Darin Adler  <darin at apple.com>
+
+	Fix rendering of non-opaque animated images.
+
+	* WebCoreSupport.subproj/IFImageRenderer.m:
+	(-[IFImageRenderer nextFrame:]): Use [NSView displayRect:] instead of
+	drawing explicitly so that views behind us get a chance to draw too.
+	This is less efficient than just drawing for opaque images, but NSImage
+	doesn't offer a way to find out if the image is opaque. Also, this changes
+	things a bit because beginAnimationInView gets called again, so we don't
+	have to reschedule the timer.
+
 2002-06-20  Richard Williamson (local)  <rjw at apple.com>
 
 	* WebCoreSupport.subproj/IFImageRenderer.m:
diff --git a/WebKit/WebCoreSupport.subproj/IFImageRenderer.m b/WebKit/WebCoreSupport.subproj/IFImageRenderer.m
index 1d70b97..645c437 100644
--- a/WebKit/WebCoreSupport.subproj/IFImageRenderer.m
+++ b/WebKit/WebCoreSupport.subproj/IFImageRenderer.m
@@ -132,18 +132,22 @@ static NSMutableArray *activeImageRenderers;
 
 - (void)nextFrame:(id)context
 {
-    int currentFrame = [self currentFrame];
+    int currentFrame;
     
     // Release the timer that just fired.
     [frameTimer release];
+    frameTimer = nil;
     
-    currentFrame++;
+    currentFrame = [self currentFrame] + 1;
     if (currentFrame >= [self frameCount]) {
         currentFrame = 0;
     }
+    [self setCurrentFrame:currentFrame];
     
-    [self setCurrentFrame: currentFrame];
-    
+    [frameView displayRect:targetRect];
+    [[frameView window] flushWindow];
+
+#if 0 // The following would be more efficient than using displayRect if we knew the image was opaque.
     if ([frameView canDraw]) {
         [frameView lockFocus];
         [self drawInRect:targetRect
@@ -151,7 +155,6 @@ static NSMutableArray *activeImageRenderers;
                operation:NSCompositeSourceOver	// Renders transparency correctly
                 fraction:1.0];
         [frameView unlockFocus];
-        [[frameView window] flushWindow];
     }
 
     frameTimer = [[NSTimer scheduledTimerWithTimeInterval:[self frameDuration]
@@ -159,11 +162,12 @@ static NSMutableArray *activeImageRenderers;
                                                  selector:@selector(nextFrame:)
                                                  userInfo:nil
                                                   repeats:NO] retain];
+#endif
 }
 
 - (void)beginAnimationInView: (NSView *)view inRect: (NSRect)ir fromRect: (NSRect)fr
 {
-    // The previous, if any, frameView, is released in stopAnimations.
+    // The previous, if any, frameView, is released in stopAnimation.
     [self stopAnimation];
     
     if ([self frameCount] > 1) {
diff --git a/WebKit/WebCoreSupport.subproj/WebImageRenderer.m b/WebKit/WebCoreSupport.subproj/WebImageRenderer.m
index 1d70b97..645c437 100644
--- a/WebKit/WebCoreSupport.subproj/WebImageRenderer.m
+++ b/WebKit/WebCoreSupport.subproj/WebImageRenderer.m
@@ -132,18 +132,22 @@ static NSMutableArray *activeImageRenderers;
 
 - (void)nextFrame:(id)context
 {
-    int currentFrame = [self currentFrame];
+    int currentFrame;
     
     // Release the timer that just fired.
     [frameTimer release];
+    frameTimer = nil;
     
-    currentFrame++;
+    currentFrame = [self currentFrame] + 1;
     if (currentFrame >= [self frameCount]) {
         currentFrame = 0;
     }
+    [self setCurrentFrame:currentFrame];
     
-    [self setCurrentFrame: currentFrame];
-    
+    [frameView displayRect:targetRect];
+    [[frameView window] flushWindow];
+
+#if 0 // The following would be more efficient than using displayRect if we knew the image was opaque.
     if ([frameView canDraw]) {
         [frameView lockFocus];
         [self drawInRect:targetRect
@@ -151,7 +155,6 @@ static NSMutableArray *activeImageRenderers;
                operation:NSCompositeSourceOver	// Renders transparency correctly
                 fraction:1.0];
         [frameView unlockFocus];
-        [[frameView window] flushWindow];
     }
 
     frameTimer = [[NSTimer scheduledTimerWithTimeInterval:[self frameDuration]
@@ -159,11 +162,12 @@ static NSMutableArray *activeImageRenderers;
                                                  selector:@selector(nextFrame:)
                                                  userInfo:nil
                                                   repeats:NO] retain];
+#endif
 }
 
 - (void)beginAnimationInView: (NSView *)view inRect: (NSRect)ir fromRect: (NSRect)fr
 {
-    // The previous, if any, frameView, is released in stopAnimations.
+    // The previous, if any, frameView, is released in stopAnimation.
     [self stopAnimation];
     
     if ([self frameCount] > 1) {

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list