diff options
| author | Yaron Cohen-Tal <yaronct@gmail.com> | 2015-09-29 11:57:55 +0300 |
|---|---|---|
| committer | Yaron Cohen-Tal <yaronct@gmail.com> | 2015-09-29 11:57:55 +0300 |
| commit | b3b8bd9af7bf1fcfe544fd131f4d4f0d117ae7bc (patch) | |
| tree | ba431ee1a13c83519ab5ddf63d28211e619c37f3 /src | |
| parent | 7d1c96c85ffcfccfc4ddd36a2be96a219134bed8 (diff) | |
| download | libepoxy-b3b8bd9af7bf1fcfe544fd131f4d4f0d117ae7bc.tar.gz | |
Fix "epoxy_glx_version" to handle the case when GLX is not active on the display.
Diffstat (limited to 'src')
| -rw-r--r-- | src/dispatch_glx.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/dispatch_glx.c b/src/dispatch_glx.c index f1ff447..36d513a 100644 --- a/src/dispatch_glx.c +++ b/src/dispatch_glx.c @@ -54,22 +54,23 @@ epoxy_glx_version(Display *dpy, int screen) int client_major, client_minor; int server, client; const char *version_string; - int ret; + int ret=0, sscanf_ret; - version_string = glXQueryServerString(dpy, screen, GLX_VERSION); - ret = sscanf(version_string, "%d.%d", &server_major, &server_minor); - assert(ret == 2); - server = server_major * 10 + server_minor; + if ((version_string = glXQueryServerString(dpy, screen, GLX_VERSION))) + { + sscanf_ret = sscanf(version_string, "%d.%d", &server_major, &server_minor); + assert(sscanf_ret == 2); + server = server_major * 10 + server_minor; + if ((version_string = glXGetClientString(dpy, GLX_VERSION))) + { + sscanf_ret = sscanf(version_string, "%d.%d", &client_major, &client_minor); + assert(sscanf_ret == 2); + client = client_major * 10 + client_minor; + ret = client <= server ? client : server; + } + } - version_string = glXGetClientString(dpy, GLX_VERSION); - ret = sscanf(version_string, "%d.%d", &client_major, &client_minor); - assert(ret == 2); - client = client_major * 10 + client_minor; - - if (client < server) - return client; - else - return server; + return ret; } /** |
