Inclusion of internal headers is already both centralized and follows
strict rules. Inclusion guards are both an unneccessary maintenance
burden and may hide inclusion order bugs.
PFN_FunctionName is more readable than SCREAMSOUP_T.
Context creation API function typedefs are kept as-is where the original
header provided them, for compatibility and familiarity reasons.
This removes window re-creation logic by performing the initial context
creation on the helper window, simplifying both window and context
creation and paving the way for attaching to existing window handles
without compromising on context or framebuffer hint support.
The context related parts of _GLFWwndconfig have been moved to
_GLFWctxconfig and given better names. Window hint and attribute
members have been renamed to match.
The default behavior of WGL, EGL and GLX is to choose a config that has
/at least/ the specified number of bits, whereas the GLFW 2 behavior was
to choose the closest match with very few hard constraints. Moving the
responsibility of finding the supported minimum values to the client was
problematic, as there's no way to enumerate supported configurations,
forcing the client to perform multiple (and slow) window/context
creation attempts. Not even the currently set defaults (24-bit color
and depth, 8-bit stencil) is universally supported, as bug reports show.
Variables created within a DLL with __declspec(thread) may not get a TLS
slot on Windows XP, leading to segfaults on use. Moving to TlsAlloc
works around this.
Renamed _glfwLibrary to _glfw and made all substructs lower-case, making
global variable names easier to read and type. Partially inspired by the
internal naming conventions of glwt.