Mercurial > jelly
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):
