[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[pygame] BUG: Memoryleak in pygame.sprite.GroupSingle
Hello,
for me it seems that GroupSingle dosnt release references to the old
Sprite when a new Sprite is beeing assigned.
ive attached 2 Files.
pygame_memleak.py actually triggers the leak (Dont uncomment the sleep -
it will eat your memory instantly!).
In the second file pygame_memleak2.py i just changed GroupSingle to
Group and s.sprite = ... to s.empty(); s.add( ... ) to achieve the same
behaviour as GroupSingle - and this one works fine.
Im using:
Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56) [GCC 4.4.5] (64-Bit)
Pygame 1.9.1release
(The default Ubuntu 10.10 setup -but ive seen this on older Versions of
Python aswell)
--
Conesoft / Brose - SteinrÃcken GbR
Ehm. Service4every1
Flemerskamp 19 a 44319 Dortmund
Telefon: +49 (0) 231 / 108722231*
Fax: +49 (0) 231 / 283798
E-Mail: t.steinruecken@xxxxxxxxxxxx
Gesellschaftsform: Gesellschaft bÃrgerlichen Rechts
Sitz: Dortmund
GeschÃftsfÃhrer: Roland Brose, Tobias SteinrÃcken
USt-IdNr.: DE237763154
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pygame
from random import randrange
from time import sleep
class mysprite(pygame.sprite.Sprite):
def __init__(self, *args, **kwargs):
pygame.sprite.Sprite.__init__(self, *args, **kwargs)
self.image = pygame.Surface( (800, 600) )
self.rect = self.image.get_rect()
pygame.init()
screen = pygame.display.set_mode( (800, 600) )
s = pygame.sprite.GroupSingle()
while 1:
s.sprite = mysprite()
s.update()
s.draw( screen )
pygame.display.flip()
sleep(0.05)
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pygame
from random import randrange
from time import sleep
class mysprite(pygame.sprite.Sprite):
def __init__(self, *args, **kwargs):
pygame.sprite.Sprite.__init__(self, *args, **kwargs)
self.image = pygame.Surface( (800, 600) )
self.rect = self.image.get_rect()
pygame.init()
screen = pygame.display.set_mode( (800, 600) )
s = pygame.sprite.Group()
while 1:
s.empty()
s.add( mysprite() )
s.update()
s.draw( screen )
pygame.display.flip()
sleep(0.05)