renovate[bot]
7e4e4d4c5b
fix(deps): update rust dependencies
2023-09-25 11:14:39 +02:00
Lord-McSweeney
9833a2d19d
avm2: Resolve review comments
2023-09-24 12:11:24 +02:00
Lord-McSweeney
1adde21a9b
avm2, tests: Improve String.substr; add a complex test
2023-09-24 12:11:24 +02:00
Lord-McSweeney
6a1d0e32de
avm2: Minor fix to string_wrapping_index
...
This improves the ecma3/String/substr test.
2023-09-24 12:11:24 +02:00
Aaron Hill
c20b7b37fe
Adjust behavior
2023-09-23 14:11:24 +02:00
Aaron Hill
bb4410e387
avm2: Skip nested 'goto' frame for SWF 9
...
This fixes 'who_killed_travolta', and unblocks DeathvsMonstars and
NeoPets Lost City Lanes once some additional button fixes are merged.
This isn't 100% correct (as shown by the disabled test), but it brings
us closer to what Flash Player does.
2023-09-23 14:11:24 +02:00
nosamu
e8bbb21554
avm1: tellTarget on an undefined object targets the base clip in SWF6-
2023-09-23 13:42:03 +02:00
Tom Schuster
dc53758488
avm2: Implement support for indexes in xml.child()
2023-09-22 21:28:20 +02:00
Tom Schuster
fe8390760a
avm2: Support node namespace in XML.namespace
2023-09-21 22:12:51 +02:00
Crowdin Bot
695c2ff9f5
chore: Update translations from Crowdin
2023-09-18 00:03:15 +02:00
renovate[bot]
37e2c06034
fix(deps): update rust dependencies
2023-09-18 00:00:45 +02:00
Lord-McSweeney
98cfa60832
avm2: Namespace improvements
2023-09-17 22:22:50 +02:00
Lord-McSweeney
6eddd3532e
avm2: Support Error 1089
2023-09-17 22:03:05 +02:00
Lord-McSweeney
613c21a5d2
avm2: Minor Video improvements
...
Throw RangeError when Video is initialized with negative height or width
Stub Video.clear
2023-09-16 22:55:03 +02:00
sleepycatcoding
6028505f8c
avm2: Small XML code cleanup
2023-09-15 20:20:12 +02:00
sleepycatcoding
ecbf325d41
avm2: Improve XML set_property_local implementation ( #13041 )
...
* avm2: Add error 1087
* avm2: Add deep_copy method to XmlObject
Changes existing AS3 copy method to use this instead
* avm2: Add a few utility methods to E4XNode
* avm2: Change XML.replace impl to use new utility methods
* avm2: allow setting XML/XMLList as a element
* avm2: Fix `xml_namespaced_property` test failure
* chore: fmt
* chore: Appease clippy
* avm2: Add test for XML/XMLList as element
2023-09-14 21:33:32 +00:00
Ikko Eltociear Ashimine
67f2d85e38
core: fix typo in movie_clip.rs
...
occured -> occurred
2023-09-13 23:03:14 +02:00
sleepycatcoding
b5fdd9142f
avm2: Coerce value in set slot opcode
...
This was causing a bunch of implicit conversion test failures.
2023-09-13 23:02:44 +02:00
Lord-McSweeney
53199a5116
avm2: Fix a stub message ( #13140 )
2023-09-11 17:51:55 -04:00
Nathan Adams
f092fa5809
core: Make a glyph shape handle Optional, for ie whitespace
2023-09-09 00:01:20 +02:00
Nathan Adams
bcf47622f0
core: Don't make Font/GlyphSource Clone, it's super wasteful if something did actually clone it
2023-09-09 00:01:20 +02:00
Nathan Adams
8d71ab3436
core: Make Font ascent and descent i16, as it can technically be negative
2023-09-09 00:01:20 +02:00
Nathan Adams
3758f27490
core: Move kerning info to GlyphSource
2023-09-09 00:01:20 +02:00
Nathan Adams
b8ce4e9249
core: Extract out GlyphSource from FontData
2023-09-09 00:01:20 +02:00
Nathan Adams
2cd10f614e
core: Split up Drawing's registration of the shape vs rendering of the shape
2023-09-09 00:01:20 +02:00
Nathan Adams
4d4e9b55a2
core: Refactor Glyph's internal Shape a bit, and make it not contain two duplicate shapes
2023-09-09 00:01:20 +02:00
Nathan Adams
e8e7e91584
core: Store advance separately in Glyph
2023-09-09 00:01:20 +02:00
Aaron Hill
981dedafd2
avm2: Fix avmplus.describeTypeJSON bugs and add test
2023-09-08 17:52:12 -04:00
Aaron Hill
34fb2e4f48
avm2: Fix some Object method signature definitions
...
This is exposed by avmplus.describeTypeJSON
2023-09-08 17:52:12 -04:00
nosamu
a4a9653ecd
avm2: Fix a RangeError message
2023-09-08 09:57:07 -04:00
Aaron Hill
a3e0a84a3d
core: Convert two unused doc comments to normal comments
...
This fixes Nightly warnings
2023-09-07 19:36:23 -04:00
Aaron Hill
1c0ae0b6d8
render: Bump wgpu to 0.17 and naga to 0.13
2023-09-07 18:49:59 -04:00
Lord-McSweeney
20db9f8326
avm2: Implement XML.setName ( #12979 )
...
* avm2/tests: Implement XML.setName; add a test
* avm2: Basic support for QNames in XML.setName (no namespace support yet)
* avm2: Reorder order of Attribute/Element/PI checks in XML.setName
* avm2: Throw error #1117 when the name passed to XML.setName is not a valid XML name
2023-09-07 21:47:02 +02:00
sleepycatcoding
9c7eb90d69
avm2: Implement XML.prependChild
2023-09-07 01:13:16 +02:00
Kornelius Rohrschneider
53ba75d587
Move logarithmic volume transformation to AudioMixer
...
Previously, the volume transformation to adapt the volume for
logarithmic hearing has been performed in the VolumeControls Rust struct
and TypeScript class each.
Since this calculation is the same on desktop and web and should be
implemented in the audio backend, it has been moved into the
AudioMixer::mix_audio method.
The VolumeControls struct and class now only calculate the linear volume
out of the checkbox and the slider.
Player::set_volume and Player::volume now don't take and return the
adapted volume, but use the linear volume (which gets saved internally).
2023-09-07 00:51:58 +02:00
Adrian Wielgosik
c6bad73cb2
avm2: Use ArrayObject::empty() instead of array.construct()
2023-09-06 23:53:22 +02:00
Aaron Hill
ee62044cad
avm2: Implement avmplus.describeTypeJSON and use it for describeType
...
Some SWFS (in particular, anything using Unity) call
avmplus.describeTypeJSON, and rely on the behavior of the various
flags.
This PR changes our internal implementation to implement
describeTypeJSON (producing an `Object` with dynamic fields).
We then convert this to XML in `describeType`, using an implementation
inspired by avmplus.
The existing describeType tests are passing - in a follow-up PR,
I'll add tests for describeTypeJSON
2023-09-06 23:53:22 +02:00
Lord-McSweeney
2ccd45a2af
avm2: Implement Array.insertAt
2023-09-06 23:03:57 +02:00
sleepycatcoding
db60964e2b
avm2: Bail early if character is smaller than range start
2023-09-06 23:01:34 +02:00
sleepycatcoding
936eb777e8
avm2: Implement isXMLName
2023-09-06 23:01:34 +02:00
Aaron Hill
62e9eb9d6f
avm2: Remove unnecessary '&mut self' from Object methods
2023-09-05 17:30:28 -04:00
renovate[bot]
dabc2d56b9
fix(deps): update rust dependencies
2023-09-04 10:25:24 +02:00
Lord-McSweeney
c454faf064
avm2: SharedObject::get_local should use URL of root movie
2023-08-31 19:58:53 -04:00
Lord-McSweeney
da402606e4
avm2: MovieClip::goto_frame should use the movie of the Abc method that called it
2023-08-31 19:58:53 -04:00
Lord-McSweeney
69cdb93d53
avm2: Store caller movie in Activation
2023-08-31 19:58:53 -04:00
Daniel Jacobs
d2c68350c9
avm2: Fix context parameter retrieval for Sound.load
2023-08-30 22:12:33 +02:00
Aaron Hill
24d46e7daa
avm2: Call Sound.load in constructor when passed a URLRequest
2023-08-30 21:02:41 +02:00
Abiel Deneke
0ed447b428
avm1: Set target clip to None if target is an undefined object
...
SetTarget currently sets the target clip to the base clip if the
target passed to tellTarget() is an undefined object. This causes
goto's to run on the base clip in Ruffle, when Adobe Flash Player
does not run the goto's at all.
Fixes #12389 and #12390
2023-08-29 01:23:52 +02:00
sleepycatcoding
4e6e28f78c
avm2: Correct comment
2023-08-29 00:48:48 +02:00
sleepycatcoding
430c20dd66
avm2: Small cleanup
2023-08-29 00:48:48 +02:00
sleepycatcoding
49e3546379
chore: Appease Clippy
2023-08-29 00:48:48 +02:00
sleepycatcoding
b60dd81d62
avm2: Remove parents from removed nodes
2023-08-29 00:48:48 +02:00
sleepycatcoding
80db9caf74
avm2: Implement XML.replace
2023-08-29 00:48:48 +02:00
sleepycatcoding
b3af4320e7
avm2: Add deep_copy method to XmlListObject
...
Also changes existing AS3 copy method to use that instead.
Moved as other code needs to do the same operation.
2023-08-29 00:48:48 +02:00
sleepycatcoding
fbaa02e295
avm2: Implement XML.insertChildAfter and XML.insertChildBefore
2023-08-29 00:48:48 +02:00
sleepycatcoding
aa28e51a94
avm2: Add error 1118
2023-08-29 00:48:48 +02:00
sleepycatcoding
4671122dee
avm2: Add a way to lookup E4XNode ancestors
2023-08-29 00:48:48 +02:00
renovate[bot]
4e75c3890a
fix(deps): update rust dependencies
2023-08-28 07:39:35 +02:00
Aaron Hill
2f6f00179b
avm2: Log an error when a symbol class lookup fails
...
This is almost guaranteed to cause problems, so it shouldn't
be a warning.
2023-08-27 21:15:34 -04:00
Aaron Hill
88acc96467
avm2: Fix XML/XMLDocument ignoreWhite handling for cdata
...
The ignoreWhite settings only affect text nodes, not cdata nodes.
Additionally, there should be no special case for empty text.
2023-08-27 20:28:20 -04:00
sleepycatcoding
33164d3f56
avm2: Preserve attribute flag when filling lazy multiname with QName
...
Fixes #12570
2023-08-27 19:40:00 -04:00
Aaron Hill
879dac347c
avm2: Handle child being removing from `Loader`
...
`Loader` override `removeChild` and `removeChildAt` to try to prevent
user code from removing the loaded content child. However, this can be
bypassed by calling `otherContainer.addChild(loader.content)`, which
actually removes the child from the loader. Stealth Hunter 2 relies
on this behavior.
To make this work, `Loader.content` needs to go through
`contentLoaderInfo`, instead of relying on a child being present.
2023-08-27 19:13:45 -04:00
Nathan Adams
19ad492eaa
avm2: Implement Graphics.cubicCurveTo and CUBIC_CURVE_TO
2023-08-27 20:17:43 +02:00
Nathan Adams
eb2afb19c4
render: Add DrawCommand::CubicCurveTo
2023-08-27 20:17:43 +02:00
Nathan Adams
076977cc75
render: Rename DrawCommand::CurveTo to DrawCommand::QuadraticCurveTo
2023-08-27 20:17:43 +02:00
Lord-McSweeney
04f93737c4
avm2: Make instance initialization functions variadic for int and uint
2023-08-26 13:38:33 +02:00
Lord-McSweeney
32599945bb
avm2: uint/int toPrecision/toFixed/toExponential should call Number's toPrecision/toFixed/toExponential methods. This deduplicates the methods across int and uint.
2023-08-26 13:38:33 +02:00
Lord-McSweeney
72c659fd0e
avm2: Add some static properties to Number
2023-08-26 13:38:33 +02:00
Lord-McSweeney
d366d19de6
avm2: Various (u)int/Number correctness fixes
2023-08-26 13:38:33 +02:00
SuchAFuriousDeath
40daa56f0b
avm2: partially implement Graphics.drawTriangles and drawGraphicsData ( #12559 )
2023-08-26 10:57:07 +00:00
nosamu
d25fda7cc8
avm2: Throw TypeError for null argument in TextField string property setters
2023-08-26 12:35:01 +02:00
Moulins
87437c1d6b
avm2: use `RefLock` instead of `GcCell` in avm2's scope chain
...
Also bumps gc-arena to be able to use `Write<Option<_>>::as_write`
2023-08-26 11:00:40 +02:00
Moulins
ecb5036d9e
avm1/2 use plain `RefCell` for `TextFormat` objects
...
`TextFormat` only contains static data and doesn't need write barriers
2023-08-26 11:00:40 +02:00
Moulins
c27728b7b2
avm1/2: use plain `Cell` in `Date` object
...
`Date` only contains static data, so write barrier management is
unnecessary.
2023-08-26 11:00:40 +02:00
Moulins
e2b73e80a5
avm2: use Lock instead of GcCell in BytecodeMethod
2023-08-26 11:00:40 +02:00
Moulins
9b915b7e4e
core: use GcLock instead of GcCell in FocusTracker
...
Slightly reorganizes `FocusTracker::set` to only trigger a write barrier
if the focus changed.
2023-08-26 11:00:40 +02:00
Moulins
88c7f69c57
avm1: use Lock instead of GcCell in MovieClipReference
2023-08-26 11:00:40 +02:00
sleepycatcoding
75566b92e0
avm2: XML/XMLList is converted to a string when set as attribute value
2023-08-25 11:20:51 +02:00
David Wendt
52d940b8de
core: Rename `init_buffer` to `reset_buffer`
2023-08-23 15:36:20 -06:00
David Wendt
51c8799b32
core: Rename `collect_sound_stream` to `cleanup_sound_stream`
2023-08-23 15:36:20 -06:00
David Wendt
6e3c468592
core: When reading part of a `Substream` slice for the tag reader, don't throw out the rest of it
2023-08-23 15:36:20 -06:00
David Wendt
046a1f0efc
core: When loading new data into a `NetStream` you must always clear the existing data out first.
...
`init_buffer` will remove all existing buffer state and prepare the `NetStream` to accept a new/different video.
2023-08-23 15:36:20 -06:00
David Wendt
3b90e75b17
core: AVM1 streams do not need to be attached to a movie clip in order to play audio
2023-08-23 15:36:20 -06:00
David Wendt
3fd31f1739
core: Fix #12502 .
...
This would ordinarily be a separate branch but the fix deadlocks without the new buffer type.
2023-08-23 15:36:20 -06:00
David Wendt
2d0815c013
tests: Add test cases for `SliceCursor`
2023-08-23 15:36:20 -06:00
David Wendt
4ee721e5c2
chore: Fix various cargo errors
2023-08-23 15:36:20 -06:00
David Wendt
304f04952d
core: `get_sound_duration` does not accept `SoundInstanceHandles` and I don't know why the compiler didn't flag this
2023-08-23 15:36:20 -06:00
David Wendt
a55ba16c29
core: When playing audio, queue all the tags first and then start the sound.
...
This prevents the sound from finishing before we can add a second slice to it.
2023-08-23 15:36:20 -06:00
David Wendt
8113b3a5f8
core: Allow the MP3 decoder to look ahead by up to 5 tags in the FLV to try and get rid of audio stuttering
...
Spolier alert: this doesn't work, I'm just committing this for archival purposes.
2023-08-23 15:36:20 -06:00
David Wendt
1b7eb646b6
core: Split all FLV audio, video, and script tag processing into separate functions.
2023-08-23 15:36:20 -06:00
David Wendt
257aabe4c0
core: `SubstreamChunksIter` must always advance on `next`!
2023-08-23 15:36:20 -06:00
David Wendt
782181557b
core: Fix `SubstreamTagReader`'s chunk resizing
2023-08-23 15:36:20 -06:00
David Wendt
cfe8b3c464
core: Add `LowerHex` and `UpperHex` representations of `Slice` and `SliceRef` for debugging.
2023-08-23 15:36:20 -06:00
David Wendt
7158039135
audio: Audio streamed from FLVs do not have the SWF MP3 header
2023-08-23 15:36:20 -06:00
David Wendt
dde4579a9e
core: `Substream` sounds must be started with at least one data block in them
2023-08-23 15:36:20 -06:00
David Wendt
438f53a936
core: Explicitly report a `TooManySounds` error instead of coercing all failure modes into returning `None` in `AudioManager`
2023-08-23 15:36:20 -06:00
David Wendt
be3787a489
core: Fix `SubstreamCursor` not accounting for consumed bytes properly
2023-08-23 15:36:20 -06:00
David Wendt
9b29791eeb
avm1: Implement `MovieClip.attachAudio`.
...
`NetStream`s in AVM1 do not play audio unless attached to a `MovieClip`. As far as I can tell there doesn't seem to be any equivalent API in AVM2.
2023-08-23 15:36:20 -06:00
David Wendt
dbee260d79
core: Stream audio data from FLVs into the audio backend
2023-08-23 15:36:20 -06:00
David Wendt
f5d6bf9fb9
audio: Add support for playing substream sounds through the audio manager
2023-08-23 15:36:20 -06:00