servo: Merge #5957 - Remove Glutin dependency for WebGL (from emilio:glcontext-mac-support); r=jdm

Now we have mac support, and since android build is broken, we can
drop glutin from WebGL code.

Went back to upstream repo, see:
https://github.com/servo/rust-offscreen-rendering-context/pull/1#issuecomment-99234534

Source-Repo: https://github.com/servo/servo
Source-Revision: c7608f7691f892e985991d85e80f547dac1e9e8f
This commit is contained in:
ecoal95 2015-05-07 07:51:04 -05:00
Родитель d6ca5567a0
Коммит 75fa0ab0c7
6 изменённых файлов: 27 добавлений и 176 удалений

Просмотреть файл

@ -22,13 +22,8 @@ path = "../util"
[dependencies.gfx] [dependencies.gfx]
path = "../gfx" path = "../gfx"
[dependencies.glutin]
git = "https://github.com/servo/glutin"
branch = "servo"
features = ["headless"]
[dependencies.offscreen_gl_context] [dependencies.offscreen_gl_context]
git = "https://github.com/servo/rust-offscreen-rendering-context" git = "https://github.com/ecoal95/rust-offscreen-rendering-context"
[dependencies] [dependencies]
cssparser = "0.3.1" cssparser = "0.3.1"

Просмотреть файл

@ -14,7 +14,6 @@ extern crate util;
extern crate gleam; extern crate gleam;
extern crate num; extern crate num;
extern crate offscreen_gl_context; extern crate offscreen_gl_context;
extern crate glutin;
#[macro_use] #[macro_use]
extern crate log; extern crate log;

Просмотреть файл

@ -16,40 +16,10 @@ use std::sync::mpsc::{channel, Sender};
use util::vec::byte_swap; use util::vec::byte_swap;
use offscreen_gl_context::{GLContext, GLContextAttributes}; use offscreen_gl_context::{GLContext, GLContextAttributes};
use glutin::{HeadlessRendererBuilder, HeadlessContext};
// FIXME(ecoal95): We use glutin as a fallback until GLContext support improves.
enum PlatformIndependentContext {
GLContext(GLContext),
GlutinContext(HeadlessContext),
}
impl PlatformIndependentContext {
fn make_current(&self) {
match *self {
PlatformIndependentContext::GLContext(ref ctx) => ctx.make_current().unwrap(),
PlatformIndependentContext::GlutinContext(ref ctx) => unsafe { ctx.make_current() }
}
}
}
fn create_offscreen_context(size: Size2D<i32>, attrs: GLContextAttributes) -> Result<PlatformIndependentContext, &'static str> {
match GLContext::create_offscreen(size, attrs) {
Ok(ctx) => Ok(PlatformIndependentContext::GLContext(ctx)),
Err(msg) => {
debug!("GLContext creation error: {}", msg);
match HeadlessRendererBuilder::new(size.width as u32, size.height as u32).build() {
Ok(ctx) => Ok(PlatformIndependentContext::GlutinContext(ctx)),
Err(_) => Err("Glutin headless context creation failed")
}
}
}
}
pub struct WebGLPaintTask { pub struct WebGLPaintTask {
size: Size2D<i32>, size: Size2D<i32>,
original_context_size: Size2D<i32>, original_context_size: Size2D<i32>,
gl_context: PlatformIndependentContext, gl_context: GLContext,
} }
// This allows trying to create the PaintTask // This allows trying to create the PaintTask
@ -58,7 +28,8 @@ unsafe impl Send for WebGLPaintTask {}
impl WebGLPaintTask { impl WebGLPaintTask {
fn new(size: Size2D<i32>) -> Result<WebGLPaintTask, &'static str> { fn new(size: Size2D<i32>) -> Result<WebGLPaintTask, &'static str> {
let context = try!(create_offscreen_context(size, GLContextAttributes::default())); // TODO(ecoal95): Get the GLContextAttributes from the `GetContext` call
let context = try!(GLContext::create_offscreen(size, GLContextAttributes::default()));
Ok(WebGLPaintTask { Ok(WebGLPaintTask {
size: size, size: size,
original_context_size: size, original_context_size: size,
@ -104,7 +75,8 @@ impl WebGLPaintTask {
match message { match message {
CanvasCommonMsg::Close => break, CanvasCommonMsg::Close => break,
CanvasCommonMsg::SendPixelContents(chan) => painter.send_pixel_contents(chan), CanvasCommonMsg::SendPixelContents(chan) => painter.send_pixel_contents(chan),
CanvasCommonMsg::Recreate(size) => painter.recreate(size), // TODO(ecoal95): handle error nicely
CanvasCommonMsg::Recreate(size) => painter.recreate(size).unwrap(),
} }
}, },
CanvasMsg::Canvas2d(_) => panic!("Wrong message sent to WebGLTask"), CanvasMsg::Canvas2d(_) => panic!("Wrong message sent to WebGLTask"),
@ -232,20 +204,19 @@ impl WebGLPaintTask {
gl::viewport(x, y, width, height); gl::viewport(x, y, width, height);
} }
fn recreate(&mut self, size: Size2D<i32>) { fn recreate(&mut self, size: Size2D<i32>) -> Result<(), &'static str> {
// TODO(ecoal95): GLContext should support a resize() method
if size.width > self.original_context_size.width || if size.width > self.original_context_size.width ||
size.height > self.original_context_size.height { size.height > self.original_context_size.height {
panic!("Can't grow a GLContext (yet)"); try!(self.gl_context.resize(size));
} else { self.size = size;
// Right now we just crop the viewport, it will do the job } else {
self.size = size; self.size = size;
gl::viewport(0, 0, size.width, size.height);
unsafe { gl::Scissor(0, 0, size.width, size.height); } unsafe { gl::Scissor(0, 0, size.width, size.height); }
} }
Ok(())
} }
fn init(&mut self) { fn init(&mut self) {
self.gl_context.make_current(); self.gl_context.make_current().unwrap();
} }
} }

9
servo/components/servo/Cargo.lock сгенерированный
Просмотреть файл

@ -73,16 +73,15 @@ dependencies = [
"geom 0.1.0 (git+https://github.com/servo/rust-geom)", "geom 0.1.0 (git+https://github.com/servo/rust-geom)",
"gfx 0.0.1", "gfx 0.0.1",
"gleam 0.0.1 (git+https://github.com/servo/gleam)", "gleam 0.0.1 (git+https://github.com/servo/gleam)",
"glutin 0.0.26 (git+https://github.com/servo/glutin?branch=servo)",
"num 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)",
"offscreen_gl_context 0.0.1 (git+https://github.com/servo/rust-offscreen-rendering-context)", "offscreen_gl_context 0.0.1 (git+https://github.com/ecoal95/rust-offscreen-rendering-context)",
"util 0.0.1", "util 0.0.1",
] ]
[[package]] [[package]]
name = "cgl" name = "cgl"
version = "0.0.1" version = "0.0.1"
source = "git+https://github.com/servo/rust-cgl#16144321dc18d8ab538ee2acc0d2dad155a17899" source = "git+https://github.com/servo/rust-cgl#851ca1b90081d221c3c38d33548d3e22a19db79f"
dependencies = [ dependencies = [
"gleam 0.0.1 (git+https://github.com/servo/gleam)", "gleam 0.0.1 (git+https://github.com/servo/gleam)",
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
@ -833,13 +832,15 @@ dependencies = [
[[package]] [[package]]
name = "offscreen_gl_context" name = "offscreen_gl_context"
version = "0.0.1" version = "0.0.1"
source = "git+https://github.com/servo/rust-offscreen-rendering-context#9ef802439467c287178afe46c5dd7adec13993eb" source = "git+https://github.com/ecoal95/rust-offscreen-rendering-context#c2b3dfd7fe344384e4206672b99c296141f5b4d6"
dependencies = [ dependencies = [
"cgl 0.0.1 (git+https://github.com/servo/rust-cgl)", "cgl 0.0.1 (git+https://github.com/servo/rust-cgl)",
"core_foundation 0.1.0 (git+https://github.com/servo/rust-core-foundation)",
"geom 0.1.0 (git+https://github.com/servo/rust-geom)", "geom 0.1.0 (git+https://github.com/servo/rust-geom)",
"gleam 0.0.1 (git+https://github.com/servo/gleam)", "gleam 0.0.1 (git+https://github.com/servo/gleam)",
"glx 0.0.1 (git+https://github.com/servo/rust-glx)", "glx 0.0.1 (git+https://github.com/servo/rust-glx)",
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"xlib 0.1.0 (git+https://github.com/servo/rust-xlib)", "xlib 0.1.0 (git+https://github.com/servo/rust-xlib)",
] ]

9
servo/ports/cef/Cargo.lock сгенерированный
Просмотреть файл

@ -71,16 +71,15 @@ dependencies = [
"geom 0.1.0 (git+https://github.com/servo/rust-geom)", "geom 0.1.0 (git+https://github.com/servo/rust-geom)",
"gfx 0.0.1", "gfx 0.0.1",
"gleam 0.0.1 (git+https://github.com/servo/gleam)", "gleam 0.0.1 (git+https://github.com/servo/gleam)",
"glutin 0.0.26 (git+https://github.com/servo/glutin?branch=servo)",
"num 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)",
"offscreen_gl_context 0.0.1 (git+https://github.com/servo/rust-offscreen-rendering-context)", "offscreen_gl_context 0.0.1 (git+https://github.com/ecoal95/rust-offscreen-rendering-context)",
"util 0.0.1", "util 0.0.1",
] ]
[[package]] [[package]]
name = "cgl" name = "cgl"
version = "0.0.1" version = "0.0.1"
source = "git+https://github.com/servo/rust-cgl#16144321dc18d8ab538ee2acc0d2dad155a17899" source = "git+https://github.com/servo/rust-cgl#851ca1b90081d221c3c38d33548d3e22a19db79f"
dependencies = [ dependencies = [
"gleam 0.0.1 (git+https://github.com/servo/gleam)", "gleam 0.0.1 (git+https://github.com/servo/gleam)",
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
@ -822,13 +821,15 @@ dependencies = [
[[package]] [[package]]
name = "offscreen_gl_context" name = "offscreen_gl_context"
version = "0.0.1" version = "0.0.1"
source = "git+https://github.com/servo/rust-offscreen-rendering-context#9ef802439467c287178afe46c5dd7adec13993eb" source = "git+https://github.com/ecoal95/rust-offscreen-rendering-context#c2b3dfd7fe344384e4206672b99c296141f5b4d6"
dependencies = [ dependencies = [
"cgl 0.0.1 (git+https://github.com/servo/rust-cgl)", "cgl 0.0.1 (git+https://github.com/servo/rust-cgl)",
"core_foundation 0.1.0 (git+https://github.com/servo/rust-core-foundation)",
"geom 0.1.0 (git+https://github.com/servo/rust-geom)", "geom 0.1.0 (git+https://github.com/servo/rust-geom)",
"gleam 0.0.1 (git+https://github.com/servo/gleam)", "gleam 0.0.1 (git+https://github.com/servo/gleam)",
"glx 0.0.1 (git+https://github.com/servo/rust-glx)", "glx 0.0.1 (git+https://github.com/servo/rust-glx)",
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"xlib 0.1.0 (git+https://github.com/servo/rust-xlib)", "xlib 0.1.0 (git+https://github.com/servo/rust-xlib)",
] ]

126
servo/ports/gonk/Cargo.lock сгенерированный
Просмотреть файл

@ -24,11 +24,6 @@ dependencies = [
"util 0.0.1", "util 0.0.1",
] ]
[[package]]
name = "android_glue"
version = "0.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]] [[package]]
name = "azure" name = "azure"
version = "0.1.0" version = "0.1.0"
@ -64,16 +59,15 @@ dependencies = [
"geom 0.1.0 (git+https://github.com/servo/rust-geom)", "geom 0.1.0 (git+https://github.com/servo/rust-geom)",
"gfx 0.0.1", "gfx 0.0.1",
"gleam 0.0.1 (git+https://github.com/servo/gleam)", "gleam 0.0.1 (git+https://github.com/servo/gleam)",
"glutin 0.0.26 (git+https://github.com/servo/glutin?branch=servo)",
"num 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", "num 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)",
"offscreen_gl_context 0.0.1 (git+https://github.com/servo/rust-offscreen-rendering-context)", "offscreen_gl_context 0.0.1 (git+https://github.com/ecoal95/rust-offscreen-rendering-context)",
"util 0.0.1", "util 0.0.1",
] ]
[[package]] [[package]]
name = "cgl" name = "cgl"
version = "0.0.1" version = "0.0.1"
source = "git+https://github.com/servo/rust-cgl#16144321dc18d8ab538ee2acc0d2dad155a17899" source = "git+https://github.com/servo/rust-cgl#851ca1b90081d221c3c38d33548d3e22a19db79f"
dependencies = [ dependencies = [
"gleam 0.0.1 (git+https://github.com/servo/gleam)", "gleam 0.0.1 (git+https://github.com/servo/gleam)",
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
@ -332,14 +326,6 @@ name = "gcc"
version = "0.3.4" version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "gdi32-sys"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"winapi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "geom" name = "geom"
version = "0.1.0" version = "0.1.0"
@ -382,17 +368,6 @@ dependencies = [
"util 0.0.1", "util 0.0.1",
] ]
[[package]]
name = "gl"
version = "0.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gl_common 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
"gl_generator 0.0.24 (registry+https://github.com/rust-lang/crates.io-index)",
"khronos_api 0.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "gl_common" name = "gl_common"
version = "0.0.4" version = "0.0.4"
@ -422,56 +397,6 @@ dependencies = [
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "glutin"
version = "0.0.26"
source = "git+https://github.com/servo/glutin?branch=servo#11389c9ead188376095297a5a295f53d98129a57"
dependencies = [
"android_glue 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"gdi32-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gl_common 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
"gl_generator 0.0.24 (registry+https://github.com/rust-lang/crates.io-index)",
"glutin_cocoa 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"glutin_core_foundation 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"glutin_core_graphics 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"kernel32-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"khronos_api 0.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"objc 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"osmesa-sys 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
"user32-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
"x11 0.0.32 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "glutin_cocoa"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"objc 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "glutin_core_foundation"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "glutin_core_graphics"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"glutin_core_foundation 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "glx" name = "glx"
version = "0.0.1" version = "0.0.1"
@ -674,14 +599,6 @@ name = "mac"
version = "0.0.2" version = "0.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "malloc_buf"
version = "0.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "matches" name = "matches"
version = "0.1.2" version = "0.1.2"
@ -783,25 +700,18 @@ dependencies = [
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "objc"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"malloc_buf 0.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "offscreen_gl_context" name = "offscreen_gl_context"
version = "0.0.1" version = "0.0.1"
source = "git+https://github.com/servo/rust-offscreen-rendering-context#9ef802439467c287178afe46c5dd7adec13993eb" source = "git+https://github.com/ecoal95/rust-offscreen-rendering-context#c2b3dfd7fe344384e4206672b99c296141f5b4d6"
dependencies = [ dependencies = [
"cgl 0.0.1 (git+https://github.com/servo/rust-cgl)", "cgl 0.0.1 (git+https://github.com/servo/rust-cgl)",
"core_foundation 0.1.0 (git+https://github.com/servo/rust-core-foundation)",
"geom 0.1.0 (git+https://github.com/servo/rust-geom)", "geom 0.1.0 (git+https://github.com/servo/rust-geom)",
"gleam 0.0.1 (git+https://github.com/servo/gleam)", "gleam 0.0.1 (git+https://github.com/servo/gleam)",
"glx 0.0.1 (git+https://github.com/servo/rust-glx)", "glx 0.0.1 (git+https://github.com/servo/rust-glx)",
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"xlib 0.1.0 (git+https://github.com/servo/rust-xlib)", "xlib 0.1.0 (git+https://github.com/servo/rust-xlib)",
] ]
@ -827,16 +737,6 @@ dependencies = [
"pkg-config 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "osmesa-sys"
version = "0.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gl 0.0.12 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "phf" name = "phf"
version = "0.7.3" version = "0.7.3"
@ -1164,14 +1064,6 @@ dependencies = [
"rustc-serialize 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "user32-sys"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"winapi 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "util" name = "util"
version = "0.0.1" version = "0.0.1"
@ -1261,14 +1153,6 @@ dependencies = [
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "x11"
version = "0.0.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "xlib" name = "xlib"
version = "0.1.0" version = "0.1.0"