Aaron Hill
768eaa1a01
avm2: Store at most a single type parameter in names/clasess
...
The only generic class is `Vector`, which only has a single parameter.
However, we currently store a list of type parameters in several places,
which requires redundant checks that the list only has one entry.
Instead, we now store an `Option` everwhere except for
`swf::Multiname::TypeName` (since the actual SWF format supports
multiple type parameters). We still perform the same check when loading
bytecode (the swf Multiname should only have at most one type
parameter), but the rest of the codebase can deal with an `Option`
instead.
2023-07-02 16:02:53 -04:00
Aaron Hill
2bcfabef53
desktop: Use `SubscriberInitExt::init` to capture `log` output
...
This method redirects output from the `log` crate to `tracing`,
which lets us get naga/wgpu logs.
2023-07-02 15:38:35 -04:00
Aaron Hill
26101ae979
render: Add 'renderdoc' feature/module for manual frame capture
...
This feature is disabled by default. When enabled, you can use
`ruffle_render::renderdoc::begin_frame_capture` and
`ruffle_render::renderdoc::end_frame_capture` to manually trigger
a RenderDoc frame capture (if Ruffle wasn't launched by RenderDoc,
this logs an error).
This is very useful when debugging Stage3D/PixelBender bugs, as you
can produce a capture containing only the relevant graphics calls.
2023-07-02 13:59:19 -04:00
Aaron Hill
b77c1fc78f
core: Fix Nightly clippy lint
2023-07-02 14:32:45 +02:00
Aaron Hill
f7c50865a0
core: Update formatting with latest nightly 'cargo fmt'
2023-07-02 14:32:45 +02:00
TÖRÖK Attila
0fe8469d24
chore: Run `npm update --save` in `web`
...
Also `npm install` to make sure `package-lock.json` is clean.
2023-07-02 13:55:24 +02:00
Crowdin Bot
80588d614d
chore: Update translations from Crowdin
2023-07-02 11:41:18 +02:00
Adrian Wielgosik
bd043c09c7
cargo fmt
2023-07-01 23:38:09 +02:00
David Wendt
679f179a60
docs: Document the aliasing situation with `VideoSource::Swf`
2023-07-01 23:38:09 +02:00
David Wendt
d382b29fb1
core: Allocate a new `VideoSource` when attaching netstreams rather than attaching the stream to every instance of the video
2023-07-01 23:38:09 +02:00
David Wendt
b2544618ab
core: `VideoStream` should not hold the last decoded frame as this data structure is shared across multiple instances of the same character
2023-07-01 23:38:09 +02:00
Adrian Wielgosik
7eb7f2ee2c
avm2: Correctly set and use Video class from Rust
2023-07-01 22:45:20 +02:00
Lord-McSweeney
7ad864ca02
avm2+tests: Implement Matrix3D.copyColumnFrom; add a test
2023-07-01 15:23:29 -04:00
Aaron Hill
6e1f00edf2
render: Implement more PixelBender features ( #11800 )
2023-07-01 13:50:43 -04:00
Aaron Hill
710be15f78
core: Bail out of operations::color_transform if [xy]_min==[xy]_max
...
In the special case where y_min==y_max==(height-1),
we would create a bad 'encompassing' region - subtracing
one from the max would make it smaller than the min,
causing `PixelRegion::encompassing_pixels` to treat it
as the minimum, and add one to `height - 1`
There's no work to do when x_min==x_max or y_min==y_max,
so we can also skip the sync and GC write in this case.
2023-07-01 09:55:59 -04:00
Nathan Adams
5e608764ec
core: Add debug feature to find display objects by mouse
2023-07-01 12:58:32 +02:00
renovate[bot]
898b2c8948
chore(deps): lock file maintenance node.js dependencies
2023-07-01 12:20:10 +03:00
Aaron Hill
c2fcdf6fd6
avm2: Implement Stage3D.requestContext3DMatchingProfiles
...
For now, we just ignore the parameters and call requestContext3D
2023-06-30 23:22:56 -04:00
Crowdin Bot
29a5c6a4cd
chore: Update translations from Crowdin
2023-07-01 00:47:31 +02:00
David Wendt
32524d3abd
core: AVM2 display object allocators always ensure both halves of the display object are connected correctly
2023-06-30 16:14:28 -06:00
TÖRÖK Attila
c7bbed958c
tests: Add test of ScreenVideo FLVs (contributed by torokati44)
2023-06-30 16:14:28 -06:00
David Wendt
8ac8b926ac
core: If a video does not have an `onMetaData` block, register a compatible-ish datastream so that we can still play the video
2023-06-30 16:14:28 -06:00
David Wendt
b9aaaf5259
flv: ScreenVideo v2 also wants the FLV video data byte
2023-06-30 16:14:28 -06:00
David Wendt
3ff1db014f
flv: Screen Video wants the FLV `VideoData` header byte
2023-06-30 16:14:28 -06:00
David Wendt
21b7e70d09
docs: Keep documentation of the old `num_frames` options until we can remove them
2023-06-30 16:14:28 -06:00
David Wendt
ff1ed66729
flv: VP6 video packets have a horizontal and vertical adjustment before the actual video data.
2023-06-30 16:14:28 -06:00
David Wendt
98ee78be1a
avm2: Make netstream event initialization more concise
2023-06-30 16:14:28 -06:00
David Wendt
04ee039d3c
avm2: Use `ParametersExt` to grab parameters in `Video.init()`
2023-06-30 16:14:28 -06:00
David Wendt
faf8fb5d3f
avm2: Move as much `Video` initialization as possible into an instance allocator function
2023-06-30 16:14:28 -06:00
David Wendt
45e6f07009
core: Pause the stream if we hit a tag parsing error.
2023-06-30 16:14:28 -06:00
David Wendt
af0149c476
core: Log netstream signature verification errors
2023-06-30 16:14:28 -06:00
David Wendt
b639af1ada
avm2: `Video.init` doesn't need to call `super_init`
2023-06-30 16:14:28 -06:00
David Wendt
4f4a205637
tests: Add images to the netstream tests
2023-06-30 16:14:28 -06:00
David Wendt
d2f806a901
core: The AVM2 version of this test wants a spurious status event
2023-06-30 16:14:28 -06:00
David Wendt
ab21b5b106
core: The stop event is `NetStream.Play.Stop`
2023-06-30 16:14:28 -06:00
David Wendt
61c269c636
docs: Document `num_ticks` and `tick_rate`
2023-06-30 16:14:28 -06:00
David Wendt
16c9cb4fdd
tests: Add option to send ticks to the player instead of calling `run_frame`.
...
You can also specify a `tick_rate` in order to get ticks faster or slower than the stage frame rate.
We also enable video decode and ticks on the netstream tests, since our netstream impl requires ticks.
2023-06-30 16:14:28 -06:00
David Wendt
fc50a688fb
core: Update stream time after processing tags
2023-06-30 16:14:28 -06:00
David Wendt
4dd9508471
avm1: Implement onStatus events for NetStream
2023-06-30 16:14:28 -06:00
David Wendt
63b27a4a20
avm2: Pass status events through to AVM2.
2023-06-30 16:14:28 -06:00
David Wendt
757ae40abc
core: Add stubs for stream event triggers
2023-06-30 16:14:28 -06:00
David Wendt
da2ef5392e
core: Make the `NetStream`/AVM link bidirectional
2023-06-30 16:14:28 -06:00
David Wendt
067474dea5
chore: Remove unused variables from stream.rs
2023-06-30 16:14:28 -06:00
David Wendt
4944d81dd7
tests: Update the AVM1 test output to include event data.
2023-06-30 16:14:28 -06:00
David Wendt
d498a412e5
core: Retain original SWF dimensions for self bounds
2023-06-30 16:14:28 -06:00
David Wendt
b164319e32
core: FLV metadata is stored as an array, not an object.
2023-06-30 16:14:28 -06:00
David Wendt
643b053e8d
core: Don't mark the video stream as corrupt if we haven't gotten the full header yet
2023-06-30 16:14:28 -06:00
David Wendt
587a99fae7
core: Netstream loaders are... well, netstream loaders.
2023-06-30 16:14:28 -06:00
David Wendt
0e207cce8d
core: Actually spawn the loader future for the netstream
2023-06-30 16:14:28 -06:00
David Wendt
7e986bd90d
avm1: `NetStream` constructor must return itself
2023-06-30 16:14:28 -06:00