mirror of
https://github.com/servo/servo.git
synced 2025-07-14 02:43:42 +01:00
CEF updates for Linux / MiniServo-GTK.
This commit is contained in:
parent
d988d01dd0
commit
2bd6e48035
4 changed files with 42 additions and 16 deletions
|
@ -82,4 +82,3 @@ pub mod window;
|
||||||
pub mod wrappers;
|
pub mod wrappers;
|
||||||
pub mod xml_reader;
|
pub mod xml_reader;
|
||||||
pub mod zip_reader;
|
pub mod zip_reader;
|
||||||
|
|
||||||
|
|
|
@ -119,6 +119,7 @@ macro_rules! cef_stub_static_method_impls(
|
||||||
)*
|
)*
|
||||||
) => (
|
) => (
|
||||||
$(
|
$(
|
||||||
|
#[no_mangle]
|
||||||
pub extern "C" fn $method_name($(_: $method_arg_type),*)
|
pub extern "C" fn $method_name($(_: $method_arg_type),*)
|
||||||
-> $method_return_type {
|
-> $method_return_type {
|
||||||
panic!("unimplemented static method: {}", stringify!($method_name))
|
panic!("unimplemented static method: {}", stringify!($method_name))
|
||||||
|
|
|
@ -40,7 +40,7 @@ pub enum cef_keyboard_handler_t {}
|
||||||
pub enum cef_render_handler_t {}
|
pub enum cef_render_handler_t {}
|
||||||
pub enum cef_request_handler_t {}
|
pub enum cef_request_handler_t {}
|
||||||
#[cfg(target_os="linux")]
|
#[cfg(target_os="linux")]
|
||||||
pub type cef_window_handle_t = c_uint;
|
pub type cef_window_handle_t = c_ulong;
|
||||||
#[cfg(target_os="macos")]
|
#[cfg(target_os="macos")]
|
||||||
pub type cef_window_handle_t = *mut c_void; //NSView*
|
pub type cef_window_handle_t = *mut c_void; //NSView*
|
||||||
//#[cfg(target_os="win")]
|
//#[cfg(target_os="win")]
|
||||||
|
|
|
@ -37,21 +37,40 @@ pub struct Window {
|
||||||
cef_browser: RefCell<Option<CefBrowser>>,
|
cef_browser: RefCell<Option<CefBrowser>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(target_os="macos")]
|
||||||
|
fn load_gl() {
|
||||||
|
const RTLD_DEFAULT: *mut c_void = (-2) as *mut c_void;
|
||||||
|
|
||||||
|
extern {
|
||||||
|
fn dlsym(handle: *mut c_void, symbol: *const c_char) -> *mut c_void;
|
||||||
|
}
|
||||||
|
|
||||||
|
gl::load_with(|s| {
|
||||||
|
unsafe {
|
||||||
|
let c_str = s.to_c_str();
|
||||||
|
dlsym(RTLD_DEFAULT, c_str.as_ptr()) as *const c_void
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_os="linux")]
|
||||||
|
fn load_gl() {
|
||||||
|
extern {
|
||||||
|
fn glXGetProcAddress(symbol: *const c_char) -> *mut c_void;
|
||||||
|
}
|
||||||
|
|
||||||
|
gl::load_with(|s| {
|
||||||
|
unsafe {
|
||||||
|
let c_str = s.to_c_str();
|
||||||
|
glXGetProcAddress(c_str.as_ptr()) as *const c_void
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
impl Window {
|
impl Window {
|
||||||
/// Creates a new window.
|
/// Creates a new window.
|
||||||
pub fn new() -> Rc<Window> {
|
pub fn new() -> Rc<Window> {
|
||||||
const RTLD_DEFAULT: *mut c_void = (-2) as *mut c_void;
|
load_gl();
|
||||||
|
|
||||||
extern {
|
|
||||||
fn dlsym(handle: *mut c_void, symbol: *const c_char) -> *mut c_void;
|
|
||||||
}
|
|
||||||
|
|
||||||
gl::load_with(|s| {
|
|
||||||
unsafe {
|
|
||||||
let c_str = s.to_c_str();
|
|
||||||
dlsym(RTLD_DEFAULT, c_str.as_ptr()) as *const c_void
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
Rc::new(Window {
|
Rc::new(Window {
|
||||||
cef_browser: RefCell::new(None),
|
cef_browser: RefCell::new(None),
|
||||||
|
@ -164,8 +183,15 @@ impl WindowMethods for Window {
|
||||||
|
|
||||||
#[cfg(target_os="linux")]
|
#[cfg(target_os="linux")]
|
||||||
fn native_metadata(&self) -> NativeGraphicsMetadata {
|
fn native_metadata(&self) -> NativeGraphicsMetadata {
|
||||||
// TODO(pcwalton)
|
extern {
|
||||||
panic!()
|
fn cef_get_xdisplay() -> *mut c_void;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsafe {
|
||||||
|
NativeGraphicsMetadata {
|
||||||
|
display: cef_get_xdisplay()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_compositor_channel(_: &Option<Rc<Window>>)
|
fn create_compositor_channel(_: &Option<Rc<Window>>)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue