aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/compositing/platform/mod.rs18
-rw-r--r--components/msg/constellation_msg.rs2
-rw-r--r--components/servo/Cargo.lock36
-rw-r--r--components/servo/Cargo.toml8
-rw-r--r--components/servo/main.rs4
-rw-r--r--ports/cef/Cargo.lock6
-rw-r--r--ports/cef/window.rs2
-rw-r--r--ports/glfw/Cargo.toml36
-rw-r--r--ports/glfw/lib.rs50
-rw-r--r--ports/glfw/window.rs586
-rw-r--r--ports/glutin/lib.rs2
-rw-r--r--python/servo/build_commands.py4
12 files changed, 10 insertions, 744 deletions
diff --git a/components/compositing/platform/mod.rs b/components/compositing/platform/mod.rs
deleted file mode 100644
index 5d8a8cba470..00000000000
--- a/components/compositing/platform/mod.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-//! Platform-specific functionality for Servo.
-
-#[cfg(target_os="android")]
-pub use platform::common::glut_windowing::{Application, Window};
-#[cfg(not(target_os="android"))]
-pub use platform::common::glfw_windowing::{Application, Window};
-
-pub mod common {
- #[cfg(target_os="android")]
- pub mod glut_windowing;
- #[cfg(not(target_os="android"))]
- pub mod glfw_windowing;
-}
-
diff --git a/components/msg/constellation_msg.rs b/components/msg/constellation_msg.rs
index 7f0ece10414..59081560cf3 100644
--- a/components/msg/constellation_msg.rs
+++ b/components/msg/constellation_msg.rs
@@ -59,7 +59,7 @@ pub enum KeyState {
Repeated,
}
-//N.B. Straight up copied from glfw-rs
+//N.B. Based on the glutin key enum
#[derive(Show, PartialEq, Eq, Copy, Clone)]
pub enum Key {
Space,
diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock
index d7548ea00f2..89d9c71a815 100644
--- a/components/servo/Cargo.lock
+++ b/components/servo/Cargo.lock
@@ -6,7 +6,6 @@ dependencies = [
"compositing 0.0.1",
"devtools 0.0.1",
"gfx 0.0.1",
- "glfw_app 0.0.1",
"glutin_app 0.0.1",
"layout 0.0.1",
"msg 0.0.1",
@@ -333,36 +332,6 @@ dependencies = [
]
[[package]]
-name = "glfw"
-version = "0.0.1"
-source = "git+https://github.com/servo/glfw-rs?branch=servo#907db700166b48e71d7d59b1eb9964b874c7ca42"
-dependencies = [
- "glfw-sys 3.0.4 (git+https://github.com/servo/glfw?branch=cargo-3.0.4)",
- "log 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "semver 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "glfw-sys"
-version = "3.0.4"
-source = "git+https://github.com/servo/glfw?branch=cargo-3.0.4#765dace7e4125b87c764f5ac0e7a80eae5c550b2"
-
-[[package]]
-name = "glfw_app"
-version = "0.0.1"
-dependencies = [
- "cgl 0.0.1 (git+https://github.com/servo/rust-cgl)",
- "compositing 0.0.1",
- "geom 0.1.0 (git+https://github.com/servo/rust-geom)",
- "gleam 0.0.1 (git+https://github.com/servo/gleam)",
- "glfw 0.0.1 (git+https://github.com/servo/glfw-rs?branch=servo)",
- "layers 0.1.0 (git+https://github.com/servo/rust-layers)",
- "msg 0.0.1",
- "time 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "util 0.0.1",
-]
-
-[[package]]
name = "glutin"
version = "0.0.4-pre"
source = "git+https://github.com/servo/glutin?branch=servo#3814e0cadc85f558b7a417c9d4b97337382aeb36"
@@ -712,11 +681,6 @@ dependencies = [
]
[[package]]
-name = "semver"
-version = "0.1.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
name = "skia-sys"
version = "0.0.20130412"
source = "git+https://github.com/servo/skia?branch=upstream-2014-06-16#aeb720b947ec463f780a0d00ab8485f902a83986"
diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml
index 0c908cc41fc..c5fa8e2c29b 100644
--- a/components/servo/Cargo.toml
+++ b/components/servo/Cargo.toml
@@ -30,8 +30,7 @@ path = "../../tests/contenttest.rs"
harness = false
[features]
-default = ["glutin_app", "window"]
-glfw = ["glfw_app"]
+default = ["window"]
window = ["glutin_app/window"]
headless = ["glutin_app/headless"]
@@ -59,13 +58,8 @@ path = "../gfx"
[dependencies.devtools]
path = "../devtools"
-[dependencies.glfw_app]
-path = "../../ports/glfw"
-optional = true
-
[dependencies.glutin_app]
path = "../../ports/glutin"
-optional = true
[dependencies.android_glue]
path = "../../support/android-rs-glue/glue"
diff --git a/components/servo/main.rs b/components/servo/main.rs
index e6940b54af7..5d9231e8b38 100644
--- a/components/servo/main.rs
+++ b/components/servo/main.rs
@@ -13,10 +13,8 @@ extern crate servo;
extern crate time;
extern crate util;
-#[cfg(all(feature = "glutin_app",not(test)))]
+#[cfg(not(test))]
extern crate "glutin_app" as app;
-#[cfg(all(feature = "glfw",not(test)))]
-extern crate "glfw_app" as app;
#[cfg(not(test))]
extern crate compositing;
diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock
index 44155208c91..0ee176b8029 100644
--- a/ports/cef/Cargo.lock
+++ b/ports/cef/Cargo.lock
@@ -333,7 +333,7 @@ dependencies = [
[[package]]
name = "glutin"
version = "0.0.4-pre"
-source = "git+https://github.com/tomaka/glutin#1d6b863cd454839b8e3cf1e296cbf8f31fb70029"
+source = "git+https://github.com/servo/glutin?branch=servo#3814e0cadc85f558b7a417c9d4b97337382aeb36"
dependencies = [
"android_glue 0.0.1 (git+https://github.com/tomaka/android-rs-glue)",
"cocoa 0.1.1 (git+https://github.com/servo/rust-cocoa)",
@@ -354,7 +354,7 @@ dependencies = [
"egl 0.1.0 (git+https://github.com/servo/rust-egl)",
"geom 0.1.0 (git+https://github.com/servo/rust-geom)",
"gleam 0.0.1 (git+https://github.com/servo/gleam)",
- "glutin 0.0.4-pre (git+https://github.com/tomaka/glutin)",
+ "glutin 0.0.4-pre (git+https://github.com/servo/glutin?branch=servo)",
"layers 0.1.0 (git+https://github.com/servo/rust-layers)",
"msg 0.0.1",
"time 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -575,7 +575,7 @@ dependencies = [
[[package]]
name = "openssl-sys"
-version = "0.2.15"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libressl-pnacl-sys 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/ports/cef/window.rs b/ports/cef/window.rs
index 251bf29acd7..8b4a29e24e8 100644
--- a/ports/cef/window.rs
+++ b/ports/cef/window.rs
@@ -5,7 +5,7 @@
//! Off-screen windows.
//!
//! This is used for off-screen rendering mode only; on-screen windows (the default embedding mode)
-//! are managed by a platform toolkit (GLFW or Glutin).
+//! are managed by a platform toolkit (Glutin).
use eutil::Downcast;
use interfaces::CefBrowser;
diff --git a/ports/glfw/Cargo.toml b/ports/glfw/Cargo.toml
deleted file mode 100644
index 97a75704820..00000000000
--- a/ports/glfw/Cargo.toml
+++ /dev/null
@@ -1,36 +0,0 @@
-[package]
-name = "glfw_app"
-version = "0.0.1"
-authors = ["The Servo Project Developers"]
-
-[lib]
-name = "glfw_app"
-path = "lib.rs"
-
-[dependencies.compositing]
-path = "../../components/compositing"
-
-[dependencies.geom]
-git = "https://github.com/servo/rust-geom"
-
-[dependencies.glfw]
-git = "https://github.com/servo/glfw-rs"
-branch = "servo"
-
-[dependencies.layers]
-git = "https://github.com/servo/rust-layers"
-
-[dependencies.msg]
-path = "../../components/msg"
-
-[dependencies.util]
-path = "../../components/util"
-
-[dependencies.cgl]
-git = "https://github.com/servo/rust-cgl"
-
-[dependencies.gleam]
-git = "https://github.com/servo/gleam"
-
-[dependencies]
-time = "0.1.12" \ No newline at end of file
diff --git a/ports/glfw/lib.rs b/ports/glfw/lib.rs
deleted file mode 100644
index 9ce376350a8..00000000000
--- a/ports/glfw/lib.rs
+++ /dev/null
@@ -1,50 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-//! A simple application that uses GLFW to open a window for Servo to display in.
-
-#![feature(macro_rules)]
-#![deny(unused_imports, unused_variables)]
-
-#[cfg(target_os="macos")]
-extern crate cgl;
-extern crate compositing;
-extern crate geom;
-extern crate gleam;
-extern crate glfw;
-extern crate layers;
-extern crate libc;
-extern crate msg;
-extern crate time;
-extern crate util;
-
-use compositing::windowing::WindowEvent;
-use geom::scale_factor::ScaleFactor;
-use std::rc::Rc;
-use window::Window;
-use util::opts;
-
-pub mod window;
-
-pub trait NestedEventLoopListener {
- fn handle_event_from_nested_event_loop(&mut self, event: WindowEvent) -> bool;
-}
-
-pub fn create_window() -> Rc<Window> {
- // Initialize GLFW.
- let glfw = glfw::init(glfw::LOG_ERRORS).unwrap_or_else(|_| {
- // handles things like inability to connect to X
- // cannot simply fail, since the runtime isn't up yet (causes a nasty abort)
- println!("GLFW initialization failed");
- unsafe { libc::exit(1); }
- });
-
- // Read command-line options.
- let foreground = opts::get().output_file.is_none();
- let scale_factor = opts::get().device_pixels_per_px.unwrap_or(ScaleFactor(1.0));
- let size = opts::get().initial_window_size.as_f32() * scale_factor;
-
- // Open a window.
- Window::new(glfw, foreground, size.as_uint())
-}
diff --git a/ports/glfw/window.rs b/ports/glfw/window.rs
deleted file mode 100644
index d32c6c42fff..00000000000
--- a/ports/glfw/window.rs
+++ /dev/null
@@ -1,586 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-//! A windowing implementation using GLFW.
-
-use NestedEventLoopListener;
-
-use compositing::compositor_task::{self, CompositorProxy, CompositorReceiver};
-use compositing::windowing::WindowNavigateMsg;
-use compositing::windowing::{MouseWindowEvent, WindowEvent, WindowMethods};
-use geom::point::{Point2D, TypedPoint2D};
-use geom::scale_factor::ScaleFactor;
-use geom::size::TypedSize2D;
-use glfw::{self, Context};
-use gleam::gl;
-use layers::geometry::DevicePixel;
-use layers::platform::surface::NativeGraphicsMetadata;
-use libc::c_int;
-use msg::compositor_msg::{PaintState, ReadyState};
-use msg::constellation_msg::{KeyState, LoadData};
-use msg::constellation_msg::{Key, KeyModifiers};
-use msg::constellation_msg::{SHIFT, ALT, CONTROL, SUPER};
-use std::cell::{Cell, RefCell};
-use std::comm::Receiver;
-use std::num::Float;
-use std::rc::Rc;
-use time::{self, Timespec};
-use util::cursor::Cursor;
-use util::geometry::ScreenPx;
-
-/// The type of a window.
-pub struct Window {
- glfw: glfw::Glfw,
-
- glfw_window: glfw::Window,
- events: Receiver<(f64, glfw::WindowEvent)>,
-
- event_queue: RefCell<Vec<WindowEvent>>,
-
- mouse_down_button: Cell<Option<glfw::MouseButton>>,
- mouse_down_point: Cell<Point2D<c_int>>,
-
- ready_state: Cell<ReadyState>,
- paint_state: Cell<PaintState>,
-
- last_title_set_time: Cell<Timespec>,
-}
-
-impl Window {
- /// Creates a new window.
- pub fn new(glfw: glfw::Glfw, is_foreground: bool, size: TypedSize2D<DevicePixel, uint>)
- -> Rc<Window> {
- // Create the GLFW window.
- let window_size = size.to_untyped();
- glfw.window_hint(glfw::WindowHint::Visible(is_foreground));
- let (glfw_window, events) = glfw.create_window(window_size.width as u32,
- window_size.height as u32,
- "Servo",
- glfw::WindowMode::Windowed)
- .expect("Failed to create GLFW window");
- glfw_window.make_current();
-
- gl::load_with(|s| glfw_window.get_proc_address(s));
-
- // Create our window object.
- let window = Window {
- glfw: glfw,
-
- glfw_window: glfw_window,
- events: events,
-
- event_queue: RefCell::new(vec!()),
-
- mouse_down_button: Cell::new(None),
- mouse_down_point: Cell::new(Point2D(0 as c_int, 0)),
-
- ready_state: Cell::new(ReadyState::Blank),
- paint_state: Cell::new(PaintState::Idle),
-
- last_title_set_time: Cell::new(Timespec::new(0, 0)),
- };
-
- // Register event handlers.
- window.glfw_window.set_framebuffer_size_polling(true);
- window.glfw_window.set_refresh_polling(true);
- window.glfw_window.set_key_polling(true);
- window.glfw_window.set_mouse_button_polling(true);
- window.glfw_window.set_cursor_pos_polling(true);
- window.glfw_window.set_scroll_polling(true);
-
- window.glfw.set_swap_interval(1);
-
- Rc::new(window)
- }
-
- pub fn wait_events(&self) -> WindowEvent {
- self.wait_or_poll_events(|glfw| glfw.wait_events())
- }
-
- pub fn poll_events(&self) -> WindowEvent {
- self.wait_or_poll_events(|glfw| glfw.poll_events())
- }
-
- /// Helper method to factor out functionality from `poll_events` and `wait_events`.
- fn wait_or_poll_events(&self, callback: |glfw: &glfw::Glfw|) -> WindowEvent {
- {
- let mut event_queue = self.event_queue.borrow_mut();
- if !event_queue.is_empty() {
- return event_queue.remove(0).unwrap();
- }
- }
-
- callback(&self.glfw);
- for (_, event) in glfw::flush_messages(&self.events) {
- self.handle_window_event(&self.glfw_window, event);
- }
-
- if self.glfw_window.should_close() {
- WindowEvent::Quit
- } else {
- self.event_queue.borrow_mut().remove(0).unwrap_or(WindowEvent::Idle)
- }
- }
-
- pub unsafe fn set_nested_event_loop_listener(
- &self,
- listener: *mut (NestedEventLoopListener + 'static)) {
- self.glfw_window.set_refresh_polling(false);
- glfw::ffi::glfwSetWindowRefreshCallback(self.glfw_window.ptr, Some(on_refresh));
- glfw::ffi::glfwSetFramebufferSizeCallback(self.glfw_window.ptr, Some(on_framebuffer_size));
- g_nested_event_loop_listener = Some(listener)
- }
-
- pub unsafe fn remove_nested_event_loop_listener(&self) {
- glfw::ffi::glfwSetWindowRefreshCallback(self.glfw_window.ptr, None);
- glfw::ffi::glfwSetFramebufferSizeCallback(self.glfw_window.ptr, None);
- self.glfw_window.set_refresh_polling(true);
- g_nested_event_loop_listener = None
- }
-}
-
-static mut g_nested_event_loop_listener: Option<*mut (NestedEventLoopListener + 'static)> = None;
-
-impl WindowMethods for Window {
- /// Returns the size of the window in hardware pixels.
- fn framebuffer_size(&self) -> TypedSize2D<DevicePixel, uint> {
- let (width, height) = self.glfw_window.get_framebuffer_size();
- TypedSize2D(width as uint, height as uint)
- }
-
- /// Returns the size of the window in density-independent "px" units.
- fn size(&self) -> TypedSize2D<ScreenPx, f32> {
- let (width, height) = self.glfw_window.get_size();
- TypedSize2D(width as f32, height as f32)
- }
-
- /// Presents the window to the screen (perhaps by page flipping).
- fn present(&self) {
- self.glfw_window.swap_buffers();
- }
-
- /// Sets the ready state.
- fn set_ready_state(&self, ready_state: ReadyState) {
- self.ready_state.set(ready_state);
- self.update_window_title()
- }
-
- /// Sets the paint state.
- fn set_paint_state(&self, paint_state: PaintState) {
- self.paint_state.set(paint_state);
- self.update_window_title()
- }
-
- fn hidpi_factor(&self) -> ScaleFactor<ScreenPx, DevicePixel, f32> {
- let backing_size = self.framebuffer_size().width.get();
- let window_size = self.size().width.get();
- ScaleFactor((backing_size as f32) / window_size)
- }
-
- #[cfg(target_os="linux")]
- fn native_metadata(&self) -> NativeGraphicsMetadata {
- NativeGraphicsMetadata {
- display: unsafe { glfw::ffi::glfwGetX11Display() },
- }
- }
-
- #[cfg(target_os="macos")]
- fn native_metadata(&self) -> NativeGraphicsMetadata {
- use cgl::{CGLGetCurrentContext, CGLGetPixelFormat};
- unsafe {
- NativeGraphicsMetadata {
- pixel_format: CGLGetPixelFormat(CGLGetCurrentContext()),
- }
- }
- }
-
- fn create_compositor_channel(_: &Option<Rc<Window>>)
- -> (Box<CompositorProxy+Send>, Box<CompositorReceiver>) {
- let (sender, receiver) = channel();
- (box GlfwCompositorProxy {
- sender: sender,
- } as Box<CompositorProxy+Send>,
- box receiver as Box<CompositorReceiver>)
- }
-
-
- /// Helper function to handle keyboard events.
- fn handle_key(&self, key: Key, mods: KeyModifiers) {
- match key {
- Key::Escape => self.glfw_window.set_should_close(true),
- Key::Equal if mods.contains(CONTROL) => { // Ctrl-+
- self.event_queue.borrow_mut().push(WindowEvent::Zoom(1.1));
- }
- Key::Minus if mods.contains(CONTROL) => { // Ctrl--
- self.event_queue.borrow_mut().push(WindowEvent::Zoom(1.0/1.1));
- }
- Key::Backspace if mods.contains(SHIFT) => { // Shift-Backspace
- self.event_queue.borrow_mut().push(WindowEvent::Navigation(WindowNavigateMsg::Forward));
- }
- Key::Backspace => { // Backspace
- self.event_queue.borrow_mut().push(WindowEvent::Navigation(WindowNavigateMsg::Back));
- }
- Key::PageDown => {
- let (_, height) = self.glfw_window.get_size();
- self.scroll_window(0.0, -height as f32);
- }
- Key::PageUp => {
- let (_, height) = self.glfw_window.get_size();
- self.scroll_window(0.0, height as f32);
- }
- _ => {}
- }
- }
-
- fn prepare_for_composite(&self) -> bool {
- true
- }
-
- fn set_cursor(&self, _: Cursor) {
- // No-op. We could take over mouse handling ourselves and draw the cursor as an extra
- // layer with our own custom bitmaps or something, but it doesn't seem worth the
- // trouble.
- }
-
- fn load_end(&self) {}
-
- fn set_page_title(&self, _: Option<String>) {}
-
- fn set_page_load_data(&self, _: LoadData) {}
-}
-
-impl Window {
- fn handle_window_event(&self, window: &glfw::Window, event: glfw::WindowEvent) {
- match event {
- glfw::WindowEvent::Key(key, _, action, mods) => {
- let key = glfw_key_to_script_key(key);
- let state = match action {
- glfw::Action::Press => KeyState::Pressed,
- glfw::Action::Release => KeyState::Released,
- glfw::Action::Repeat => KeyState::Repeated,
- };
- let modifiers = glfw_mods_to_script_mods(mods);
- self.event_queue.borrow_mut().push(WindowEvent::KeyEvent(key, state, modifiers));
- },
- glfw::WindowEvent::FramebufferSize(width, height) => {
- self.event_queue.borrow_mut().push(
- WindowEvent::Resize(TypedSize2D(width as uint, height as uint)));
- },
- glfw::WindowEvent::Refresh => {
- self.event_queue.borrow_mut().push(WindowEvent::Refresh);
- },
- glfw::WindowEvent::MouseButton(button, action, _mods) => {
- let cursor_position = self.cursor_position();
- match button {
- glfw::MouseButton::Button5 => { // Back button (might be different per platform)
- self.event_queue.borrow_mut().push(WindowEvent::Navigation(WindowNavigateMsg::Back));
- },
- glfw::MouseButton::Button6 => { // Forward
- self.event_queue.borrow_mut().push(WindowEvent::Navigation(WindowNavigateMsg::Forward));
- },
- glfw::MouseButtonLeft | glfw::MouseButtonRight => {
- self.handle_mouse(button,
- action,
- cursor_position.x.get() as i32,
- cursor_position.y.get() as i32);
- }
- _ => {}
- }
- },
- glfw::WindowEvent::CursorPos(..) => {
- self.event_queue
- .borrow_mut()
- .push(WindowEvent::MouseWindowMoveEventClass(self.cursor_position()));
- },
- glfw::WindowEvent::Scroll(xpos, ypos) => {
- match (window.get_key(glfw::Key::LeftControl),
- window.get_key(glfw::Key::RightControl)) {
- (glfw::Action::Press, _) | (_, glfw::Action::Press) => {
- // Ctrl-Scrollwheel simulates a "pinch zoom" gesture.
- if ypos < 0.0 {
- self.event_queue.borrow_mut().push(WindowEvent::PinchZoom(1.0/1.1));
- } else if ypos > 0.0 {
- self.event_queue.borrow_mut().push(WindowEvent::PinchZoom(1.1));
- }
- },
- _ => {
- let dx = (xpos as f32) * 30.0;
- let dy = (ypos as f32) * 30.0;
- self.scroll_window(dx, dy);
- }
- }
- },
- _ => {}
- }
- }
-
- /// Helper function to send a scroll event.
- fn scroll_window(&self, dx: f32, dy: f32) {
- let cursor_pos = self.cursor_position().cast().unwrap();
- self.event_queue.borrow_mut().push(WindowEvent::Scroll(TypedPoint2D(dx, dy), cursor_pos));
- }
-
- /// Helper function to set the window title in accordance with the ready state.
- fn update_window_title(&self) {
- let now = time::get_time();
- if now.sec == self.last_title_set_time.get().sec {
- return
- }
- self.last_title_set_time.set(now);
-
- match self.ready_state.get() {
- ReadyState::Blank => {
- self.glfw_window.set_title("blank — Servo [GLFW]")
- }
- ReadyState::Loading => {
- self.glfw_window.set_title("Loading — Servo [GLFW]")
- }
- ReadyState::PerformingLayout => {
- self.glfw_window.set_title("Performing Layout — Servo [GLFW]")
- }
- ReadyState::FinishedLoading => {
- match self.paint_state.get() {
- PaintState::Painting => {
- self.glfw_window.set_title("Rendering — Servo [GLFW]")
- }
- PaintState::Idle => {
- self.glfw_window.set_title("Servo [GLFW]")
- }
- }
- }
- }
- }
-
- /// Helper function to handle a click
- fn handle_mouse(&self, button: glfw::MouseButton, action: glfw::Action, x: c_int, y: c_int) {
- // FIXME(tkuehn): max pixel dist should be based on pixel density
- let max_pixel_dist = 10f64;
- let event = match action {
- glfw::Action::Press => {
- self.mouse_down_point.set(Point2D(x, y));
- self.mouse_down_button.set(Some(button));
- MouseWindowEvent::MouseDown(button as uint, TypedPoint2D(x as f32, y as f32))
- }
- glfw::Action::Release => {
- match self.mouse_down_button.get() {
- None => (),
- Some(but) if button == but => {
- let pixel_dist = self.mouse_down_point.get() - Point2D(x, y);
- let pixel_dist = ((pixel_dist.x * pixel_dist.x +
- pixel_dist.y * pixel_dist.y) as f64).sqrt();
- if pixel_dist < max_pixel_dist {
- let click_event = MouseWindowEvent::Click(
- button as uint, TypedPoint2D(x as f32, y as f32));
- self.event_queue.borrow_mut().push(WindowEvent::MouseWindowEventClass(click_event));
- }
- }
- Some(_) => (),
- }
- MouseWindowEvent::MouseUp(button as uint, TypedPoint2D(x as f32, y as f32))
- }
- _ => panic!("I cannot recognize the type of mouse action that occured. :-(")
- };
- self.event_queue.borrow_mut().push(WindowEvent::MouseWindowEventClass(event));
- }
-
- /// Returns the cursor position, properly accounting for HiDPI.
- fn cursor_position(&self) -> TypedPoint2D<DevicePixel,f32> {
- // Handle hidpi displays, since GLFW returns non-hi-def coordinates.
- let (x, y) = self.glfw_window.get_cursor_pos();
- let hidpi_factor = self.hidpi_factor();
- Point2D::from_untyped(&Point2D(x as f32, y as f32)) * hidpi_factor
- }
-}
-
-struct GlfwCompositorProxy {
- sender: Sender<compositor_task::Msg>,
-}
-
-impl CompositorProxy for GlfwCompositorProxy {
- fn send(&mut self, msg: compositor_task::Msg) {
- // Send a message and kick the OS event loop awake.
- self.sender.send(msg);
- glfw::Glfw::post_empty_event()
- }
- fn clone_compositor_proxy(&self) -> Box<CompositorProxy+Send> {
- box GlfwCompositorProxy {
- sender: self.sender.clone(),
- } as Box<CompositorProxy+Send>
- }
-}
-
-extern "C" fn on_refresh(_glfw_window: *mut glfw::ffi::GLFWwindow) {
- unsafe {
- match g_nested_event_loop_listener {
- None => {}
- Some(listener) => {
- (*listener).handle_event_from_nested_event_loop(WindowEvent::Refresh);
- }
- }
- }
-}
-
-extern "C" fn on_framebuffer_size(_glfw_window: *mut glfw::ffi::GLFWwindow,
- width: c_int,
- height: c_int) {
- unsafe {
- match g_nested_event_loop_listener {
- None => {}
- Some(listener) => {
- let size = TypedSize2D(width as uint, height as uint);
- (*listener).handle_event_from_nested_event_loop(WindowEvent::Resize(size));
- }
- }
- }
-}
-
-fn glfw_mods_to_script_mods(mods: glfw::Modifiers) -> KeyModifiers {
- let mut result = KeyModifiers::from_bits(0).unwrap();
- if mods.contains(glfw::Shift) {
- result.insert(SHIFT);
- }
- if mods.contains(glfw::Alt) {
- result.insert(ALT);
- }
- if mods.contains(glfw::Control) {
- result.insert(CONTROL);
- }
- if mods.contains(glfw::Super) {
- result.insert(SUPER);
- }
- result
-}
-
-macro_rules! glfw_keys_to_script_keys(
- ($key:expr, $($name:ident),+) => (
- match $key {
- $(glfw::Key::$name => Key::$name,)+
- }
- );
-)
-
-fn glfw_key_to_script_key(key: glfw::Key) -> Key {
- glfw_keys_to_script_keys!(key,
- Space,
- Apostrophe,
- Comma,
- Minus,
- Period,
- Slash,
- Num0,
- Num1,
- Num2,
- Num3,
- Num4,
- Num5,
- Num6,
- Num7,
- Num8,
- Num9,
- Semicolon,
- Equal,
- A,
- B,
- C,
- D,
- E,
- F,
- G,
- H,
- I,
- J,
- K,
- L,
- M,
- N,
- O,
- P,
- Q,
- R,
- S,
- T,
- U,
- V,
- W,
- X,
- Y,
- Z,
- LeftBracket,
- Backslash,
- RightBracket,
- GraveAccent,
- World1,
- World2,
-
- Escape,
- Enter,
- Tab,
- Backspace,
- Insert,
- Delete,
- Right,
- Left,
- Down,
- Up,
- PageUp,
- PageDown,
- Home,
- End,
- CapsLock,
- ScrollLock,
- NumLock,
- PrintScreen,
- Pause,
- F1,
- F2,
- F3,
- F4,
- F5,
- F6,
- F7,
- F8,
- F9,
- F10,
- F11,
- F12,
- F13,
- F14,
- F15,
- F16,
- F17,
- F18,
- F19,
- F20,
- F21,
- F22,
- F23,
- F24,
- F25,
- Kp0,
- Kp1,
- Kp2,
- Kp3,
- Kp4,
- Kp5,
- Kp6,
- Kp7,
- Kp8,
- Kp9,
- KpDecimal,
- KpDivide,
- KpMultiply,
- KpSubtract,
- KpAdd,
- KpEnter,
- KpEqual,
- LeftShift,
- LeftControl,
- LeftAlt,
- LeftSuper,
- RightShift,
- RightControl,
- RightAlt,
- RightSuper,
- Menu)
-}
diff --git a/ports/glutin/lib.rs b/ports/glutin/lib.rs
index 08c83b61558..353b7f8bdf9 100644
--- a/ports/glutin/lib.rs
+++ b/ports/glutin/lib.rs
@@ -2,7 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-//! A simple application that uses GLFW to open a window for Servo to display in.
+//! A simple application that uses glutin to open a window for Servo to display in.
#![feature(box_syntax, int_uint)]
#![deny(unused_imports, unused_variables)]
diff --git a/python/servo/build_commands.py b/python/servo/build_commands.py
index 9a5b6a609f1..12990921abd 100644
--- a/python/servo/build_commands.py
+++ b/python/servo/build_commands.py
@@ -74,7 +74,7 @@ class MachCommands(CommandBase):
if is_headless_build():
opts += ["--no-default-features"]
- features += ["glutin_app", "headless"]
+ features += ["headless"]
if android:
features += ["android_glue"]
@@ -144,7 +144,7 @@ class MachCommands(CommandBase):
self.ensure_bootstrapped()
args = ["cargo", "test", "--no-run"]
if is_headless_build():
- args += ["--no-default-features", "--features", "glutin_app headless"]
+ args += ["--no-default-features", "--features", "headless"]
return subprocess.call(
args,
env=self.build_env(), cwd=self.servo_crate())