diff --git a/ports/servoshell/egl/ohos.rs b/ports/servoshell/egl/ohos.rs index 419cc9d32ca..ba59f1cf5b3 100644 --- a/ports/servoshell/egl/ohos.rs +++ b/ports/servoshell/egl/ohos.rs @@ -77,7 +77,6 @@ enum TouchEventType { Down, Up, Move, - Scroll { dx: f32, dy: f32 }, Cancel, Unknown, } @@ -95,45 +94,10 @@ enum ServoAction { Initialize(Box), } -#[derive(Clone, Copy, Debug, Default)] -enum Direction2D { - Horizontal, - Vertical, - #[default] - Free, -} -#[derive(Clone, Debug)] -struct TouchTracker { - last_position: Point2D, -} - -impl TouchTracker { - fn new(first_point: Point2D) -> Self { - TouchTracker { - last_position: first_point, - } - } -} - // Todo: Need to check if OnceLock is suitable, or if the TS function can be destroyed, e.g. // if the activity gets suspended. static SET_URL_BAR_CB: OnceLock> = OnceLock::new(); -struct TsThreadState { - // last_touch_event: Option, - velocity_tracker: Option, -} - -impl TsThreadState { - const fn new() -> Self { - Self { - velocity_tracker: None, - } - } -} - -static mut TS_THREAD_STATE: TsThreadState = TsThreadState::new(); - impl ServoAction { fn dispatch_touch_event( servo: &mut ServoGlue, @@ -145,7 +109,6 @@ impl ServoAction { match kind { TouchEventType::Down => servo.touch_down(x, y, pointer_id), TouchEventType::Up => servo.touch_up(x, y, pointer_id), - TouchEventType::Scroll { dx, dy } => servo.scroll(dx, dy, x as i32, y as i32), TouchEventType::Move => servo.touch_move(x, y, pointer_id), TouchEventType::Cancel => servo.touch_cancel(x, y, pointer_id), TouchEventType::Unknown => Err("Can't dispatch Unknown Touch Event"), @@ -252,66 +215,19 @@ pub extern "C" fn on_dispatch_touch_event_cb( return; } let touch_event = unsafe { touch_event.assume_init() }; - let kind: TouchEventType = - match touch_event.type_ { - OH_NativeXComponent_TouchEventType::OH_NATIVEXCOMPONENT_DOWN => { - if touch_event.id == 0 { - unsafe { - let old = TS_THREAD_STATE.velocity_tracker.replace(TouchTracker::new( - Point2D::new(touch_event.x, touch_event.y), - )); - assert!(old.is_none()); - } - } - TouchEventType::Down - }, - OH_NativeXComponent_TouchEventType::OH_NATIVEXCOMPONENT_UP => { - if touch_event.id == 0 { - unsafe { - let old = TS_THREAD_STATE.velocity_tracker.take(); - assert!(old.is_some()); - } - } - TouchEventType::Up - }, - OH_NativeXComponent_TouchEventType::OH_NATIVEXCOMPONENT_MOVE => { - // SAFETY: We only access TS_THREAD_STATE from the main TS thread. - if touch_event.id == 0 { - let (lastX, lastY) = unsafe { - if let Some(last_event) = &mut TS_THREAD_STATE.velocity_tracker { - let touch_point = last_event.last_position; - last_event.last_position = Point2D::new(touch_event.x, touch_event.y); - (touch_point.x, touch_point.y) - } else { - error!("Move Event received, but no previous touch event was stored!"); - // todo: handle this error case - panic!("Move Event received, but no previous touch event was stored!"); - } - }; - let dx = touch_event.x - lastX; - let dy = touch_event.y - lastY; - TouchEventType::Scroll { dx, dy } - } else { - TouchEventType::Move - } - }, - OH_NativeXComponent_TouchEventType::OH_NATIVEXCOMPONENT_CANCEL => { - if touch_event.id == 0 { - unsafe { - let old = TS_THREAD_STATE.velocity_tracker.take(); - assert!(old.is_some()); - } - } - TouchEventType::Cancel - }, - _ => { - error!( - "Failed to dispatch call for touch Event {:?}", - touch_event.type_ - ); - TouchEventType::Unknown - }, - }; + let kind: TouchEventType = match touch_event.type_ { + OH_NativeXComponent_TouchEventType::OH_NATIVEXCOMPONENT_DOWN => TouchEventType::Down, + OH_NativeXComponent_TouchEventType::OH_NATIVEXCOMPONENT_UP => TouchEventType::Up, + OH_NativeXComponent_TouchEventType::OH_NATIVEXCOMPONENT_MOVE => TouchEventType::Move, + OH_NativeXComponent_TouchEventType::OH_NATIVEXCOMPONENT_CANCEL => TouchEventType::Cancel, + _ => { + error!( + "Failed to dispatch call for touch Event {:?}", + touch_event.type_ + ); + TouchEventType::Unknown + }, + }; if let Err(e) = call(ServoAction::TouchEvent { kind, x: touch_event.x,