gotcha. Sounds like you've got a very good bead on it then.

On Fri, Jun 13, 2008 at 11:36 AM, Lenard Lindstrom <[EMAIL PROTECTED]> wrote:

> I tried altering surface.c to lock a pyagme.OPENGL source surface before
> blitting. SDL_BlitSurface returns error "Surfaces must not be locked during
> blit". Drawing a circle to an opengl video surface does nothing, even when
> locked [*]. Surface.mustlock() is false for an opengl surface. The evidence
> is an SDL_OPENGL video surface has no pixel data. If there are SDL examples
> to the contrary I am curious to see them. Even if it is an SDL problem
> Pygame still crashes. Python is not C, so when something is not supported it
> should raise a meaningful exception, not segfault or quietly do nothing. In
> my opinion an opengl video surface is an incomplete surface, so is not a
> Pygame Surface. If SDL is fixed in a future date then an opengl video
> surface can become a Surface. That is the nice thing about duck typing.
>
> Lenard
>
>
> [*] draw test program.
> import pygame
> from pygame.locals import *
>
> screen = pygame.display.set_mode((640,480), OPENGL|DOUBLEBUF)
> if screen.mustlock():
>   print "The screen needs locking."
> else:
>   print "The screen needs no lock."
> pygame.display.flip()
> screen.lock()
> pygame.draw.circle(screen, (255, 255, 255), (200, 200), 50)
> screen.unlock()
> pygame.display.flip()
> while 1:
>   evt = pygame.event.wait()
>   if (evt.type == QUIT):
>       break
> pygame.quit()
>
>
>
> Brian Fisher wrote:
>
>> Looking over this whole thread, I can't help but think a lot of the
>> thinking towards opengl display surfaces is wrong with respect to the way
>> SDL is meant to work - the whole idea of locking surfaces with SDL is that
>> the pixels member is invalid unless the surface is locked. As long as a
>> routine respects that when it needs to access the pixels, and as long as an
>> OpenGL display surface supports being locked in order to get a valid pixels
>> pointer, it should all work (albeit super slow). Image saving and draw
>> routines in particular should all work in that case as well.
>>
>> If the problem is that locking doesn't work for an OpenGL display surface,
>> then it seems that would be an SDL problem, and any pygame fix would be
>> working around an SDL problem in a clugey way.
>>
>>
>>
>

Reply via email to