Implemented dynamic loading of xcb, xlib_xcb and xlib. #287
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This implements dynamic loading of the xcb library through the
dlfeature flag and dynamic loading of xlib through thexlib_xcb_dlfeature flag.When
xlib_xcb_dlis specifiedx11-dlis used instead ofx11, which is why I used another feature flag. It is possible to specify bothxlib_xcbandxlib_xcb_dl, in which casexlib_xcb_dlhas precedence. This means thatcargo test --all-featureswill always test with dynamic loading.Loading of the libraries is mostly analogous to how x11-dl does it, with minor changes to error reporting and the usage of OnceLock instead of OnceCell.
For the user of this crate dynamic loading is mostly invisible, since loading of the library is bound to the connection. It only currently gets messy in the opengl_window example, where I needed to support both dynamic loading and dynamic linking for xlib and glx due to being able to support
cargo test --all-featuresin addition to it's default required features.Closes #88