Commit Graph

13064 Commits

Author SHA1 Message Date
Nathan Adams b9573ffd8c chore: Make crowdin use T- and A- labels 2024-09-16 10:21:58 +02:00
Nathan Adams d526d2dd39 chore: Make dependabot use T- and A- labels 2024-09-16 10:21:58 +02:00
Aaron Hill 514b5ad774 core: Replace `on_exit_frame` with iteration over Loaders
This removes the need to traverse the entire display object tree -
we instead just try to fire events (when ready) on corresponding
`MovieClip`s for our `Loader::Movie` instances
2024-09-15 18:10:46 -04:00
Kamil Jarosz 94bdf6b9c6 desktop: Use FilePicker for picking files in ActionScript
This improves the experience of picking files from AS, as the pickers
will now be properly integrated with Ruffle.
2024-09-15 20:00:42 +02:00
Kamil Jarosz 4e395b26ad desktop: Add FilePicker::show_dialog
This method makes it possible to easily integrate an existing RFD
dialog with Ruffle, i.e. make sure it's a proper child of the main window
and ensure there's only one picker present at any moment.
2024-09-15 20:00:42 +02:00
Kamil Jarosz c34a4adb71 desktop: Rename pick_file to pick_ruffle_file
This change emphasizes that we want to pick a file to open by Ruffle
contrary to picking files e.g. from ActionScript.
2024-09-15 20:00:42 +02:00
Yaman Kassir c457fba947
core: Strip BOM in URLLoader text data (#17513) 2024-09-15 17:39:52 +00:00
Kamil Jarosz c378835038 desktop: Add VectorGraphics Freedesktop category
Ruffle handles SWF files, which are generally vector graphic animations.
2024-09-15 18:15:37 +02:00
Kamil Jarosz 6c1b17c2f4 desktop: Change order of Freedesktop categories
Apparently the order matters when desktop environments
decide to include the app only in one category.
It seems that we should list more important categories first.
2024-09-15 18:15:37 +02:00
Aaron Hill 6898485466 avm2: Use RefLock for BytecodeMethod.verified_info 2024-09-14 20:25:37 -04:00
wsxarcher 7d1373368b core,web: Add the ability to load TTF/OTF/OTC as default fonts for the extension 2024-09-13 22:22:38 +02:00
Moulins e6e92dd175 avm2: Also use avmplus' qsort in `Vector.sort`
This was forgotten in #17846.
2024-09-13 21:29:43 +02:00
Kamil Jarosz 24b0c8b01e tests: Add avm1/sandbox_type_remote test
Verifies the sandbox type of SWFs loaded through network.
2024-09-13 17:30:31 +02:00
Kamil Jarosz 5da61c8b90 tests: Add avm1/sandbox_type_local_network test
Verifies the sandbox type of a local SWF with network enabled.
2024-09-13 17:30:31 +02:00
Kamil Jarosz 04c19dbdbc tests: Add avm1/sandbox_type_local_file test
Verifies the sandbox type of a local SWF with network disabled.
2024-09-13 17:30:31 +02:00
Kamil Jarosz acdb355918 tests: Add avm2/sandbox_type_remote test
Verifies the sandbox type of SWFs loaded through network.
2024-09-13 17:30:31 +02:00
Kamil Jarosz f77dddb6f5 tests: Add avm2/sandbox_type_local_network test
Verifies the sandbox type of a local SWF with network enabled.
2024-09-13 17:30:31 +02:00
Kamil Jarosz 4607bfd987 tests: Add avm2/sandbox_type_local_file test
Verifies the sandbox type of a local SWF with network disabled.
2024-09-13 17:30:31 +02:00
Kamil Jarosz cbb1af7825 core: Use proper sandbox type per SWF
It's the first step of implementing the security sandbox and its
filesystem/network separation policy.
Before that Ruffle assigned `localTrusted` sandbox type for
all movies except web, where `remote` was used.
The sandbox type also was assigned to the player,
and not SWFs as it should.
This patch does not introduce any sandbox policies based
on the sandbox type, just the proper sandbox type detection.
It is also not possible to specify trusted movies,
and AIR applications don't use the `application` type yet.
2024-09-13 17:30:31 +02:00
Kamil Jarosz 41446f07d8 core: Add SandboxType::Application for AIR apps 2024-09-13 17:30:31 +02:00
Kamil Jarosz 6053fc586d core: Move SandboxType from avm1 to sandbox module 2024-09-13 17:30:31 +02:00
Lord-McSweeney f1da1457eb avm2: Return actual VerifyErrors for constant pool errors
This requires passing around an Activation
2024-09-12 16:45:51 -07:00
Kamil Jarosz 5760aa7a8e chore: Use PanicHookInfo instead of PanicInfo
Renamed in Rust 1.81.0, see https://releases.rs/docs/1.81.0/#compatibility-notes
2024-09-13 00:47:41 +02:00
TÖRÖK Attila e61fc254d1 Revert "build: Freeze rustc for nightly builds to 1.80"
This reverts commit ff9ce693ad.
2024-09-13 00:03:54 +02:00
Adrian Wielgosik 4a4b500f1d web: Make displayMessage public again 2024-09-12 23:50:42 +02:00
TÖRÖK Attila 131ec73782 chore: Bump `jpegxr`, `coreaudio-sys` and `bindgen` dependencies
Thereby dropping `which`, `lazycell`, and a duplicated `itertools` version.
2024-09-12 16:48:52 +02:00
Kamil Jarosz e8f52fd8b5 video: Use cache dir for storing downloaded OpenH264 library
Using the executable's parent directory is a bad idea in most cases,
as the place where Ruffle is installed should not be modified.
This patch changes the directory where the OpenH264 library is saved to
the cache directory, which should always be writable.
2024-09-12 13:05:27 +02:00
Kamil Jarosz 3da0246856 desktop: Add cache directory to options 2024-09-12 13:05:27 +02:00
Kamil Jarosz 22fda90f92 video: Prefer loading system OpenH264 library to downloading it
Some systems do have OpenH264 installed and in order to get
rid of the delay caused by downloading the library
(and needlessly downloading it in the first place),
an attempt is made first to load OpenH264 as a system library.
When loading fails (or version is mismatched), only then Ruffle
downloads OpenH264 and uses that version of the library.
2024-09-12 12:03:02 +02:00
Kamil Jarosz f7ec20fd92 video: Add OpenH264Data struct
This struct makes it easier to manage os/arch-specific OpenH264 information.
2024-09-12 12:03:02 +02:00
Kamil Jarosz 7f8beeb1e5 video: Reuse OpenH264 across decoders and load early
By using the H264Codec struct, we can load OpenH264 early
and reuse its instance for all decoders.
2024-09-12 12:03:02 +02:00
Kamil Jarosz 1f26edd5b1 video: Add OpenH264Codec struct
This struct represents the OpenH264 codec and makes it possible to
reuse the reference to the OpenH264 library across decoders.
It also adds better error handling.
2024-09-12 12:03:02 +02:00
Kamil Jarosz 835d2eabaa video: Rename path to filename in OpenH264::new
This value does not have to be a path, it can be a filename of
a library that is automatically located on the system.
2024-09-12 12:03:02 +02:00
Kamil Jarosz d0ede26cce desktop: Install Ruffle metadata in PKGBUILD
This most importantly adds a way of opening Ruffle using GUI.
2024-09-12 11:00:32 +02:00
dependabot[bot] db9c982484 build(deps): bump send and express in /web
Bumps [send](https://github.com/pillarjs/send) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `send` from 0.18.0 to 0.19.0
- [Release notes](https://github.com/pillarjs/send/releases)
- [Changelog](https://github.com/pillarjs/send/blob/master/HISTORY.md)
- [Commits](https://github.com/pillarjs/send/compare/0.18.0...0.19.0)

Updates `express` from 4.20.0 to 4.21.0
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.20.0...4.21.0)

---
updated-dependencies:
- dependency-name: send
  dependency-type: indirect
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-12 07:12:58 +02:00
Crowdin Bot 3b6d5088d1 chore: Update translations from Crowdin 2024-09-11 23:27:35 +02:00
Moulins 725d887ceb avm2: replace Rust's sort by avmplus' for `Array` sorts; unblocks #17812
Replace the use of Rust's standard sort in `Array.sort` and `sortOn` by
a port of avmplus' QuickSort algorithm. This avoid panics on Rust >=1.81
when `Array.sort` is called with a non-Ord comparison function, and will
always produce the same result as Flash Player.
2024-09-11 21:58:34 +02:00
Moulins b32bb16dc6 tests: add (failing) tests for random Array "sorting"
These tests fail because we do not implement the exact same algorithm
as Flash Player:
- in AVM1, the test produces a different result
- in AVM2, the test panics because Rust's sort doesn't accomodate
  non-Ord comparison functions
2024-09-11 21:58:34 +02:00
Lord-McSweeney 42b44901fc avm2: Add `get_ascii_char` to `AvmStringInterner` and use it 2024-09-11 11:31:58 -07:00
Lord-McSweeney b3769aa6f2 avm2: Use interned "*" character in `PropertyClass::get_name` and `Multiname::to_qualified_name_or_star` 2024-09-11 09:33:51 -07:00
Lord-McSweeney 3438966a04 avm2: Add `any` field to `CommonMultinames` and use it
This should reduce Gc allocations when loading multiname index 0 from the cpool
2024-09-11 09:33:51 -07:00
Lord-McSweeney 4a43ec0548 avm2: Put some more Multinames behind a Gc 2024-09-11 09:33:51 -07:00
TÖRÖK Attila 5512bc5742 chore: Bump `wayland-*` dependencies, drop duplicate `quick-xml` version `0.34.0` 2024-09-11 14:44:40 +02:00
dependabot[bot] 2ac916d1a3 build(deps): bump send and express in /web
Bumps [send](https://github.com/pillarjs/send) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `send` from 0.18.0 to 0.19.0
- [Release notes](https://github.com/pillarjs/send/releases)
- [Changelog](https://github.com/pillarjs/send/blob/master/HISTORY.md)
- [Commits](https://github.com/pillarjs/send/compare/0.18.0...0.19.0)

Updates `express` from 4.19.2 to 4.20.0
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.19.2...4.20.0)

---
updated-dependencies:
- dependency-name: send
  dependency-type: indirect
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-11 14:16:40 +02:00
Kamil Jarosz 75e4eaaba5 desktop: Improve filters in file pickers 2024-09-11 13:48:16 +02:00
Kamil Jarosz 14302b8287 desktop: Internationalize file pickers 2024-09-11 13:48:16 +02:00
TÖRÖK Attila 490c02bb58 core,desktop: Update to `winit` `v0.30.5` and latest `egui` from git 2024-09-11 13:24:14 +02:00
Lord-McSweeney 0adbf65490 avm2: Remove "Display object container has no child with name" warning 2024-09-10 22:46:42 -07:00
Lord-McSweeney c9a994fb47 core: Remove "Registering export for non-movie clip" warning log 2024-09-10 22:46:42 -07:00
Adrian Wielgosik aded790672 xml: Cache regex in custom_unescape 2024-09-10 18:04:25 +02:00