Commit Graph

4706 Commits

Author SHA1 Message Date
Calvin304 6c71f5b2a6 avm2: Naive DefineButtonSound impl for Avm2Button 2023-01-11 17:45:39 -05:00
Nathan Adams 9cd850d30e render: Make render_offscreen return a sync handle which can be used to get the texture at a later time 2023-01-11 16:53:33 -05:00
Nathan Adams 133044b06b avm2: Fix start_drag with negative width or height 2023-01-11 00:09:01 +01:00
MrCheeze 0597ae56e6 core: Make AVM2 frame labels case sensitive 2023-01-10 11:28:56 -05:00
renovate[bot] 630558a936 fix(deps): update rust dependencies 2023-01-10 16:37:40 +01:00
Moulins 3b1c981d25 Clears the AVM1 stack after executing bytecode
AVM1 bytecode may leave the operand stack unbalanced, and this will
cause a slow memory leak if the stack is never cleared.
2023-01-10 14:14:17 +01:00
CUB3D c6bd431864 avm1: Deduplicate threshold operations 2023-01-10 13:59:06 +01:00
CUB3D ea6ea8074a tests: Add tests for BitmapData.threshold, fix issues found as a result 2023-01-10 13:59:06 +01:00
CUB3D 70f071b347 avm1: Implement Bitmapdata.threshold 2023-01-10 13:59:06 +01:00
CUB3D 8db909a7d4 desktop: Allow specifying player version 2023-01-10 13:13:30 +01:00
MrCheeze bf6342bd4b avm2: Fix hitTestPoint not transforming coordinates to world space
This behaviour is essentially copied from avm1 movie_clip.rs's hit_test.
Seems to fix several flashes that had broken collision until now.
2023-01-10 12:53:20 +01:00
Nathan Adams 724609e323 audio: Don't panic when reading an invalid mp3, bubble the error up 2023-01-10 11:10:46 +01:00
Nathan Adams 3b24d849e7 audio: Removed unwraps in mixer.rs and replaced with reasoned expects 2023-01-10 11:10:46 +01:00
Nathan Adams 7a9e8b4771 core: Made NullNavigatorBackend no longer use unwraps 2023-01-10 11:10:46 +01:00
CUB3D 84d0111a14 avm1: Add test for with scope nesting 2023-01-10 10:34:10 +01:00
CUB3D ca82ff65de avm1: Defining a local in a with scope should actually define it on the parent scope 2023-01-10 10:34:10 +01:00
Nathan Adams a37e070724 core: Use Color::WHITE for draw_rect when we don't care, as it's just identity color transform and thus cheaper 2023-01-10 09:39:28 +01:00
Nathan Adams 53d6fa4d8b render: Make render commands take in an actual value, not ref for immediate cloning 2023-01-10 09:39:28 +01:00
Adrian Wielgosik 14ee9b43fb avm2: Replace ok_or by ok_or_else 2023-01-09 21:01:39 +01:00
Aaron Hill 40d8751d67 avm2: Implement clipRect parameter for BitmapData.draw 2023-01-08 16:11:55 -05:00
Aaron Hill 1b71e288fd Remove 'gc_context lifetime
The latest `gc-arena` makes this unnecessary - we can just
use our `'a` lifetime for `MutationContext`
2023-01-06 19:20:39 -05:00
Moulins d332a174c3 Bump `gc-arena` to current master revision
This required small changes to some Debug impls that were missed in #8964
2023-01-06 18:22:43 -05:00
Nathan Adams a7738bec69 core: Added a few simple tracing::instruments 2023-01-06 04:25:22 +01:00
Nathan Adams 13fd830e7c core: Switch from log to tracing 2023-01-06 04:25:22 +01:00
MrCheeze 71fcd383a3 avm2: Add ctrlKey, altKey, shiftKey, controlKey properties to KeyboardEvent 2023-01-04 16:27:09 -05:00
Nathan Adams 4d948616db avm1: Implement BitmapData.draw with blend mode, fixes #8920 2023-01-04 12:09:08 -05:00
Nathan Adams cd550457e1 core: Made TDisplayObject::movie() no longer an Option<> 2023-01-04 08:20:08 +01:00
Nathan Adams 40a7bb04d6 core: Removed default impl of TDisplayObject::movie(), implement it everywhere 2023-01-04 08:20:08 +01:00
Aaron Hill 10491a1be9 core: Store data in `BitmapData` instead of `Bitmap`
This makes `Bitmap` delegate to `BitmapData` for
all of the bitmap-related information (handle, width, and height).
As a result, we now unconditionally store a `BitmapData` in `Bitmap`.

