changeset 41:a3b46f7817a8

Work around display.update() always updating the whole screen on Mac
author Radomir Dopieralski <devel@sheep.art.pl>
date Wed, 21 Mar 2012 16:02:17 +0100
parents 95e51bb34486
children 02156b7dabd3
files jelly/display.py jelly/resource.py
diffstat 2 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/jelly/display.py	Sat Mar 17 20:19:41 2012 +0100
+++ b/jelly/display.py	Wed Mar 21 16:02:17 2012 +0100
@@ -25,7 +25,8 @@
         pygame.display.init()
         pygame.font.init()
         pygame.display.set_caption('Jelly')
-        self.screen = pygame.display.set_mode((640, 480))
+        self.real_screen = pygame.display.set_mode((640, 480))
+        self.screen = pygame.Surface(self.real_screen.get_size())
         self.first_draw = True
         self.tiles = resource.load_tiles('jelly.png', 32, 32)
         pygame.display.set_icon(self.tiles[-1])
@@ -104,6 +105,7 @@
             self.lights.draw(self.fog)
             self.screen.blit(self.fog, (0, 0))
         self.hud.draw(self.screen)
+        self.real_screen.blit(self.screen, (0, 0))
         pygame.display.update()
         self.dirty = []
 
@@ -131,6 +133,8 @@
                 self.shadows.draw(self.screen)
                 self.dirty.extend(self.sprites.draw(self.screen))
             self.dirty.extend(self.hud.draw(self.screen))
+            for rect in self.dirty:
+                self.real_screen.blit(self.screen, rect.topleft, rect)
             pygame.display.update(self.dirty)
             self.dirty = []
 
--- a/jelly/resource.py	Sat Mar 17 20:19:41 2012 +0100
+++ b/jelly/resource.py	Wed Mar 21 16:02:17 2012 +0100
@@ -22,6 +22,7 @@
         return TILE_CACHE[filename, width, height]
     except KeyError:
         image = load_image(filename)
+        image.set_colorkey((0, 0, 0))
         image_width, image_height = image.get_size()
         tiles = []
         for x in range(image_width/width):