NSGL fullscreen toggling

This works mostly, it fades to black changes the screen res then fades into the opengl context, which is great (but took me way too long), the problem though is it works once.
If you go to fullscreen and back then try to go to fullscreen again it fades alright and looks like its working but at the end it jumps back to the previous screen res and there's no fullscreen context.

Some pointers would be very helpful because im not sure if what im doing here is even right at all, thanks in advance.

I've taken to code to the bare minimum, it now just catures the display then changes the resolution. For some reason I am now not getting anything visual when in fullscreen mode.
Is there anything clearly wrong here or somthing i'm missing?

fullscreen = NO;
}
else {
NSLog(@"Big mode");
desktopMode = CGDisplayCurrentMode(kCGDirectMainDisplay); // desktopMode is an instance variable of the class so that It is kept for returning to later on
fullScreenMode = CGDisplayBestModeForParameters(kCGDirectMainDisplay, 32, 800, 600, NULL);