As a result, swapping the underling `BitmapData` instance will
automatically change the properties (and rendered image) of a `Bitmap`.

This required some refactoring in the render backends in order to
get access to a `BitmapHandle` through `BitmapData`.
2023-01-03 18:01:41 -07:00
MrCheeze 41df7fdc59 avm2: For old swf versions, invalid goto labels jump to frame 1 (fix #8954)
The regression test for this was edited directly in JPEXS, so there is
no corresponding fla to compile into the swf.
2023-01-03 17:10:06 -07:00
MrCheeze 77104ca473 avm2: Improve accuracy of gotoAndPlay / gotoAndStop (partially fix #8954)
Partially based on AVM1 implementation, partially based on the new
regression tests added in this commit.
2023-01-03 17:10:06 -07:00
nosamu 664a86161a avm2: Fix `for each..in` loops over Dictionary values 2023-01-03 16:52:15 -07:00
Moulins 27307d847a core: Replace some derived Debug impls with manual ones
In future versions of `gc-arena`, the `Debug` impl. of `Gc`
and `GcCell` will print the pointed-to value, which will cause
derived `Debug` impls. to enter an infinite recursion.

As such, this manually implements `Debug` on types wrapping a
`Gc/GcCell` to maintain the current behavior.
2023-01-03 18:03:23 -05:00
Nathan Adams 5a7ec70254 core: Remove blend mode unsupported message 2023-01-03 03:39:13 +01:00
Nathan Adams ded46e20e7 render: Replace PushBlendMode/PopBlendMode with Blend 2023-01-03 03:39:13 +01:00
EmperorBale a51ffd0e9f avm2: Strings passed to date constructor should be parsed 2023-01-02 11:43:03 -08:00
EmperorBale ab3a1e6148 avm2: Move date parsing into a separate function 2023-01-02 11:43:03 -08:00
MrCheeze bf18334294 avm2: Fix calling setTextFormat without providing a beginIndex and EndIndex
Previous behaviour defaulted to undefined and applied the format to the
range [0,0) instead of defaulting to -1 and applying the format to the
full length of the TextField.
2023-01-01 21:03:12 -08:00
Aaron Hill 9d6763510b core: Remove redundant 'clone' calls 2022-12-31 17:13:55 -05:00
nosamu 89e01b5598 avm2: Throw error in Loader.unload stub 2022-12-29 10:50:35 +01:00
EmperorBale ac4d74b9ed core: Use applicationDomain specified in context if available 2022-12-28 17:25:11 -05:00
EmperorBale 7e5018331d core: Add new `context` parameter to loader 2022-12-28 17:25:11 -05:00
dependabot[bot] 6f430bb40d build(deps): bump serde from 1.0.151 to 1.0.152
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.151 to 1.0.152.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.151...v1.0.152)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-28 10:55:35 +02:00
David Wendt 08fed6aeaa core: Don't attempt to set properties on parents after construction unless the child has an explicit name.
This already was implemented, but the prior commits broke it.
2022-12-27 20:15:49 -07:00
David Wendt 7eb0ca8ecc core: Unconstructed display objects should be `null`, not `undefined`. 2022-12-27 20:15:49 -07:00
David Wendt cbf2e94aba core: Fix AVM2 buttons getting constructed with the wrong initial state.
This code was always wrong; and only saved from breaking by other wrong code elsewhere. Specifically:

 * `SimpleButton.construct_frame` sets the wrong initial state
 * but `MovieClip.instantiate_child` fires frame events before `post_instantiation`
  * and `SimpleButton.post_instantiation` sets the correct state
2022-12-27 20:15:49 -07:00
David Wendt eb0eede07d chore: Remove unused/superceded event issue code 2022-12-27 20:15:49 -07:00
David Wendt b6aa035663 core: Instantiating display objects on the timeline should no longer construct them.
This works now because all object placement and removal happens in `enter_frame`. Constructing those objects right away causes them to drop added events.

We cannot remove other instances of `construct_frame`, however - those are in places where we actually do expect constructors to run, not just see things get placed.
2022-12-27 20:15:49 -07:00
David Wendt 4b71fff745 core: Children added to AVM2 buttons should not emit added events 2022-12-27 20:15:49 -07:00
David Wendt 0d7e9cd30e core: All display objects that can be placed by timeline need to add themselves to their parent object.
This also centralizes all the code we added in the prior commit into `on_construction_complete`, which should be called whenever an AVM2 object finishes construction.
2022-12-27 20:15:49 -07:00