Vitaliy Margolen wrote:
Chris Ahrendt wrote:
fail: if(wined3d_fake_gl_context_hdc) ReleaseDC(wined3d_fake_gl_context_hwnd, wined3d_fake_gl_context_hdc); wined3d_fake_gl_context_hdc = NULL; if(wined3d_fake_gl_context_hwnd) DestroyWindow(wined3d_fake_gl_context_hwnd); wined3d_fake_gl_context_hwnd = NULL; if(glCtx) pwglDeleteContext(glCtx); LeaveCriticalSection(&wined3d_fake_gl_context_cs); return FALSE;
into a routine and then do a
return fakeContextFail(glCtx);
That will turn into nightmare when tracking a locking problem down. Call to LeaveCriticalSection should always be in the same function as EnterCriticalSection. Same applies to any resource that you do not want to leak. That is much more important then calling a function a "routine" and replacing all goto's with that function call.
Also I'd like to show how you can free local variables?
ok it was late when I was writing this =)
the glCtx and the leave critical section can be moved back into the main routine.. the hdc and hwnd are globals so thats not a problem... next question is does the hdc and hwnd memory allocation get freed in the releaseDC and destroy window calls before the nulls?
Chris