Author: Lars Wassermann <[email protected]>
Branch: 
Changeset: r250:9a05c60e44e1
Date: 2013-04-10 17:27 +0200
http://bitbucket.org/pypy/lang-smalltalk/changeset/9a05c60e44e1/

Log:    running version of BitBlt

diff --git a/BitBltSim.19.cs b/BitBltSim.19.cs
--- a/BitBltSim.19.cs
+++ b/BitBltSim.19.cs
@@ -94,7 +94,8 @@
        simDestRaster _ destForm width - 1 // WordSize + 1.
        sourceForm notNil
                ifTrue: [simSourceBits _ sourceForm bits.
-                               simSourceRaster _ sourceForm width - 1 // 
WordSize + 1].
+                               simSourceRaster _ sourceForm width - 1 // 
WordSize + 1]
+               ifFalse: [simSourceRaster _ 0].
        halftoneForm notNil
                ifTrue: [simHalftoneBits _ halftoneForm bits].
        simSkew _ (simSx - simDx) bitAnd: WordSize0.
@@ -141,7 +142,9 @@
                                ifTrue:
                                        [prevWord _ prevWord bitAnd: 
simSkewMask.
                                                    "XXX: Hack to work around 
out-of-bounds access"
-                                       thisWord := simSourceBits at: 
(simSourceIndex \\ simSourceBits size) + 1.
+                                       thisWord := (simSourceIndex < 0 or: 
[simSourceIndex >= simSourceBits size])
+                                               ifTrue: [simSourceBits at: 1]
+                                               ifFalse: [simSourceBits at: 
simSourceIndex + 1].
                                                                                
         "pick up next word"
                                        skewWord _
                                                prevWord bitOr: (thisWord 
bitAnd: simSkewMask bitInvert32).
@@ -190,7 +193,6 @@
 
        destForm unhibernate.
        sourceForm
-               ifNil: [sourceForm := destForm]
                ifNotNil: [sourceForm unhibernate].
        halftoneForm ifNotNil: [
                (halftoneForm isKindOf: Form)
@@ -220,6 +222,7 @@
                                simDy _ clipY].
        simDy + simH > (clipY + clipHeight)
                ifTrue: [simH _ simH - ((simDy + simH) - (clipY + clipHeight))].
+       sourceForm isNil ifTrue: [^nil].
        simSx < 0
                ifTrue: [simDx _ simDx - simSx. simW _ simW + simSx. simSx _ 0].
        simSx + simW > sourceForm width
diff --git a/images/minibluebookdebug.image b/images/minibluebookdebug.image
index 
55870b1f6092dbfa3dcb4e4d0c46fec62b223bf2..77abab25338f3dab9a3e19883f8686ca98ac49c9
GIT binary patch

[cut]

_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to