Merge pull request #652 from tomaka/rem-gl-common

[Breaking change] Remove public exports of gl_common and libc
This commit is contained in:
tomaka 2015-11-09 10:10:22 +01:00
commit bfc46c5670
23 changed files with 41 additions and 65 deletions

View file

@ -13,11 +13,11 @@ build = "build.rs"
[dependencies] [dependencies]
gl_common = "0.1.0" gl_common = "0.1.0"
lazy_static = "0.1.10" lazy_static = "0.1.10"
libc = "0.1" libc = "0.2"
shared_library = "0.1.0" shared_library = "0.1.0"
[build-dependencies] [build-dependencies]
gl_generator = "0.1.0" gl_generator = "0.2.0"
khronos_api = "0.0.8" khronos_api = "0.0.8"
[dev-dependencies] [dev-dependencies]
@ -27,22 +27,22 @@ clock_ticks = "0.1.0"
version = "0.1" version = "0.1"
[target.i386-apple-ios.dependencies] [target.i386-apple-ios.dependencies]
objc = ">=0.1.0, <=0.1.7" objc = "0.1.8"
[target.x86_64-apple-ios.dependencies] [target.x86_64-apple-ios.dependencies]
objc = ">=0.1.0, <=0.1.7" objc = "0.1.8"
[target.aarch64-apple-ios.dependencies] [target.aarch64-apple-ios.dependencies]
objc = ">=0.1.0, <=0.1.7" objc = "0.1.8"
[target.armv7s-apple-ios.dependencies] [target.armv7s-apple-ios.dependencies]
objc = ">=0.1.0, <=0.1.7" objc = "0.1.8"
[target.armv7-apple-ios.dependencies] [target.armv7-apple-ios.dependencies]
objc = ">=0.1.0, <=0.1.7" objc = "0.1.8"
[target.x86_64-apple-darwin.dependencies] [target.x86_64-apple-darwin.dependencies]
objc = ">=0.1.0, <=0.1.7" objc = "0.1.8"
cgl = "0.1" cgl = "0.1"
cocoa = "0.1.4" cocoa = "0.1.4"
core-foundation = "0" core-foundation = "0"
@ -53,7 +53,7 @@ winapi = "0.2"
shell32-sys = "0.1" shell32-sys = "0.1"
gdi32-sys = "0.1" gdi32-sys = "0.1"
user32-sys = "~0.1.2" user32-sys = "~0.1.2"
kernel32-sys = "0.1" kernel32-sys = "0.2"
dwmapi-sys = "0.1" dwmapi-sys = "0.1"
[target.i686-pc-windows-msvc.dependencies] [target.i686-pc-windows-msvc.dependencies]
@ -61,7 +61,7 @@ winapi = "0.2"
shell32-sys = "0.1" shell32-sys = "0.1"
gdi32-sys = "0.1" gdi32-sys = "0.1"
user32-sys = "~0.1.2" user32-sys = "~0.1.2"
kernel32-sys = "0.1" kernel32-sys = "0.2"
dwmapi-sys = "0.1" dwmapi-sys = "0.1"
[target.x86_64-pc-windows-gnu.dependencies] [target.x86_64-pc-windows-gnu.dependencies]
@ -69,7 +69,7 @@ winapi = "0.2"
shell32-sys = "0.1" shell32-sys = "0.1"
gdi32-sys = "0.1" gdi32-sys = "0.1"
user32-sys = "~0.1.2" user32-sys = "~0.1.2"
kernel32-sys = "0.1" kernel32-sys = "0.2"
dwmapi-sys = "0.1" dwmapi-sys = "0.1"
[target.x86_64-pc-windows-msvc.dependencies] [target.x86_64-pc-windows-msvc.dependencies]
@ -77,7 +77,7 @@ winapi = "0.2"
shell32-sys = "0.1" shell32-sys = "0.1"
gdi32-sys = "0.1" gdi32-sys = "0.1"
user32-sys = "~0.1.2" user32-sys = "~0.1.2"
kernel32-sys = "0.1" kernel32-sys = "0.2"
dwmapi-sys = "0.1" dwmapi-sys = "0.1"
[target.i686-unknown-linux-gnu.dependencies] [target.i686-unknown-linux-gnu.dependencies]

View file

