diff --git a/tests/glfwinfo.c b/tests/glfwinfo.c index 89298ff6..99be17e7 100644 --- a/tests/glfwinfo.c +++ b/tests/glfwinfo.c @@ -197,10 +197,8 @@ static GLboolean valid_version(void) int main(int argc, char** argv) { - int ch, profile = 0, strategy = 0, behavior = 0; - int api = 0, major = 1, minor = 0, revision; - GLboolean debug = GL_FALSE, forward = GL_FALSE, list = GL_FALSE; - GLint flags, mask; + int ch, api, major, minor, revision; + GLboolean list = GL_FALSE; GLFWwindow* window; enum { API, BEHAVIOR, DEBUG, FORWARD, HELP, EXTENSIONS, @@ -220,6 +218,16 @@ int main(int argc, char** argv) { NULL, 0, NULL, 0 } }; + // Initialize GLFW and create window + + if (!valid_version()) + exit(EXIT_FAILURE); + + glfwSetErrorCallback(error_callback); + + if (!glfwInit()) + exit(EXIT_FAILURE); + while ((ch = getopt_long(argc, argv, "a:b:dfhlm:n:p:s:", options, NULL)) != -1) { switch (ch) @@ -227,9 +235,9 @@ int main(int argc, char** argv) case 'a': case API: if (strcasecmp(optarg, API_NAME_OPENGL) == 0) - api = GLFW_OPENGL_API; + glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_API); else if (strcasecmp(optarg, API_NAME_OPENGL_ES) == 0) - api = GLFW_OPENGL_ES_API; + glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API); else { usage(); @@ -239,9 +247,15 @@ int main(int argc, char** argv) case 'b': case BEHAVIOR: if (strcasecmp(optarg, BEHAVIOR_NAME_NONE) == 0) - behavior = GLFW_RELEASE_BEHAVIOR_NONE; + { + glfwWindowHint(GLFW_CONTEXT_RELEASE_BEHAVIOR, + GLFW_RELEASE_BEHAVIOR_NONE); + } else if (strcasecmp(optarg, BEHAVIOR_NAME_FLUSH) == 0) - behavior = GLFW_RELEASE_BEHAVIOR_FLUSH; + { + glfwWindowHint(GLFW_CONTEXT_RELEASE_BEHAVIOR, + GLFW_RELEASE_BEHAVIOR_FLUSH); + } else { usage(); @@ -250,11 +264,11 @@ int main(int argc, char** argv) break; case 'd': case DEBUG: - debug = GL_TRUE; + glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); break; case 'f': case FORWARD: - forward = GL_TRUE; + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); break; case 'h': case HELP: @@ -266,18 +280,24 @@ int main(int argc, char** argv) break; case 'm': case MAJOR: - major = atoi(optarg); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, atoi(optarg)); break; case 'n': case MINOR: - minor = atoi(optarg); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, atoi(optarg)); break; case 'p': case PROFILE: if (strcasecmp(optarg, PROFILE_NAME_CORE) == 0) - profile = GLFW_OPENGL_CORE_PROFILE; + { + glfwWindowHint(GLFW_OPENGL_PROFILE, + GLFW_OPENGL_CORE_PROFILE); + } else if (strcasecmp(optarg, PROFILE_NAME_COMPAT) == 0) - profile = GLFW_OPENGL_COMPAT_PROFILE; + { + glfwWindowHint(GLFW_OPENGL_PROFILE, + GLFW_OPENGL_COMPAT_PROFILE); + } else { usage(); @@ -287,9 +307,15 @@ int main(int argc, char** argv) case 's': case ROBUSTNESS: if (strcasecmp(optarg, STRATEGY_NAME_NONE) == 0) - strategy = GLFW_NO_RESET_NOTIFICATION; + { + glfwWindowHint(GLFW_CONTEXT_ROBUSTNESS, + GLFW_NO_RESET_NOTIFICATION); + } else if (strcasecmp(optarg, STRATEGY_NAME_LOSE) == 0) - strategy = GLFW_LOSE_CONTEXT_ON_RESET; + { + glfwWindowHint(GLFW_CONTEXT_ROBUSTNESS, + GLFW_LOSE_CONTEXT_ON_RESET); + } else { usage(); @@ -302,35 +328,6 @@ int main(int argc, char** argv) } } - // Initialize GLFW and create window - - if (!valid_version()) - exit(EXIT_FAILURE); - - glfwSetErrorCallback(error_callback); - - if (!glfwInit()) - exit(EXIT_FAILURE); - - if (major != 1 || minor != 0) - { - glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, major); - glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minor); - } - - if (api) - glfwWindowHint(GLFW_CLIENT_API, api); - if (debug) - glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); - if (forward) - glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); - if (profile) - glfwWindowHint(GLFW_OPENGL_PROFILE, profile); - if (strategy) - glfwWindowHint(GLFW_CONTEXT_ROBUSTNESS, strategy); - if (behavior) - glfwWindowHint(GLFW_CONTEXT_RELEASE_BEHAVIOR, behavior); - glfwWindowHint(GLFW_VISIBLE, GL_FALSE); window = glfwCreateWindow(200, 200, "Version", NULL, NULL); @@ -363,6 +360,8 @@ int main(int argc, char** argv) { if (major >= 3) { + GLint flags; + glGetIntegerv(GL_CONTEXT_FLAGS, &flags); printf("%s context flags (0x%08x):", get_api_name(api), flags); @@ -387,6 +386,7 @@ int main(int argc, char** argv) if (major >= 4 || (major == 3 && minor >= 2)) { + GLint mask; int profile = glfwGetWindowAttrib(window, GLFW_OPENGL_PROFILE); glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &mask);