diff options
author | Hans de Goede <hdegoede@redhat.com> | 2017-03-13 12:18:53 +0100 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2017-03-13 12:18:53 +0100 |
commit | 6273d9dacbf165331c21bcda5a8945c8931d87b8 (patch) | |
tree | 38809412ec30687e8f163821263a9e0c7a7551b6 /xdriinfo.c | |
parent | 9f0b01c590d1bceb31657edbf52aa94680428038 (diff) |
Fix xdriinfo not working with glvnd
For glx calls to work on libglvnd as glx provider we must first call
glXGetClientString. This also means that we can no longer take the
shortcut to not open the Display when a driver name is past to options.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'xdriinfo.c')
-rw-r--r-- | xdriinfo.c | 29 |
1 files changed, 12 insertions, 17 deletions
@@ -112,23 +112,9 @@ int main (int argc, char *argv[]) { return 1; } } - /* if the argument to the options command is a driver name, we can handle - * it without opening an X connection */ - if (func == OPTIONS && screenNum == -1) { - const char *options = (*GetDriverConfig) (funcArg); - if (!options) { - fprintf (stderr, - "Driver \"%s\" is not installed or does not support configuration.\n", - funcArg); - return 1; - } - printf ("%s", options); - if (isatty (STDOUT_FILENO)) - printf ("\n"); - return 0; - } + /* driver command needs a valid screen number */ - else if (func == DRIVER && screenNum == -1) { + if (func == DRIVER && screenNum == -1) { fprintf (stderr, "Invalid screen number \"%s\".\n", funcArg); return 1; } @@ -146,6 +132,9 @@ int main (int argc, char *argv[]) { return 1; } + /* Call glXGetClientString to load vendor libs on glvnd enabled systems */ + glXGetClientString (dpy, GLX_EXTENSIONS); + switch (func) { case NSCREENS: printf ("%d", nScreens); @@ -165,7 +154,13 @@ int main (int argc, char *argv[]) { break; } case OPTIONS: { - const char *name = (*GetScreenDriver) (dpy, screenNum), *options; + const char *name, *options; + + if (screenNum == -1) { + name = funcArg; + } else { + name = (*GetScreenDriver) (dpy, screenNum); + } if (!name) { fprintf (stderr, "Screen \"%d\" is not direct rendering capable.\n", screenNum); |