@ -13,7 +13,7 @@ pub struct Context {
} }
pub fn load(window: &glutin::Window) -> Context { pub fn load(window: &glutin::Window) -> Context {
let gl = gl::Gl::load(window); let gl = gl::Gl::load_with(|ptr| window.get_proc_address(ptr) as *const _);
let version = unsafe { let version = unsafe {
let data = CStr::from_ptr(gl.GetString(gl::VERSION) as *const _).to_bytes().to_vec(); let data = CStr::from_ptr(gl.GetString(gl::VERSION) as *const _).to_bytes().to_vec();

View file

@ -263,7 +263,7 @@ impl GlContext for Window {
} }
#[inline] #[inline]
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
self.context.get_proc_address(addr) self.context.get_proc_address(addr)
} }
@ -323,7 +323,7 @@ impl GlContext for HeadlessContext {
} }
#[inline] #[inline]
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
self.0.get_proc_address(addr) self.0.get_proc_address(addr)
} }

View file

@ -252,7 +252,7 @@ impl GlContext for Window {
} }
#[inline] #[inline]
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
self.opengl.get_proc_address(addr) self.opengl.get_proc_address(addr)
} }

View file

@ -91,7 +91,7 @@ impl GlContext for HeadlessContext {
} }
#[inline] #[inline]
fn get_proc_address(&self, _addr: &str) -> *const libc::c_void { fn get_proc_address(&self, _addr: &str) -> *const () {
let symbol_name: CFString = _addr.parse().unwrap(); let symbol_name: CFString = _addr.parse().unwrap();
let framework_name: CFString = "com.apple.opengl".parse().unwrap(); let framework_name: CFString = "com.apple.opengl".parse().unwrap();
let framework = unsafe { let framework = unsafe {
@ -100,7 +100,7 @@ impl GlContext for HeadlessContext {
let symbol = unsafe { let symbol = unsafe {
CFBundleGetFunctionPointerForName(framework, symbol_name.as_concrete_TypeRef()) CFBundleGetFunctionPointerForName(framework, symbol_name.as_concrete_TypeRef())
}; };
symbol as *const libc::c_void symbol as *const ()
} }
#[inline] #[inline]

View file

@ -777,7 +777,7 @@ impl GlContext for Window {
} }
} }
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
let symbol_name: CFString = FromStr::from_str(addr).unwrap(); let symbol_name: CFString = FromStr::from_str(addr).unwrap();
let framework_name: CFString = FromStr::from_str("com.apple.opengl").unwrap(); let framework_name: CFString = FromStr::from_str("com.apple.opengl").unwrap();
let framework = unsafe { let framework = unsafe {

View file

@ -284,7 +284,7 @@ impl GlContext for Context {
unsafe { self.egl.GetCurrentContext() == self.context } unsafe { self.egl.GetCurrentContext() == self.context }
} }
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
let addr = CString::new(addr.as_bytes()).unwrap(); let addr = CString::new(addr.as_bytes()).unwrap();
let addr = addr.as_ptr(); let addr = addr.as_ptr();
unsafe { unsafe {

View file

@ -221,7 +221,7 @@ impl GlContext for Window {
true // FIXME: true // FIXME:
} }
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
let addr = CString::new(addr.as_bytes()).unwrap(); let addr = CString::new(addr.as_bytes()).unwrap();
let addr = addr.as_ptr(); let addr = addr.as_ptr();

View file

@ -82,7 +82,7 @@ impl GlContext for Context {
unsafe { self.glx.GetCurrentContext() == self.context } unsafe { self.glx.GetCurrentContext() == self.context }
} }
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
let addr = CString::new(addr.as_bytes()).unwrap(); let addr = CString::new(addr.as_bytes()).unwrap();
let addr = addr.as_ptr(); let addr = addr.as_ptr();
unsafe { unsafe {

View file

@ -384,12 +384,12 @@ impl GlContext for Window {
false false
} }
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
let addr_c = CString::new(addr).unwrap(); let addr_c = CString::new(addr).unwrap();
let path = CString::new("/System/Library/Frameworks/OpenGLES.framework/OpenGLES").unwrap(); let path = CString::new("/System/Library/Frameworks/OpenGLES.framework/OpenGLES").unwrap();
unsafe { unsafe {
let lib = dlopen(path.as_ptr(), RTLD_LAZY | RTLD_GLOBAL); let lib = dlopen(path.as_ptr(), RTLD_LAZY | RTLD_GLOBAL);
dlsym(lib, addr_c.as_ptr()) dlsym(lib, addr_c.as_ptr()) as *const _
} }
} }

View file

