diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ffi.rs | 6 | ||||
| -rw-r--r-- | src/map.rs | 10 | 
2 files changed, 12 insertions, 4 deletions
| @@ -9,7 +9,7 @@ use xdg;  use {HeadphoneButton, MapGroup};  use config::{self, Config}; -use map::{PlayAudio, run_key_action}; +use map::{ModeChange, run_key_action};  use trial;  #[repr(C)] @@ -90,7 +90,7 @@ pub extern "C" fn dome_key_state_load_map_group(ptr: *mut State) {  pub extern "C" fn dome_key_run_key_action(      state: *mut State,      trigger: Trigger, -    play_audio: PlayAudio, +    on_mode_change: extern "C" fn(mode_change: ModeChange),  ) {      let trigger = unsafe {          assert!(!trigger.buttons.is_null()); @@ -103,7 +103,7 @@ pub extern "C" fn dome_key_run_key_action(          &mut *state      }; -    run_key_action(&mut state, trigger, play_audio); +    run_key_action(&mut state, trigger, on_mode_change);  }  #[no_mangle] @@ -21,10 +21,16 @@ impl PlayAudio {      }  } +#[repr(C)] +pub enum ModeChange { +    Activated, +    Deactivated, +} +  pub fn run_key_action<'a>(      state: &mut State,      trigger: &'a [HeadphoneButton], -    play_audio: PlayAudio, +    on_mode_change: extern "C" fn(mode_change: ModeChange),  ) {      match state.map_group {          Some(ref map_group) => { @@ -43,6 +49,7 @@ pub fn run_key_action<'a>(                          //         Err(e) => error!("{}", e),                          //     }                          // } +                        on_mode_change(ModeChange::Deactivated);                          return;                      } @@ -68,6 +75,7 @@ pub fn run_key_action<'a>(                  //         Err(e) => error!("{}", e),                  //     }                  // } +                on_mode_change(ModeChange::Activated);              }          },          None => (), | 
