Multi-threaded SDL_Flip()-ing

I hope someone can enlighten me:

I have created a SDL thread which just waits for a SDL semaphore to be unlocked, then flips the back to the front-buffer. Here’s the thread code (in

while ActiveCSDL <> nil do begin
if ActiveCSDL <> nil then
Result := nil;

ActiveCSDL is here my class wrapper around SDL. As soon as it is destroyed, it is set to ‘nil’, which causes this thread to quit. So far, so good, it
actually runs without any errors over here, BUT… The Flip() is not happening at all! It IS calling the SDL_Flip(), I tracked it, but it’s just not

Anybody got some clues? I’m affraid this is just illegal with SDL?

Sorry, I fixed it already. Very stupid of me: The ActiveCSDL.Flip() was actually just releasing the semaphore again, stupid me…

I’ll sit in that corner over there, quietly being very ashamed of myself…


I wonder if anyone could test the GemUta microtile array implemenatation
(for dealing with dirty rectangles) with a more real-world project than
my tests are. The goal of Uta (Microtile array) is that you feed it with
a number of rectangles and you will get rectangles that cover the same
or little bigger area and don’t overlap.

I’d appreciate any answer, e.g. if it is faster or slower that you
current dirty rectangles management, etc.

The attachment contains the header and source file, licenced under LGPL.

-Matej Knopp

P.S. The results of my tests were quite promising so I’d like to know if
it will prove so in the praxis too.

-------------- next part --------------
A non-text attachment was scrubbed…
Name: gem-uta.tar.gz
Type: application/x-gzip
Size: 4785 bytes
Desc: not available

Sorry! It seems that I should upgrade my evolution :). This really
wasn’t meant as a reply. My fault. Please don’t answer it here. I’ll
repost the previous message.