Fixup: Fixup
diff --git a/src/x11_init.c b/src/x11_init.c
index 2951c39..2cd120f 100644
--- a/src/x11_init.c
+++ b/src/x11_init.c
@@ -627,9 +627,9 @@
     if (_glfw.x11.xss.handle)
     {
         _glfw.x11.xss.QueryExtension = (PFN_XScreenSaverQueryExtension)
-            dlsym(_glfw.x11.xss.handle, "XScreenSaverQueryExtension");
+            _glfw_dlsym(_glfw.x11.xss.handle, "XScreenSaverQueryExtension");
         _glfw.x11.xss.Suspend = (PFN_XScreenSaverSuspend)
-            dlsym(_glfw.x11.xss.handle, "XScreenSaverSuspend");
+            _glfw_dlsym(_glfw.x11.xss.handle, "XScreenSaverSuspend");
 
         if (XScreenSaverQueryExtension(_glfw.x11.display,
                                        &_glfw.x11.xss.eventBase,
@@ -1080,6 +1080,12 @@
         _glfw.x11.xinerama.handle = NULL;
     }
 
+    if (_glfw.x11.xss.handle)
+    {
+        _glfw_dlclose(_glfw.x11.xss.handle);
+        _glfw.x11.xss.handle = NULL;
+    }
+
     if (_glfw.x11.dbus.session)
     {
         dbus_connection_close(_glfw.x11.dbus.session);