iOS and tvOS shares much of the same code. Normally all differences
between the targets are handled in the backend where Xcode specific
pre-processor macros can be used to distinguish the platforms.
In shared code, even if it's still Apple specific, we need a define
to separate the iOS and tvOS targets. Add such and use it in the
shared CoreMIDI code. This fixes buildbot issues.
Integrate the existing CoreMIDI implementation used in the MacOS
backend into the iOS7 backend. The CoreMIDI framework is available
from iOS 4.2 and tvOS 15.0.
This allows ScummVM to detect external MIDI devices connected to
the device running ScummVM and to be selected as MIDI music output
device.
Use web.archive.org, as the URLs have been in HTTP 502 for some time,
and the new software they're using to serve their mailing lists just
looks terrible.
Apple's desktop operating system was formerly called "Mac OS X" and "OS X", but since 2016 it has been called "macOS" (starting with version 10.12).
Changing across all comments and documentation to use this current terminology, except in cases where the historical versions are explicitly referenced. No code changes are made; we should consider changing those in future PRs.
This in turn enables modifying MidiDriver_MPU401::close() to allow
it to be called on a midi driver that has not yet been opened.
The specific issue that triggered me to make these changes was a
crash-upon-quit in HUGO, caused by it instantiating a midi driver,
then encountering an error (missing hugo.dat) *before* having
opened the new midi driver; the general cleanup code then tries
to close the (not yet opened) midi driver -> kaboom
Also fixed some engines which were leaking MidiDriver instances.
A new header file common/forbidden.h is included by scummsys.h and it
re-#defines numerous symbols like fopen(), fread(), system(), etc. with
garbage, in order to provoke compile errors in any code using them.
If a .cpp file really *must* use any of these (e.g. because it is a
backend file), then these redefinitions can be disabled by #defining
FORBIDDEN_SYMBOL_ALLOW_ALL as the first thing in the .cpp file. Whenever
this is done, an explanatory comment should be added.
Note that this system cannot catch all "bad" usages (notably the Lua
code in the sword25 engine), as it can only work if scummsys.h is
included.
svn-id: r53961
- Added the MidiPlugin interface to the remaining MIDI drivers
- Added an initial MidiManager to handle the MIDI plugins (just static plugins by now)
svn-id: r32117