[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] [BUG] SRCALPHA - unexpected behaviour.



Hi,

I added kwargs support to Surface init.

You can time before and after here:
http://rene.f0o.com/~rene/stuff/surface_speed.py

It turns out it's actually faster (only slightly) with the new code if
you do not use kwargs.  This is because (ii) format doesn't work with
kwargs parsing.

If you use kwargs, the functions run a little slower.

So I reckon we should use keyword arguments for all the functions -
since it doesn't slow down the no kwargs case.


On 8/22/07, René Dudfield <renesd@xxxxxxxxx> wrote:
> This page shows how to use keyword arguments:
> http://72.14.253.104/search?q=cache:t00uWSg_17QJ:fraca7.free.fr/blog/index.php%3F2006/12/30/55-python-c-api-part-iii+python+keyword+arguments+C+api&hl=en&ct=clnk&cd=3
>
> Cheers,
>
> On 8/22/07, René Dudfield <renesd@xxxxxxxxx> wrote:
> > Hello,
> >
> > sorry... I meant that you need to RAISE, then return -1;
> >
> > yeah, I think the keyword arguments do cause bugs...  However it does
> > say in a few places that they aren't used like keyword arguments.
> > Definitely one of pygames warts.
> >
> > That'd be great if you could test out keyword argument performance.
> > The docs are here: http://docs.python.org/api/arg-parsing.html  Look
> > down the page at ... ParseTupleAndKeywords .  Then if you can't figure
> > out usage from that page(no examples are there) check the python
> > source, or google for ParseTupleAndKeywords.
> >
> > The SRCALPHA bug has caused a lot of confusion too... hopefully that
> > won't happen now so much.  I usually just used convert_alpha() as a
> > work around for not understanding how to get SRCALPHA working too.
> >
> >
> > On 8/22/07, Brian Fisher <brian@xxxxxxxxxxxxxxxxxxx> wrote:
> > > On 8/21/07, René Dudfield <renesd@xxxxxxxxx> wrote:
> > > > It turns out you need to raise exceptions from init methods like this:
> > > >         RAISE (PyExc_SDLError, SDL_GetError ());
> > > >         return -1;
> > > >
> > > I'm not sure what part of those to lines you are referring to when you
> > > say "like this" - It looks like you are saying all init methods must
> > > raise an exception type of SDL error and must propagate the text of an
> > > SDL error - but if your error doesn't come from SDL, than I can't see
> > > how that would apply?
> > >
> > >
> > > > Another TODO is to check for endian compliance... I'm not sure if the
> > > > masks are set correctly in there for big endian.  There's no checks in
> > > > the source for endian anyway.
> > > >
> > > I don't see why endian-ness would have anything to do with the masks
> > > you pass in... if you passed in some masks, than I would assume those
> > > are the mask you want to use... like say you passed in a mask that
> > > says blue is in the msb - then you want it in the msb, right?
> > > endianness only affects the translation from byte order to byte
> > > significance in an int... i.e. it would only be an issue if they had
> > > been asking for byte order and we were building a mask from that.
> > >
> > >
> > > > However I haven't added your test for keyword arguments yet.  I'm not
> > > > sure it's a good idea or not to add keyword argument support to all
> > > > the functions this late in the release process.  We'd need a bunch
> > > > more tests, and need to measure any performance difference adding
> > > > keyword arguments would make.  If keywords don't add any performance
> > > > change for the case when they are not used, then they should
> > > > definitely go in.  If it makes games drop from say 30fps to 20fps...
> > > > then they  should definitely not go in.  We need to test it.
> > > >
> > > Well I'd be happy to do a lot of the coding and performance testing
> > > for supporting keyword arguments if I knew how to write extension code
> > > to make keyword arguments work... does anybody know how to do that?
> > >
> > > Also, for what it's worth, after I discovered this bug, I found that
> > > it affected half of the times I had made surfaces, and in some places
> > > I put in convert_alpha crap to work around it. meaning I think people
> > > hit the keyword argument not working thing a lot, especially
> > > considering the docs imply the keyword arguments will work.
> > >
> >
>