Previously the location of the sfml-pi repo would be used as it was called first on the RPI,
which would mean an update is always done as the sfml-pi hash would have been stored rather than the
main repository. Ideally we would handle it so if either repository updates, but that requires a fair
amount of additional code as with mupen64plus and it's not work it for this - the sfml-pi code doesn't
change that often and better to just base it on the core code
The previous changes to check for an internet connection to avoid showing options to update failed
with these modules as they have install_bin functions which are handled by rp_hasBinary but don't
require an internet connection.
To workaround this, I have added a "nonet" flag, which if set, will force has_net to 1 in setup and packages
so the install options will show, and they can be removed and reinstalled even if no network connection is available.
runcommand can still fail due to not being able to install mesa-drm - which will be reported, but it's safer to allow
the main runcommand to be installed even without mesa-drm in case of accidental removal.
Mostly drivers and supplementary packages - most install to md_inst which should be handled better now,
but also adjusted sixaxis to use md_build rather than a subfolder in md_build as it didn't seem to require it.
rather than multiple arrays for each module info we now use a single array with
__mod_info(ID/KEY) where key is type/desc/help/licence/flags etc
we still keep __mod_id() - a standard indexed array with every module id (used for setup menus etc) and
__mod_idx() which references the index # from the id
this will make it easier to extend in the future
Prefer to keep package updating in once place to avoid confusion and issues with future packaging changes. This
code for example would force a source install, which may not be preferable if the user has installed from binary
and we have an updated binary available also.
There are open-source implementations of NVIDIA's GFE server which
expands Moonlight compatibility to other GPU manufacturers on both
Linux and Windows:
1. https://github.com/loki-47-6F-64/sunshine
(original project with CPU and NVIDIA HW encoder support)
2. https://github.com/LS3solutions/openstream-server
(forked project focused on Windows support with partial AMD HW encoding)
Unfortunately, moonlight-embedded does not work out of the box, so
provide a new host menu to assist in configuring the options needed
to attain full compatibility with these servers.
Previously all the module data was in indexed arrays with matching offsets.
Each scriptmodule folder had an initial index and it was incremented per module.
Many package functions expected an index. Indexes were never unique and could change
depending on added modules etc. We also had to convert between them and module IDs.
Now it's all done by module id. There is a numbered index of all modules found, that
increments which is used in the GUI setup menus. But it's not needed by any packaging functions.
md_idx is dropped and the few modules that used it for install checks etc now use md_id.
all packaging functions use the id.
retropie_packages.sh now accepts the module id only.
Currently the code for calling frontend hooks just calls all modules with the hook functions
_add_system_* _del_system_* _add_rom_* etc. For additional frontends we check if they are installed in these
functions, but for emulationstation-dev it just called the emulationstation module functions. This actually
meant that we called the emulationstation functions twice when adding a system or removing.
The helper functions probably should do the check to only call the frontend hook functions when they are installed,
which may be a better fix, but for now, this works. I am overhauling some of the packaging code, so I will revisit this.
I made some changes before to hide previously registered devices from the connect menu, to make it
easier when dealing with multiple devices of the same name. However due to the way bluetoothctl works,
previously "seen" devices are added to the system, meaning devices that are not paired are registered and cached,
and then won't be shown again.
This changeset addresses the following:
Only actually paired devices will be hidden from the register and connect menu
New functions list_paired and list_connected have been added
Switched to use bt-device to check for connected devices for consistency. Private function handles
grepping for Paired or Connected via bt-device --info
display_active_and_registered function renamed to simpler status and reworked to use the new functions.
It outputs to console - the GUI menu just calls this and then outputs to a dialog menu - making this now
a more useful commandline function
remove_device shows all registered devices, even ones seen before. These previously seen devices show
up when scanning so we still want to be able to remove them. I have adjusted it though so paired devices are
shown first, followed by any known devices.
When PulseAudio is installed and active, it takes over as the default ALSA device.
Remove any `.asoundrc` when it's enabled and configure the PulseAudio default output sink instead.
Added the option to enable/disable PulseAudio, depending on the running configuration.