mirror of https://github.com/mpv-player/mpv
build: change/simplify optical disc device detection
So this had a long list of OS specific device files for CD and DVD physical devices. If we ever migrate to a new build system, this will be a PITA for rather questionable usefulness. For example, Linux does provide /dev/sr0, but it also creates /dev/cdrom and /dev/dvd symlinks. For Windows, it's sort of ridiculous to hardcode D: (well, might still work). Get rid of this stuff, hardcode a single device name on Unix, keep D: on Windows. In general, this probably requires runtime detection in theory, so it's not much of a sin to move these from the build system to the code, even if we don't make use of determining the device at runtime yet. This should not invite to add new ifdeffery to add device files for other Unix variants. Rather, if anyone wants to extend this, I'd argue they should add proper runtime detection of the device. Or, even better, create an appropriate symlink on their systems.
This commit is contained in:
parent
d5de79d10f
commit
f386463840
|
@ -292,12 +292,16 @@ static int open_cdda(stream_t *st)
|
|||
&global_device);
|
||||
talloc_steal(st, global_device);
|
||||
|
||||
#if defined(_WIN32)
|
||||
p->device = "D:";
|
||||
#else
|
||||
p->device = "/dev/cdrom";
|
||||
#endif
|
||||
|
||||
if (st->path[0]) {
|
||||
p->device = st->path;
|
||||
} else if (global_device && global_device[0]) {
|
||||
p->device = global_device;
|
||||
} else {
|
||||
p->device = DEFAULT_CDROM_DEVICE;
|
||||
}
|
||||
|
||||
#if defined(__NetBSD__)
|
||||
|
|
|
@ -562,10 +562,15 @@ static int open_s_internal(stream_t *stream)
|
|||
{
|
||||
struct priv *priv, *p;
|
||||
priv = p = stream->priv;
|
||||
char *filename;
|
||||
|
||||
p->opts = mp_get_config_group(stream, stream->global, &dvd_conf);
|
||||
|
||||
char *filename = "/dev/dvd";
|
||||
|
||||
#if defined(_WIN32)
|
||||
filename = "D:";
|
||||
#endif
|
||||
|
||||
if (p->device && p->device[0])
|
||||
filename = p->device;
|
||||
else if (p->opts->device && p->opts->device[0])
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
__cdrom_devices_map__ = {
|
||||
'win32': 'D:',
|
||||
'cygwin': 'D:',
|
||||
'darwin': '/dev/disk1',
|
||||
'freebsd': '/dev/cd0',
|
||||
'openbsd': '/dev/rcd0c',
|
||||
'linux': '/dev/sr0',
|
||||
'default': '/dev/cdrom'
|
||||
}
|
||||
|
||||
__dvd_devices_map__ = {
|
||||
'win32': 'D:',
|
||||
'cygwin': 'D:',
|
||||
'darwin': '/dev/rdiskN',
|
||||
'freebsd': '/dev/cd0',
|
||||
'openbsd': '/dev/rcd0c',
|
||||
'linux': '/dev/sr0',
|
||||
'default': '/dev/dvd'
|
||||
}
|
||||
|
||||
def __default_cdrom_device__(ctx):
|
||||
default = __cdrom_devices_map__['default']
|
||||
return __cdrom_devices_map__.get(ctx.env.DEST_OS, default)
|
||||
|
||||
def __default_dvd_device__(ctx):
|
||||
default = __dvd_devices_map__['default']
|
||||
return __dvd_devices_map__.get(ctx.env.DEST_OS, default)
|
||||
|
||||
def configure(ctx):
|
||||
ctx.define('DEFAULT_DVD_DEVICE', __default_dvd_device__(ctx))
|
||||
ctx.define('DEFAULT_CDROM_DEVICE', __default_cdrom_device__(ctx))
|
Loading…
Reference in New Issue