Author: Tim Felgentreff <timfelgentr...@gmail.com>
Branch: 
Changeset: r587:c1149fc4f6a4
Date: 2014-01-17 13:02 +0100
http://bitbucket.org/pypy/lang-smalltalk/changeset/c1149fc4f6a4/

Log:    re-enable simulateCopyBits usage properly

diff --git a/spyvm/primitives.py b/spyvm/primitives.py
--- a/spyvm/primitives.py
+++ b/spyvm/primitives.py
@@ -643,21 +643,23 @@
             interp.image.lastWindowSize = ((ary[4] & 0xffff) << 16) | (ary[5] 
& 0xffff)
     return w_rcvr
 
-@expose_primitive(BITBLT_COPY_BITS, clean_stack=False, no_result=True, 
compiled_method=True)
+@expose_primitive(BITBLT_COPY_BITS, clean_stack=False, no_result=False, 
compiled_method=True)
 def func(interp, s_frame, argcount, s_method):
     from spyvm.interpreter import Return
+    w_rcvr = s_frame.peek(0)
     try:
         s_frame._sendSelfSelector(interp.image.w_simulateCopyBits, 0, interp)
     except Return:
-        w_rcvr = s_frame.peek(0)
         w_dest_form = w_rcvr.fetch(interp.space, 0)
-        if w_dest_form.is_same_object(interp.space.objtable['w_display']):
-            w_bitmap = w_dest_form.fetch(interp.space, 0)
+        w_display = interp.space.objtable['w_display']
+        if w_dest_form.is_same_object(w_display):
+            w_bitmap = w_display.fetch(interp.space, 0)
             assert isinstance(w_bitmap, model.W_DisplayBitmap)
             w_bitmap.flush_to_screen()
+        return w_rcvr
     except shadow.MethodNotFound:
         from spyvm.plugins.bitblt import BitBltPlugin
-        BitBltPlugin.call("primitiveCopyBits", interp, s_frame, argcount, 
s_method)
+        return BitBltPlugin.call("primitiveCopyBits", interp, s_frame, 
argcount, s_method)
 
 @expose_primitive(BE_CURSOR)
 def func(interp, s_frame, argcount):
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to