If a stream ID is not set, gstreamer will generate random stream IDs for
the streams in downstream elements. This can cause decodebin to generate
its source pads in a non-deterministic order, as decodebin takes into
account the stream IDs when sorting the source pads.
This patch includes some changes from Arek Hiler.
CW-Bug-Id: #21192
1. ElementImpl trait requires GstObjectImpl
2. gst logging macros are no longer globals prefixed with gst_, they
live inside gst:: instead
3. element is not longer passed around in many places, it can be
accessed as self.obj() or self.instance()
4. query_default is now a part of gst::Pad and takes the pad as an argument
5. some constructors were changed to use from_$type()
6. query.view_mut() returns QueryViewMut
7. ElementFactory::make now returns a builder that we have to .build()
There are some extra cleanups as well:
1. spurious 'mut' and '&' are removed, a lot of that can be infered or
were turned into a dereference by the compiler anyway
2. !bla.is_ok() are now bla.is_err()
3. some unneeded imports were removed
Recent versions of the Steam Runtime include an IPC server/client pair
which can be used to run commands inside the container environment
(or any other special execution environment), analogous to sshd/ssh or
flatpak-portal/flatpak-spawn. The server runs inside the Steam Runtime
container and accepts commands over D-Bus; the client runs on the host
system, asks the server to run a command, and forwards its stdin, stdout
and stderr back to the host.
https://gitlab.steamos.cloud/steamrt/steamlinuxruntime/-/merge_requests/72
adds support for injecting commands into the SteamLinuxRuntime_soldier
compatibility tool (and any later version, such as sniper). However,
Steam compatibility tools are stackable: in particular, Proton runs in a
soldier container (or presumably sniper in future). If we are debugging
a Proton game, then ideally we will want to inject commands into Proton's
execution environment rather than soldier's, so that they run with the
correct environment variables etc. to communicate with a running Proton
session. In particular, it's important that the `WINEPREFIX` is correct.
The steam-runtime-launcher-interface-0 program implements the
interface for compatibility tools to use to decide where, if anywhere,
to launch the command server.
This commit does not alter the scripts produced by
PROTON_DUMP_DEBUG_COMMANDS. To run those scripts' commands in the
container environment, pass their filenames to
steam-runtime-launch-client.
Signed-off-by: Simon McVittie <smcv@collabora.com>
Link: https://github.com/ValveSoftware/Proton/pull/5891