diff --git a/core/src/avm2/globals/flash/events.rs b/core/src/avm2/globals/flash/events.rs index 5ea991533..d12ee762e 100644 --- a/core/src/avm2/globals/flash/events.rs +++ b/core/src/avm2/globals/flash/events.rs @@ -4,3 +4,5 @@ pub mod event; pub mod event_dispatcher; pub mod gesture_event; pub mod mouse_event; +pub mod timer_event; +pub mod touch_event; diff --git a/core/src/avm2/globals/flash/events/MouseEvent.as b/core/src/avm2/globals/flash/events/MouseEvent.as index 4d602f924..925e983e5 100644 --- a/core/src/avm2/globals/flash/events/MouseEvent.as +++ b/core/src/avm2/globals/flash/events/MouseEvent.as @@ -76,10 +76,7 @@ package flash.events return this.formatToString("MouseEvent","type","bubbles","cancelable","eventPhase","localX","localY","stageX","stageY","relatedObject","ctrlKey","altKey","shiftKey","buttonDown","delta"); } - public function updateAfterEvent():void { - // TODO - determine when we should actually force a frame to be rendered. - stub_method("flash.events.MouseEvent", "updateAfterEvent"); - } + public native function updateAfterEvent():void; public native function get stageX() : Number; public native function get stageY() : Number; diff --git a/core/src/avm2/globals/flash/events/TimerEvent.as b/core/src/avm2/globals/flash/events/TimerEvent.as index f669a1326..b11a188af 100644 --- a/core/src/avm2/globals/flash/events/TimerEvent.as +++ b/core/src/avm2/globals/flash/events/TimerEvent.as @@ -12,9 +12,6 @@ package flash.events { return new TimerEvent(this.type,this.bubbles,this.cancelable); } - public function updateAfterEvent():void { - // TODO - determine when we should actually force a frame to be rendered. - stub_method("flash.events.TimerEvent", "updateAfterEvent"); - } + public native function updateAfterEvent():void; } } diff --git a/core/src/avm2/globals/flash/events/TouchEvent.as b/core/src/avm2/globals/flash/events/TouchEvent.as index c89f1a340..4f7f92175 100644 --- a/core/src/avm2/globals/flash/events/TouchEvent.as +++ b/core/src/avm2/globals/flash/events/TouchEvent.as @@ -101,9 +101,7 @@ public class TouchEvent extends Event { } // Instructs Flash Player or Adobe AIR to render after processing of this event completes, if the display list has been modified. - public function updateAfterEvent(): void { - stub_method("flash.events.TouchEvent", "updateAfterEvent"); - } + public native function updateAfterEvent(): void; public function get stageX(): Number { return this._stageX; diff --git a/core/src/avm2/globals/flash/events/mouse_event.rs b/core/src/avm2/globals/flash/events/mouse_event.rs index 642a65ae2..b8d21c9ea 100644 --- a/core/src/avm2/globals/flash/events/mouse_event.rs +++ b/core/src/avm2/globals/flash/events/mouse_event.rs @@ -74,3 +74,12 @@ pub fn get_stage_y<'gc>( Ok(Value::Undefined) } + +pub fn update_after_event<'gc>( + activation: &mut Activation<'_, 'gc>, + _this: Option>, + _args: &[Value<'gc>], +) -> Result, Error<'gc>> { + *activation.context.needs_render = true; + Ok(Value::Undefined) +} diff --git a/core/src/avm2/globals/flash/events/timer_event.rs b/core/src/avm2/globals/flash/events/timer_event.rs new file mode 100644 index 000000000..2f3981be7 --- /dev/null +++ b/core/src/avm2/globals/flash/events/timer_event.rs @@ -0,0 +1,13 @@ +use crate::avm2::activation::Activation; +use crate::avm2::object::Object; +use crate::avm2::value::Value; +use crate::avm2::Error; + +pub fn update_after_event<'gc>( + activation: &mut Activation<'_, 'gc>, + _this: Option>, + _args: &[Value<'gc>], +) -> Result, Error<'gc>> { + *activation.context.needs_render = true; + Ok(Value::Undefined) +} diff --git a/core/src/avm2/globals/flash/events/touch_event.rs b/core/src/avm2/globals/flash/events/touch_event.rs new file mode 100644 index 000000000..2f3981be7 --- /dev/null +++ b/core/src/avm2/globals/flash/events/touch_event.rs @@ -0,0 +1,13 @@ +use crate::avm2::activation::Activation; +use crate::avm2::object::Object; +use crate::avm2::value::Value; +use crate::avm2::Error; + +pub fn update_after_event<'gc>( + activation: &mut Activation<'_, 'gc>, + _this: Option>, + _args: &[Value<'gc>], +) -> Result, Error<'gc>> { + *activation.context.needs_render = true; + Ok(Value::Undefined) +}