I've been getting a few problems with my oft-used DDraw surfaces in a program I'm currently working on. Basically, when I multitask out and back in again, several surfaces aren't being drawn. When I debugged this problem it led back to the surface Lock commands returning DDERR_SURFACEBUSY. According to the documentation, this means that I'm trying to lock a surface that is already locked. My functions clearly unlock each surface after using it, however. I have been able to solve the problem by calling Unlock(NULL) on the surface when I get a DDERR_SURFACEBUSY error, but is there a way to stop this altogether? I don't really want to have to look for this error every time I lock a surface, and I don't think this is normal behaviour (or is it?).
At least one of the surfaces that exhibits this behaviour is created with the DDSCAPS_SYSTEMMEMORY flag, and thus should not be in video memory, which was my original suspicion.
If anyone has any suggestions I'd be glad to hear them.
[This message has been edited by Starfall (edited October 31, 1999).]