diff options
Diffstat (limited to 'src/platform/linux')
| -rw-r--r-- | src/platform/linux/api_dispatch.rs | 24 | 
1 files changed, 22 insertions, 2 deletions
diff --git a/src/platform/linux/api_dispatch.rs b/src/platform/linux/api_dispatch.rs index f25bda9..0fae6a0 100644 --- a/src/platform/linux/api_dispatch.rs +++ b/src/platform/linux/api_dispatch.rs @@ -162,9 +162,29 @@ impl<'a> Iterator for WaitEventsIterator<'a> {  impl Window {      pub fn new(builder: BuilderAttribs) -> Result<Window, CreationError> { +        let window = builder.window; +        let pf_reqs = builder.pf_reqs; +        let opengl = builder.opengl; +          match *BACKEND { -            Backend::Wayland => wayland::Window::new(builder).map(Window::Wayland), -            Backend::X(ref connec) => x11::Window::new(connec, builder).map(Window::X), +            Backend::Wayland => { +                let opengl = opengl.map_sharing(|w| match w { +                    &Window::Wayland(ref w) => w, +                    _ => panic!()       // TODO: return an error +                }); + +                wayland::Window::new(&window, &pf_reqs, &opengl).map(Window::Wayland) +            }, + +            Backend::X(ref connec) => { +                let opengl = opengl.map_sharing(|w| match w { +                    &Window::X(ref w) => w, +                    _ => panic!()       // TODO: return an error +                }); + +                x11::Window::new(connec, &window, &pf_reqs, &opengl).map(Window::X) +            }, +              Backend::Error(ref error) => Err(CreationError::NoBackendAvailable(Box::new(error.clone())))          }      }  | 
