During the small period of time when a player is created but has no root movie, a temporary empty movie is installed with an assumed stage size and framerate of 550x400@12fps. This is Flash default for new projects, so it seemed appropriate. User ActionScript cannot see these values, and I'm not even sure JavaScript can, either.
Remove #![windows_subsystem = "windows"], which launched us as a
GUI app on win32. However, this had the side effect of hiding
output to stdout/stderr when launched from the command-line.
Since Ruffle is primarily a CLI interface as of yet, let's revert
back to a console win32 app so that we can display output. Instead,
we can hide the console if we detect we were not launched from the
command line.
On the desktop player, shared objects will now be flushed on quit.
Attempting to retrieve an existing shared object will now return a
reference to the existing one.
No longer show a command line window when opening a file with ruffle via a file association (open with).
Co-authored-by: Genna Wingert <wingertge@gmail.com>
When creating the viewport on desktop, the window DPI was not taken
into account, which may result in a blank screen until resized
(reported in #548). The window dimensions are now converted to
physical coordinates before passing them to the renderer.
Don't call `render` from `Player::tick`; instead, require the
frontends to explicitly call `render` when they wish to redraw.
The frontend can query `Player::needs_render` to see if the stage
is dirty and needs a redraw. Update desktop and web to use this
new method.
This fits better with the newer winit event loop model, which
requires explicitly calling `request_redraw`, and should avoid
spurious renders.
This allows the formation of `'static` futures that can still interact with a player. Async code will need to upgrade the weak reference in order to be able to interact with the player.
Player is now in charge of scaling/cropping/translating the content
to fit the viewport size supplied by the frontend.
Added backend::render::Letterbox, which stores the margin sizes
for letter/pillarboxing.