@ -106,7 +106,7 @@ impl GlContext for OsMesaContext {
unsafe { osmesa_sys::OSMesaGetCurrentContext() == self.context } unsafe { osmesa_sys::OSMesaGetCurrentContext() == self.context }
} }
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
unsafe { unsafe {
let c_str = CString::new(addr.as_bytes().to_vec()).unwrap(); let c_str = CString::new(addr.as_bytes().to_vec()).unwrap();
mem::transmute(osmesa_sys::OSMesaGetProcAddress(mem::transmute(c_str.as_ptr()))) mem::transmute(osmesa_sys::OSMesaGetProcAddress(mem::transmute(c_str.as_ptr())))

View file

@ -456,7 +456,7 @@ impl GlContext for Window {
} }
#[inline] #[inline]
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
self.context.get_proc_address(addr) self.context.get_proc_address(addr)
} }

View file

@ -171,7 +171,7 @@ impl GlContext for Context {
unsafe { gl::wgl::GetCurrentContext() == self.context.0 as *const libc::c_void } unsafe { gl::wgl::GetCurrentContext() == self.context.0 as *const libc::c_void }
} }
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
let addr = CString::new(addr.as_bytes()).unwrap(); let addr = CString::new(addr.as_bytes()).unwrap();
let addr = addr.as_ptr(); let addr = addr.as_ptr();

View file

@ -365,7 +365,7 @@ impl GlContext for Window {
} }
#[inline] #[inline]
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
match self.context { match self.context {
Context::Wgl(ref c) => c.get_proc_address(addr), Context::Wgl(ref c) => c.get_proc_address(addr),
Context::Egl(ref c) => c.get_proc_address(addr), Context::Egl(ref c) => c.get_proc_address(addr),

View file

@ -807,7 +807,7 @@ impl GlContext for Window {
} }
#[inline] #[inline]
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
match self.x.context { match self.x.context {
Context::Glx(ref ctxt) => ctxt.get_proc_address(addr), Context::Glx(ref ctxt) => ctxt.get_proc_address(addr),
Context::Egl(ref ctxt) => ctxt.get_proc_address(addr), Context::Egl(ref ctxt) => ctxt.get_proc_address(addr),

View file

@ -8,9 +8,6 @@ use PixelFormat;
use PixelFormatRequirements; use PixelFormatRequirements;
use Robustness; use Robustness;
use gl_common;
use libc;
use platform; use platform;
/// Object that allows you to build headless contexts. /// Object that allows you to build headless contexts.
@ -103,8 +100,8 @@ impl HeadlessContext {
/// ///
/// Contrary to `wglGetProcAddress`, all available OpenGL functions return an address. /// Contrary to `wglGetProcAddress`, all available OpenGL functions return an address.
#[inline] #[inline]
pub fn get_proc_address(&self, addr: &str) -> *const libc::c_void { pub fn get_proc_address(&self, addr: &str) -> *const () {
self.context.get_proc_address(addr) as *const libc::c_void self.context.get_proc_address(addr)
} }
/// Returns the API that is currently provided by this window. /// Returns the API that is currently provided by this window.
@ -120,13 +117,6 @@ impl HeadlessContext {
} }
} }
impl gl_common::GlFunctionsSource for HeadlessContext {
#[inline]
fn get_proc_addr(&self, addr: &str) -> *const libc::c_void {
self.get_proc_address(addr)
}
}
impl GlContext for HeadlessContext { impl GlContext for HeadlessContext {
#[inline] #[inline]
unsafe fn make_current(&self) -> Result<(), ContextError> { unsafe fn make_current(&self) -> Result<(), ContextError> {
@ -139,7 +129,7 @@ impl GlContext for HeadlessContext {
} }
#[inline] #[inline]
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
self.context.get_proc_address(addr) self.context.get_proc_address(addr)
} }

View file

@ -29,7 +29,6 @@ extern crate lazy_static;
#[macro_use] #[macro_use]
extern crate shared_library; extern crate shared_library;
extern crate gl_common;
extern crate libc; extern crate libc;
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]
@ -112,7 +111,7 @@ pub trait GlContext {
fn is_current(&self) -> bool; fn is_current(&self) -> bool;
/// Returns the address of an OpenGL function. /// Returns the address of an OpenGL function.
fn get_proc_address(&self, addr: &str) -> *const libc::c_void; fn get_proc_address(&self, addr: &str) -> *const ();
/// Swaps the buffers in case of double or triple buffering. /// Swaps the buffers in case of double or triple buffering.
/// ///

View file

@ -28,7 +28,7 @@ impl GlContext for HeadlessContext {
} }
#[inline] #[inline]
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
self.0.get_proc_address(addr) self.0.get_proc_address(addr)
} }

