diff options
| -rw-r--r-- | src/api/glx/mod.rs | 12 | 
1 files changed, 12 insertions, 0 deletions
| diff --git a/src/api/glx/mod.rs b/src/api/glx/mod.rs index 9f3e084..a8a765f 100644 --- a/src/api/glx/mod.rs +++ b/src/api/glx/mod.rs @@ -41,6 +41,18 @@ impl Context {                     opengl: &'a GlAttributes<&'a Context>, display: *mut ffi::Display)                     -> Result<ContextPrototype<'a>, CreationError>      { +        // This is completely ridiculous, but VirtualBox's OpenGL driver needs some call handled by +        // *it* (i.e. not Mesa) to occur before anything else can happen. That is because +        // VirtualBox's OpenGL driver is going to apply binary patches to Mesa in the DLL +        // constructor and until it's loaded it won't have a chance to do that. +        // +        // The easiest way to do this is to just call `glXQueryVersion()` before doing anything +        // else. See: https://www.virtualbox.org/ticket/8293 +        let (mut major, mut minor) = (0, 0); +        unsafe { +            glx.QueryVersion(display as *mut _, &mut major, &mut minor); +        } +          // loading the list of extensions          let extensions = unsafe {              let extensions = glx.QueryExtensionsString(display as *mut _, 0);     // FIXME: screen number | 
