mirror of
https://github.com/servo/servo.git
synced 2025-08-08 15:05:35 +01:00
Remove UWP / Hololens support
This commit is contained in:
parent
041d95e0f4
commit
c58d74fe62
97 changed files with 54 additions and 7084 deletions
|
@ -48,7 +48,6 @@ no_static_freetype = ["libservo/no_static_freetype"]
|
|||
no-wgl = ["libservo/no-wgl"]
|
||||
profilemozjs = ["libservo/profilemozjs"]
|
||||
refcell_backtrace = ["libservo/refcell_backtrace"]
|
||||
uwp = ["libservo/uwp", "webxr/openxr-api"]
|
||||
webdriver = ["libservo/webdriver"]
|
||||
webgl_backtrace = ["libservo/webgl_backtrace"]
|
||||
xr-profile = ["libservo/xr-profile"]
|
||||
|
|
|
@ -49,22 +49,6 @@ fn main() {
|
|||
let mut pkg_prefs = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
||||
pkg_prefs.push("../../../resources/package-prefs.json");
|
||||
let pkg_prefs: Value = serde_json::from_reader(File::open(&pkg_prefs).unwrap()).unwrap();
|
||||
if target.contains("uwp") {
|
||||
// Assuming Hololens build
|
||||
let to_merge = pkg_prefs
|
||||
.as_object()
|
||||
.unwrap()
|
||||
.get("hololens")
|
||||
.unwrap()
|
||||
.as_object()
|
||||
.unwrap();
|
||||
for (key, value) in to_merge.iter() {
|
||||
prefs
|
||||
.as_object_mut()
|
||||
.unwrap()
|
||||
.insert(key.clone(), value.clone());
|
||||
}
|
||||
}
|
||||
let file = File::create(&dest.join("prefs.json")).unwrap();
|
||||
serde_json::to_writer(file, &prefs).unwrap();
|
||||
}
|
||||
|
|
|
@ -267,12 +267,9 @@ pub fn init(
|
|||
|
||||
// Initialize surfman
|
||||
let connection = Connection::new().or(Err("Failed to create connection"))?;
|
||||
let adapter = match create_adapter() {
|
||||
Some(adapter) => adapter,
|
||||
None => connection
|
||||
.create_adapter()
|
||||
.or(Err("Failed to create adapter"))?,
|
||||
};
|
||||
let adapter = connection
|
||||
.create_adapter()
|
||||
.or(Err("Failed to create adapter"))?;
|
||||
let surface_type = match init_opts.surfman_integration {
|
||||
SurfmanIntegration::Widget(native_widget) => {
|
||||
let native_widget = unsafe {
|
||||
|
@ -824,79 +821,6 @@ struct ServoWindowCallbacks {
|
|||
}
|
||||
|
||||
impl EmbedderMethods for ServoEmbedderCallbacks {
|
||||
#[cfg(feature = "uwp")]
|
||||
fn register_webxr(
|
||||
&mut self,
|
||||
registry: &mut webxr::MainThreadRegistry,
|
||||
embedder_proxy: EmbedderProxy,
|
||||
) {
|
||||
use ipc_channel::ipc::{self, IpcReceiver};
|
||||
use webxr::openxr;
|
||||
debug!("EmbedderMethods::register_xr");
|
||||
assert!(
|
||||
self.xr_discovery.is_none(),
|
||||
"UWP builds should not be initialized with a WebXR Discovery object"
|
||||
);
|
||||
|
||||
#[derive(Clone)]
|
||||
struct ContextMenuCallback(EmbedderProxy);
|
||||
|
||||
struct ContextMenuFuture(IpcReceiver<ContextMenuResult>);
|
||||
|
||||
impl openxr::ContextMenuProvider for ContextMenuCallback {
|
||||
fn open_context_menu(&self) -> Box<dyn openxr::ContextMenuFuture> {
|
||||
let (sender, receiver) = ipc::channel().unwrap();
|
||||
self.0.send((
|
||||
None,
|
||||
EmbedderMsg::ShowContextMenu(
|
||||
sender,
|
||||
Some("Would you like to exit the XR session?".into()),
|
||||
vec!["Exit".into()],
|
||||
),
|
||||
));
|
||||
|
||||
Box::new(ContextMenuFuture(receiver))
|
||||
}
|
||||
fn clone_object(&self) -> Box<dyn openxr::ContextMenuProvider> {
|
||||
Box::new(self.clone())
|
||||
}
|
||||
}
|
||||
|
||||
impl openxr::ContextMenuFuture for ContextMenuFuture {
|
||||
fn poll(&self) -> openxr::ContextMenuResult {
|
||||
if let Ok(result) = self.0.try_recv() {
|
||||
if let ContextMenuResult::Selected(0) = result {
|
||||
openxr::ContextMenuResult::ExitSession
|
||||
} else {
|
||||
openxr::ContextMenuResult::Dismissed
|
||||
}
|
||||
} else {
|
||||
openxr::ContextMenuResult::Pending
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if openxr::create_instance(false, false).is_ok() {
|
||||
let discovery =
|
||||
openxr::OpenXrDiscovery::new(Box::new(ContextMenuCallback(embedder_proxy)));
|
||||
registry.register(discovery);
|
||||
} else {
|
||||
let msg =
|
||||
"Cannot initialize OpenXR - please ensure runtime is installed and enabled in \
|
||||
the OpenXR developer portal app.\n\nImmersive mode will not function until \
|
||||
this error is fixed.";
|
||||
let (sender, _receiver) = ipc::channel().unwrap();
|
||||
embedder_proxy.send((
|
||||
None,
|
||||
EmbedderMsg::Prompt(
|
||||
PromptDefinition::Alert(msg.to_owned(), sender),
|
||||
PromptOrigin::Trusted,
|
||||
),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "uwp"))]
|
||||
fn register_webxr(
|
||||
&mut self,
|
||||
registry: &mut webxr::MainThreadRegistry,
|
||||
|
@ -1002,13 +926,3 @@ impl ResourceReaderMethods for ResourceReaderInstance {
|
|||
vec![]
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "uwp")]
|
||||
fn create_adapter() -> Option<Adapter> {
|
||||
webxr::openxr::create_surfman_adapter()
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "uwp"))]
|
||||
fn create_adapter() -> Option<Adapter> {
|
||||
None
|
||||
}
|
||||
|
|
|
@ -43,7 +43,6 @@ native-bluetooth = ["simpleservo/native-bluetooth"]
|
|||
no-wgl = ["simpleservo/no-wgl"]
|
||||
profilemozjs = ["simpleservo/profilemozjs"]
|
||||
refcell_backtrace = ["simpleservo/refcell_backtrace"]
|
||||
uwp = ["simpleservo/uwp"]
|
||||
webdriver = ["simpleservo/webdriver"]
|
||||
webgl_backtrace = ["simpleservo/webgl_backtrace"]
|
||||
xr-profile = ["simpleservo/xr-profile"]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue