cool, thanks! Committed revision 1524.
cu, On Mon, Jul 21, 2008 at 12:26 PM, Forrest Voight <[EMAIL PROTECTED]> wrote: > Fixed both Brian and I's deadlocking problem. > > Biran's program works all the way up to the last music (house_lo.mp3) > which has an odd header (SDL_mixer's fault, patch send in.) > > The ogg get_busy() problem is SDL_mixer's fault. > pygame.mixer.music.get_busy() directly calls SDL_mixer. > > On Sun, Jul 20, 2008 at 9:55 PM, Forrest Voight <[EMAIL PROTECTED]> wrote: >> For the deadlock on reloading a sound, I'm working on it, I earlier >> discovered the problem (threaded rwops deadlocks on exception in >> file-like due to bug). >> >> For the mp3 not loading, it is another magic problem. It is not an ID3 >> tag but some other weird header not caught. >> >> The MID file doesn't play when loading it normally, right? I'm not >> sure what the problem is here, but it works for me and Lenard. >> >> Lenard, I'll look into the ogg problem. >> >> On Sun, Jul 20, 2008 at 7:50 PM, René Dudfield <[EMAIL PROTECTED]> wrote: >>> hi, >>> >>> nice testing :) >>> >>> I think this will have to be ifdef'd out for 1.8.1, unless someone can >>> fix it in the next couple of days. >>> >>> cu, >>> >>> >>> On Mon, Jul 21, 2008 at 4:26 AM, Brian Fisher <[EMAIL PROTECTED]> wrote: >>>> I got some time to play with this more, testing both on my Vista machine >>>> and >>>> OS X 10.5. >>>> >>>> with SDL_Mixer 1.2.8, ogg and mp3 and mid and mod all seem to be able to >>>> load from a file or file-like object on my windows machine, so I think >>>> Forrest is right about the level of support in SDL_Mixer 1.2.8 >>>> >>>> ...but there were a few of issues... >>>> >>>> 1. if I try to call mixer.music.load again after having tried to play a >>>> song >>>> from a file or file-like object, it hangs on the loading >>>> 2. the pygame examples/data/house_lo.mp3 plays silence when I try to play >>>> it >>>> from a filename, but loading from a file or file-like object I get an >>>> exception of unrecognized file type (which must be the ID3 tag thing >>>> Forrest >>>> called out earlier?) >>>> 3. the mid file claims to load but plays nothing, regardless of how I load >>>> it >>>> >>>> 2 and 3 may be issues with the file, and are not likely to be problem's >>>> with >>>> loading from rw_objects at all, but issue 1 (hanging on trying to load a >>>> different piece of music after loading from a file-like object) seems like >>>> a >>>> serious problem that is the responsibility of the loading from rwobject >>>> code >>>> to fix. >>>> >>>> I have no idea what the cause of it is - from the prints for a file-like >>>> object loader, it seems to do the exact same sequence of seek, tell and >>>> read >>>> as when it doesn't hang, except that the load call simply doesn't return. I >>>> had to rebuild pygame with the mixer version check changed of course, but >>>> It >>>> happens for both my Leopard and Vista machines, so I don't think it's >>>> anything about my builds in particular. >>>> >>>> here's the code I was running (with Forrest's sound files and the files >>>> from >>>> pygame) >>>> ------------------------- >>>> import pygame >>>> import time >>>> >>>> pygame.init() >>>> pygame.display.set_mode((320,200)) >>>> pygame.event.pump() >>>> files = ["sound.ogg", "sound.mp3", "sound.mod", "sound.mid", >>>> "house_lo.ogg", >>>> "house_lo.mp3"] >>>> >>>> class file_like_wrapper(): >>>> def __init__(self, fname): >>>> self.my_fname = fname >>>> self.my_file = file(fname, "rb") >>>> >>>> def read(self, size=None): >>>> print self.my_fname,"read", size >>>> if size != None: >>>> return self.my_file.read(size) >>>> else: >>>> return self.my_file.read() >>>> >>>> def seek(self, offset, whence): >>>> print self.my_fname,"seek",offset, whence >>>> return self.my_file.seek(offset, whence) >>>> >>>> def tell(self): >>>> tell_pos = self.my_file.tell() >>>> print self.my_fname,"tell", tell_pos >>>> return tell_pos >>>> >>>> def close(self): >>>> print self.my_fname,"close" >>>> return self.my_file.close() >>>> >>>> for filename in files: >>>> print "loading",filename,"..." >>>> >>>> print "from filename", >>>> sound = pygame.mixer.music.load(filename) >>>> print "loaded!" >>>> pygame.mixer.music.play() >>>> print "playing!" >>>> time.sleep(3) >>>> pygame.event.pump() >>>> pygame.mixer.music.stop() >>>> >>>> print "loading from file-like object", >>>> sound = pygame.mixer.music.load(file_like_wrapper(filename)) >>>> print "loaded!" >>>> pygame.mixer.music.play() >>>> print "playing!" >>>> time.sleep(3) >>>> pygame.event.pump() >>>> print "done playing!" >>>> pygame.mixer.music.stop() >>>> >>>> print "loading from file object", >>>> sound = pygame.mixer.music.load(file(filename, "rb")) >>>> print "loaded!" >>>> pygame.mixer.music.play() >>>> print "playing!" >>>> time.sleep(3) >>>> pygame.event.pump() >>>> print "done playing!" >>>> pygame.mixer.music.stop() >>>> >>>> >>>> >>> >> >