diff --git a/tests/glfwinfo.c b/tests/glfwinfo.c index 11a84612..52d6e0de 100644 --- a/tests/glfwinfo.c +++ b/tests/glfwinfo.c @@ -119,6 +119,32 @@ static void list_extensions(int major, int minor) putchar('\n'); } +static GLboolean valid_version(void) +{ + int major, minor, revision; + + glfwGetVersion(&major, &minor, &revision); + + printf("GLFW header version: %u.%u.%u\n", + GLFW_VERSION_MAJOR, + GLFW_VERSION_MINOR, + GLFW_VERSION_REVISION); + + printf("GLFW library version: %u.%u.%u\n", major, minor, revision); + + if (major != GLFW_VERSION_MAJOR) + { + printf("*** ERROR: GLFW major version mismatch! ***\n"); + return GL_FALSE; + } + + if (minor != GLFW_VERSION_MINOR || revision != GLFW_VERSION_REVISION) + printf("*** WARNING: GLFW version mismatch! ***\n"); + + printf("GLFW library version string: \"%s\"\n", glfwGetVersionString()); + return GL_TRUE; +} + int main(int argc, char** argv) { int ch, profile = 0, strategy = 0, major = 1, minor = 0, revision; @@ -126,6 +152,9 @@ int main(int argc, char** argv) GLint flags, mask; GLFWwindow window; + if (!valid_version()) + exit(EXIT_FAILURE); + while ((ch = getopt(argc, argv, "dfhlm:n:p:r:")) != -1) { switch (ch) @@ -181,26 +210,6 @@ int main(int argc, char** argv) argc -= optind; argv += optind; - // Report GLFW version - - glfwGetVersion(&major, &minor, &revision); - - printf("GLFW header version: %u.%u.%u\n", - GLFW_VERSION_MAJOR, - GLFW_VERSION_MINOR, - GLFW_VERSION_REVISION); - - printf("GLFW library version: %u.%u.%u\n", major, minor, revision); - - if (major != GLFW_VERSION_MAJOR || - minor != GLFW_VERSION_MINOR || - revision != GLFW_VERSION_REVISION) - { - printf("*** WARNING: GLFW version mismatch! ***\n"); - } - - printf("GLFW library version string: \"%s\"\n", glfwGetVersionString()); - // Initialize GLFW and create window glfwSetErrorCallback(error_callback);