summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordkf <dkf@noemail.net>2004-12-09 10:13:26 (GMT)
committerdkf <dkf@noemail.net>2004-12-09 10:13:26 (GMT)
commitc3f8ac20483a2b5435fe23a89850c13ea81a2c77 (patch)
treea248aa960247bf47b1be28853cd36c4caa4f1f27
parent992428556af8f13be52512789a74cb6d8da436a4 (diff)
downloadtk-c3f8ac20483a2b5435fe23a89850c13ea81a2c77.zip
tk-c3f8ac20483a2b5435fe23a89850c13ea81a2c77.tar.gz
tk-c3f8ac20483a2b5435fe23a89850c13ea81a2c77.tar.bz2
Speed up use of Tk_PhotoPutBlock by allowing it to skip the complex-alpha check
in degenerate (and common) cases. [Bug 1081966] FossilOrigin-Name: 22092ce8a0d4de8e06f826153f574b9f83f1457c
-rw-r--r--ChangeLog8
-rw-r--r--generic/tkImgPhoto.c10
2 files changed, 15 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 0a203f6..f479e85 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2004-12-09 Donal K. Fellows <donal.k.fellows@man.ac.uk>
+
+ * generic/tkImgPhoto.c (Tk_PhotoPutBlock, Tk_PhotoPutZoomedBlock):
+ Added guards so that rescanning for the complex-alpha check is not
+ done in the common case of creating a simple image a bit at a
+ time, or any other time where the image was simple before and the
+ input data has no alpha channel. [Bug 1081966]
+
2004-12-07 Don Porter <dgp@users.sourceforge.net>
* tests/canvPs.test: Cleaned up the matching of [makeFile] and
diff --git a/generic/tkImgPhoto.c b/generic/tkImgPhoto.c
index 34d0d46..fc3aa76 100644
--- a/generic/tkImgPhoto.c
+++ b/generic/tkImgPhoto.c
@@ -17,7 +17,7 @@
* Department of Computer Science,
* Australian National University.
*
- * RCS: @(#) $Id: tkImgPhoto.c,v 1.53 2004/12/03 13:09:39 dkf Exp $
+ * RCS: @(#) $Id: tkImgPhoto.c,v 1.54 2004/12/09 10:13:28 dkf Exp $
*/
#include "tkInt.h"
@@ -4590,7 +4590,9 @@ Tk_PhotoPutBlock(interp, handle, blockPtr, x, y, width, height, compRule)
* Check if display code needs alpha blending...
*/
- ToggleComplexAlphaIfNeeded(masterPtr);
+ if (alphaOffset != 0 || masterPtr->flags & COMPLEX_ALPHA) {
+ ToggleComplexAlphaIfNeeded(masterPtr);
+ }
/*
* Update each instance.
@@ -4890,7 +4892,9 @@ Tk_PhotoPutZoomedBlock(interp, handle, blockPtr, x, y, width, height,
* Check if display code needs alpha blending...
*/
- ToggleComplexAlphaIfNeeded(masterPtr);
+ if (alphaOffset != 0 || masterPtr->flags & COMPLEX_ALPHA) {
+ ToggleComplexAlphaIfNeeded(masterPtr);
+ }
/*
* Update each instance.