Ok, I have been informed there is are PyGame blits not derived from SDL, so
that explains that.

{pygame_AlphaBlit, pygame_Blit} from clip above looks like

Seems oblivious (sic) now it's pointed out.


On Sat, Aug 16, 2008 at 4:37 PM, Nicholas Dudfield <[EMAIL PROTECTED]>wrote:

> I had a little play with the test_blit_to_self.py:
>
> SDL VERSION:
>
> 1.2.13 prebuilts
>
> PYGAME:
>
> Mingw compiled, svn r 1619
>
> OBSERVATIONS:
>
> Unmodified the test wouldn't run at all as noted earlier.
>
> I don't know if it's any help but I noticed after commenting out the
> "blitting screen to self" section that I could get the "blitting surface to
> self" test and "blitting surface to screen" to run the full 100 cycles if I
> instantiated the Surface `a` with pygame.SRCALPHA flags.
>
> Also, if using BLEND_RGB_ADD flags "blitting screen to self" worked. Also
> screen.copy() worked as a source... but eh.
>
> CONCLUSIONS:
>
> s.blit(s, (0,0)) works if SRCALPHA bits set for s
> screen.blit(screen, step, None, pygame.BLEND_RGB_ADD)
>
> Is that any help for you guys in debugging?? I have no C-fu or I would have
> a tinker myself.
>
> Cheers.
>
> ps... attached modified version of test with "use alpha blit" changes
>
>
> pps.
>
> This is in surface.c around line 1996.... ??
>
>     /* see if we should handle alpha ourselves */
>     if (dst->format->Amask && (dst->flags & SDL_SRCALPHA) &&
>         !(src->format->Amask && !(src->flags & SDL_SRCALPHA)) &&
>         /* special case, SDL works */
>         (dst->format->BytesPerPixel == 2 || dst->format->BytesPerPixel ==
> 4))
>     {
>         result = pygame_AlphaBlit (src, srcrect, dst, dstrect, the_args);
>     }
>     else if (the_args != 0)
>     {
>         result = pygame_Blit (src, srcrect, dst, dstrect, the_args);
>     }
>     else
>     {
>         result = SDL_BlitSurface (src, srcrect, dst, dstrect);
>     }
>
>
>

Reply via email to