Fix libsimpleservo build after MediaSession C enums change

This commit is contained in:
Fernando Jiménez Moreno 2019-12-02 17:14:46 +01:00 committed by Fernando Jimenez Moreno
parent b01e3fdc7e
commit 58623a6f5b
4 changed files with 19 additions and 14 deletions

View file

@ -134,7 +134,7 @@ pub trait HostTrait {
/// Called when we get the media session metadata/ /// Called when we get the media session metadata/
fn on_media_session_metadata(&self, title: String, artist: String, album: String); fn on_media_session_metadata(&self, title: String, artist: String, album: String);
/// Called when the media session playback state changes. /// 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. /// Called when the media session position state is set.
fn on_media_session_set_position_state(&self, duration: f64, position: f64, playback_rate: f64); fn on_media_session_set_position_state(&self, duration: f64, position: f64, playback_rate: f64);
} }

View file

@ -219,7 +219,7 @@ pub struct CHostCallbacks {
pub set_clipboard_contents: extern "C" fn(contents: *const c_char), pub set_clipboard_contents: extern "C" fn(contents: *const c_char),
pub on_media_session_metadata: pub on_media_session_metadata:
extern "C" fn(title: *const c_char, album: *const c_char, artist: *const c_char), 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: pub on_media_session_set_position_state:
extern "C" fn(duration: f64, position: f64, playback_rate: f64), extern "C" fn(duration: f64, position: f64, playback_rate: f64),
} }

View file

@ -15,7 +15,9 @@ use jni::{errors, JNIEnv, JavaVM};
use libc::{dup2, pipe, read}; use libc::{dup2, pipe, read};
use log::Level; use log::Level;
use simpleservo::{self, gl_glue, ServoGlue, SERVO}; 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::os::raw::{c_char, c_int, c_void};
use std::ptr::{null, null_mut}; use std::ptr::{null, null_mut};
use std::sync::Arc; use std::sync::Arc;
@ -340,7 +342,7 @@ pub fn Java_org_mozilla_servoview_JNIServo_mediaSessionAction(
action: jint, action: jint,
) { ) {
debug!("mediaSessionAction"); 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 { pub struct WakeupCallback {
@ -548,9 +550,10 @@ impl HostTrait for HostCallbacks {
.unwrap(); .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); info!("on_media_session_playback_state_change {:?}", state);
let env = self.jvm.get_env().unwrap(); let env = self.jvm.get_env().unwrap();
let state = state as i32;
let state = JValue::Int(state as jint); let state = JValue::Int(state as jint);
env.call_method( env.call_method(
self.callbacks.as_obj(), self.callbacks.as_obj(),

View file

@ -74,17 +74,19 @@ void BrowserPage::BindServoEvents() {
[=](hstring title, hstring artist, hstring album) {}); [=](hstring title, hstring artist, hstring album) {});
servoControl().OnMediaSessionPlaybackStateChange( servoControl().OnMediaSessionPlaybackStateChange(
[=](const auto &, int state) { [=](const auto &, int state) {
if (state == servo::PlaybackState::NONE) { if (state == servo::Servo::MediaSessionPlaybackState::None) {
mediaControls().Visibility(Visibility::Collapsed); mediaControls().Visibility(Visibility::Collapsed);
return; return;
} }
mediaControls().Visibility(Visibility::Visible); mediaControls().Visibility(Visibility::Visible);
playButton().Visibility(state == servo::PlaybackState::PAUSED playButton().Visibility(
? Visibility::Visible state == servo::Servo::MediaSessionPlaybackState::Paused
: Visibility::Collapsed); ? Visibility::Visible
pauseButton().Visibility(state == servo::PlaybackState::PAUSED : Visibility::Collapsed);
? Visibility::Collapsed pauseButton().Visibility(
: Visibility::Visible); state == servo::Servo::MediaSessionPlaybackState::Paused
? Visibility::Collapsed
: Visibility::Visible);
}); });
} }
@ -163,13 +165,13 @@ void BrowserPage::OnMediaControlsPlayClicked(
Windows::Foundation::IInspectable const &, Windows::Foundation::IInspectable const &,
Windows::UI::Xaml::RoutedEventArgs const &) { Windows::UI::Xaml::RoutedEventArgs const &) {
servoControl().SendMediaSessionAction( servoControl().SendMediaSessionAction(
static_cast<int32_t>(servo::MediaSessionAction::PLAY)); static_cast<int32_t>(servo::Servo::MediaSessionActionType::Play));
} }
void BrowserPage::OnMediaControlsPauseClicked( void BrowserPage::OnMediaControlsPauseClicked(
Windows::Foundation::IInspectable const &, Windows::Foundation::IInspectable const &,
Windows::UI::Xaml::RoutedEventArgs const &) { Windows::UI::Xaml::RoutedEventArgs const &) {
servoControl().SendMediaSessionAction( servoControl().SendMediaSessionAction(
static_cast<int32_t>(servo::MediaSessionAction::PAUSE)); static_cast<int32_t>(servo::Servo::MediaSessionActionType::Pause));
} }
} // namespace winrt::ServoApp::implementation } // namespace winrt::ServoApp::implementation