From 58623a6f5bd45f1e0e3f94fca15ab4a3793eb933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Jim=C3=A9nez=20Moreno?= Date: Mon, 2 Dec 2019 17:14:46 +0100 Subject: [PATCH] Fix libsimpleservo build after MediaSession C enums change --- ports/libsimpleservo/api/src/lib.rs | 2 +- ports/libsimpleservo/capi/src/lib.rs | 2 +- ports/libsimpleservo/jniapi/src/lib.rs | 9 ++++++--- support/hololens/ServoApp/BrowserPage.cpp | 20 +++++++++++--------- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/ports/libsimpleservo/api/src/lib.rs b/ports/libsimpleservo/api/src/lib.rs index 468a3b2d3319..0b127eddb9a6 100644 --- a/ports/libsimpleservo/api/src/lib.rs +++ b/ports/libsimpleservo/api/src/lib.rs @@ -134,7 +134,7 @@ pub trait HostTrait { /// Called when we get the media session metadata/ fn on_media_session_metadata(&self, title: String, artist: String, album: String); /// Called when the media session playback state changes. - fn on_media_session_playback_state_change(&self, state: MediaSessionPlaybackState); + fn on_media_session_playback_state_change(&self, state: MediaSessionPlaybackState); /// Called when the media session position state is set. fn on_media_session_set_position_state(&self, duration: f64, position: f64, playback_rate: f64); } diff --git a/ports/libsimpleservo/capi/src/lib.rs b/ports/libsimpleservo/capi/src/lib.rs index 73bdb2de77c2..89d3b0f5c1ab 100644 --- a/ports/libsimpleservo/capi/src/lib.rs +++ b/ports/libsimpleservo/capi/src/lib.rs @@ -219,7 +219,7 @@ pub struct CHostCallbacks { pub set_clipboard_contents: extern "C" fn(contents: *const c_char), pub on_media_session_metadata: extern "C" fn(title: *const c_char, album: *const c_char, artist: *const c_char), - pub on_media_session_playback_state_change: extern "C" fn(state: CMediaSessionPlaybackState), + pub on_media_session_playback_state_change: extern "C" fn(state: CMediaSessionPlaybackState), pub on_media_session_set_position_state: extern "C" fn(duration: f64, position: f64, playback_rate: f64), } diff --git a/ports/libsimpleservo/jniapi/src/lib.rs b/ports/libsimpleservo/jniapi/src/lib.rs index 74db8774a157..1c4020652e80 100644 --- a/ports/libsimpleservo/jniapi/src/lib.rs +++ b/ports/libsimpleservo/jniapi/src/lib.rs @@ -15,7 +15,9 @@ use jni::{errors, JNIEnv, JavaVM}; use libc::{dup2, pipe, read}; use log::Level; use simpleservo::{self, gl_glue, ServoGlue, SERVO}; -use simpleservo::{Coordinates, EventLoopWaker, HostTrait, InitOptions, VRInitOptions}; +use simpleservo::{ + Coordinates, EventLoopWaker, HostTrait, InitOptions, MediaSessionPlaybackState, VRInitOptions, +}; use std::os::raw::{c_char, c_int, c_void}; use std::ptr::{null, null_mut}; use std::sync::Arc; @@ -340,7 +342,7 @@ pub fn Java_org_mozilla_servoview_JNIServo_mediaSessionAction( action: jint, ) { debug!("mediaSessionAction"); - call(&env, |s| s.media_session_action(action as i32)); + call(&env, |s| s.media_session_action((action as i32).into())); } pub struct WakeupCallback { @@ -548,9 +550,10 @@ impl HostTrait for HostCallbacks { .unwrap(); } - fn on_media_session_playback_state_change(&self, state: i32) { + fn on_media_session_playback_state_change(&self, state: MediaSessionPlaybackState) { info!("on_media_session_playback_state_change {:?}", state); let env = self.jvm.get_env().unwrap(); + let state = state as i32; let state = JValue::Int(state as jint); env.call_method( self.callbacks.as_obj(), diff --git a/support/hololens/ServoApp/BrowserPage.cpp b/support/hololens/ServoApp/BrowserPage.cpp index c68017541aa4..daf29c273404 100644 --- a/support/hololens/ServoApp/BrowserPage.cpp +++ b/support/hololens/ServoApp/BrowserPage.cpp @@ -74,17 +74,19 @@ void BrowserPage::BindServoEvents() { [=](hstring title, hstring artist, hstring album) {}); servoControl().OnMediaSessionPlaybackStateChange( [=](const auto &, int state) { - if (state == servo::PlaybackState::NONE) { + if (state == servo::Servo::MediaSessionPlaybackState::None) { mediaControls().Visibility(Visibility::Collapsed); return; } mediaControls().Visibility(Visibility::Visible); - playButton().Visibility(state == servo::PlaybackState::PAUSED - ? Visibility::Visible - : Visibility::Collapsed); - pauseButton().Visibility(state == servo::PlaybackState::PAUSED - ? Visibility::Collapsed - : Visibility::Visible); + playButton().Visibility( + state == servo::Servo::MediaSessionPlaybackState::Paused + ? Visibility::Visible + : Visibility::Collapsed); + pauseButton().Visibility( + state == servo::Servo::MediaSessionPlaybackState::Paused + ? Visibility::Collapsed + : Visibility::Visible); }); } @@ -163,13 +165,13 @@ void BrowserPage::OnMediaControlsPlayClicked( Windows::Foundation::IInspectable const &, Windows::UI::Xaml::RoutedEventArgs const &) { servoControl().SendMediaSessionAction( - static_cast(servo::MediaSessionAction::PLAY)); + static_cast(servo::Servo::MediaSessionActionType::Play)); } void BrowserPage::OnMediaControlsPauseClicked( Windows::Foundation::IInspectable const &, Windows::UI::Xaml::RoutedEventArgs const &) { servoControl().SendMediaSessionAction( - static_cast(servo::MediaSessionAction::PAUSE)); + static_cast(servo::Servo::MediaSessionActionType::Pause)); } } // namespace winrt::ServoApp::implementation