aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorfalkTX <falktx@falktx.com>2021-08-27 21:13:30 +0000
committerDavid Robillard <d@drobilla.net>2021-08-28 12:58:23 -0400
commit79116b0431e3be95f5abcac0c456361e486824d8 (patch)
tree8a1b0b608f003f27917cdf0f49abc4ded6dea3a8 /src
parentce3e164defaa456e425a9b07095f69bc1e913233 (diff)
downloadpugl-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.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/x11.c b/src/x11.c
index 57dbea5..455ee20 100644
--- a/src/x11.c
+++ b/src/x11.c
@@ -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);