View file

@ -1,5 +1,4 @@
#![cfg(target_os = "ios")] #![cfg(target_os = "ios")]
use libc::c_void;
use GlAttributes; use GlAttributes;
use CreationError; use CreationError;
@ -33,7 +32,7 @@ impl HeadlessContext {
} }
/// See the docs in the crate root file. /// See the docs in the crate root file.
pub fn get_proc_address(&self, _addr: &str) -> *const c_void { pub fn get_proc_address(&self, _addr: &str) -> *const () {
unimplemented!() unimplemented!()
} }

View file

@ -359,7 +359,7 @@ impl GlContext for Window {
} }
#[inline] #[inline]
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
match self { match self {
&Window::X(ref w) => w.get_proc_address(addr), &Window::X(ref w) => w.get_proc_address(addr),
&Window::Wayland(ref w) => w.get_proc_address(addr) &Window::Wayland(ref w) => w.get_proc_address(addr)

View file

@ -7,7 +7,6 @@ use GlAttributes;
use GlContext; use GlContext;
use PixelFormat; use PixelFormat;
use PixelFormatRequirements; use PixelFormatRequirements;
use libc;
use api::osmesa::{self, OsMesaContext}; use api::osmesa::{self, OsMesaContext};
@ -45,7 +44,7 @@ impl GlContext for HeadlessContext {
} }
#[inline] #[inline]
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
self.0.get_proc_address(addr) self.0.get_proc_address(addr)
} }

View file

@ -4,8 +4,6 @@ pub use api::win32;
pub use api::win32::{MonitorId, get_available_monitors, get_primary_monitor}; pub use api::win32::{MonitorId, get_available_monitors, get_primary_monitor};
pub use api::win32::{WindowProxy, PollEventsIterator, WaitEventsIterator}; pub use api::win32::{WindowProxy, PollEventsIterator, WaitEventsIterator};
use libc;
use Api; use Api;
use ContextError; use ContextError;
use CreationError; use CreationError;
@ -134,7 +132,7 @@ impl GlContext for HeadlessContext {
} }
#[inline] #[inline]
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
match self { match self {
&HeadlessContext::HiddenWindow(ref ctxt) => ctxt.get_proc_address(addr), &HeadlessContext::HiddenWindow(ref ctxt) => ctxt.get_proc_address(addr),
&HeadlessContext::EglPbuffer(ref ctxt) => ctxt.get_proc_address(addr), &HeadlessContext::EglPbuffer(ref ctxt) => ctxt.get_proc_address(addr),

View file

@ -18,9 +18,7 @@ use Window;
use WindowAttributes; use WindowAttributes;
use native_monitor::NativeMonitorId; use native_monitor::NativeMonitorId;
use gl_common;
use libc; use libc;
use platform; use platform;
/// Object that allows you to build windows. /// Object that allows you to build windows.
@ -397,8 +395,8 @@ impl Window {
/// ///
/// Contrary to `wglGetProcAddress`, all available OpenGL functions return an address. /// Contrary to `wglGetProcAddress`, all available OpenGL functions return an address.
#[inline] #[inline]
pub fn get_proc_address(&self, addr: &str) -> *const libc::c_void { pub fn get_proc_address(&self, addr: &str) -> *const () {
self.window.get_proc_address(addr) as *const libc::c_void self.window.get_proc_address(addr)
} }
/// Swaps the buffers in case of double or triple buffering. /// Swaps the buffers in case of double or triple buffering.
@ -492,13 +490,6 @@ impl Window {
} }
} }
impl gl_common::GlFunctionsSource for Window {
#[inline]
fn get_proc_addr(&self, addr: &str) -> *const libc::c_void {
self.get_proc_address(addr)
}
}
impl GlContext for Window { impl GlContext for Window {
#[inline] #[inline]
unsafe fn make_current(&self) -> Result<(), ContextError> { unsafe fn make_current(&self) -> Result<(), ContextError> {
@ -511,7 +502,7 @@ impl GlContext for Window {
} }
#[inline] #[inline]
fn get_proc_address(&self, addr: &str) -> *const libc::c_void { fn get_proc_address(&self, addr: &str) -> *const () {
self.get_proc_address(addr) self.get_proc_address(addr)
} }