From a72e06cf1b8f0e037be8a0e3152b9b0ab9ef2c95 Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Fri, 24 Apr 2015 14:22:57 +0200 Subject: Reorganize the Linux implementation and split OSMesa and X11 --- src/api/x11/headless.rs | 72 ------------------------------------------------- 1 file changed, 72 deletions(-) delete mode 100644 src/api/x11/headless.rs (limited to 'src/api/x11/headless.rs') diff --git a/src/api/x11/headless.rs b/src/api/x11/headless.rs deleted file mode 100644 index 8dffdea..0000000 --- a/src/api/x11/headless.rs +++ /dev/null @@ -1,72 +0,0 @@ -use BuilderAttribs; -use CreationError; -use CreationError::OsError; -use libc; -use std::{mem, ptr}; -use super::ffi; - -pub struct HeadlessContext { - context: ffi::OSMesaContext, - buffer: Vec, - width: u32, - height: u32, -} - -impl HeadlessContext { - pub fn new(builder: BuilderAttribs) -> Result { - let dimensions = builder.dimensions.unwrap(); - - Ok(HeadlessContext { - width: dimensions.0, - height: dimensions.1, - buffer: ::std::iter::repeat(unsafe { mem::uninitialized() }) - .take((dimensions.0 * dimensions.1) as usize).collect(), - context: unsafe { - let ctxt = ffi::OSMesaCreateContext(0x1908, ptr::null_mut()); - if ctxt.is_null() { - return Err(OsError("OSMesaCreateContext failed".to_string())); - } - ctxt - } - }) - } - - pub unsafe fn make_current(&self) { - let ret = ffi::OSMesaMakeCurrent(self.context, - self.buffer.as_ptr() as *mut libc::c_void, - 0x1401, self.width as libc::c_int, self.height as libc::c_int); - - if ret == 0 { - panic!("OSMesaMakeCurrent failed") - } - } - - pub fn is_current(&self) -> bool { - unsafe { ffi::OSMesaGetCurrentContext() == self.context } - } - - pub fn get_proc_address(&self, addr: &str) -> *const () { - unsafe { - use std::ffi::CString; - let c_str = CString::new(addr.as_bytes().to_vec()).unwrap(); - mem::transmute(ffi::OSMesaGetProcAddress(mem::transmute(c_str.as_ptr()))) - } - } - - /// See the docs in the crate root file. - pub fn get_api(&self) -> ::Api { - ::Api::OpenGl - } - - pub fn set_window_resize_callback(&mut self, _: Option) { - } -} - -impl Drop for HeadlessContext { - fn drop(&mut self) { - unsafe { ffi::OSMesaDestroyContext(self.context) } - } -} - -unsafe impl Send for HeadlessContext {} -unsafe impl Sync for HeadlessContext {} -- cgit v1.2.3