diff options
author | falkTX <falktx@falktx.com> | 2021-08-27 21:13:30 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2021-08-28 12:58:23 -0400 |
commit | 79116b0431e3be95f5abcac0c456361e486824d8 (patch) | |
tree | 8a1b0b608f003f27917cdf0f49abc4ded6dea3a8 /src | |
parent | ce3e164defaa456e425a9b07095f69bc1e913233 (diff) | |
download | pugl-79116b0431e3be95f5abcac0c456361e486824d8.tar.gz pugl-79116b0431e3be95f5abcac0c456361e486824d8.tar.bz2 pugl-79116b0431e3be95f5abcac0c456361e486824d8.zip |
X11: Check for XRandR extension before usage
It happens in practice that XRandR is enabled in the build but is not available
at runtime, particularly with X11 forwarding over SSH. This properly queries
the extension first to avoid crashing in such situations.
Diffstat (limited to 'src')
-rw-r--r-- | src/x11.c | 15 |
1 files changed, 9 insertions, 6 deletions
@@ -366,12 +366,15 @@ puglRealize(PuglView* const view) } #ifdef HAVE_XRANDR - // Set refresh rate hint to the real refresh rate - XRRScreenConfiguration* conf = XRRGetScreenInfo(display, parent); - short current_rate = XRRConfigCurrentRate(conf); - - view->hints[PUGL_REFRESH_RATE] = current_rate; - XRRFreeScreenConfigInfo(conf); + int ignored = 0; + if (XRRQueryExtension(display, &ignored, &ignored)) { + // Set refresh rate hint to the real refresh rate + XRRScreenConfiguration* conf = XRRGetScreenInfo(display, parent); + short current_rate = XRRConfigCurrentRate(conf); + + view->hints[PUGL_REFRESH_RATE] = current_rate; + XRRFreeScreenConfigInfo(conf); + } #endif updateSizeHints(view); |