I'm not sure I agree completely. The issue might not be with OpenGL, but with how vendors implement OpenGL with their drivers. The whole idea of having a front and back buffer should be enough to prevent tearing when VSync is disabled, but the driver implementations allow for the back buffer to be modified during the buffer swap, introducing tearing. I don't exactly know how long the refresh takes (probably depends on display HW), but assuming it is only a few milliseconds, it would make it much easier on the developer to lock out the back buffer during the transition to the front for the few milliseconds and making the VSync option a bit more transparent to the developer. Makes sense to me anyways, probably much more involved/complicated or nVidia/Intel/ATI would have already solved this...

I appreciate eveyones help. I guess the code that I posted is mostly correct, as nobody seemed to point out incorrect OpenGL usage or better ways of doing things. I think for now, I may try and serialize the pixel uploads for the two windows on the same screen by waiting until just after the VSync in hopes that it will correct the fighting window issues.