1
mirror of https://code.videolan.org/videolan/vlc synced 2024-07-25 09:41:30 +02:00

udev sd: fix udev based disc finding

Only blank discs seem to give ID_CDROM_MEDIA_STATE=blank normal audio-cds just
dont have that property at all. And instead defaulting to file, default to
invalid and return NULL if we don't find any property to tell use that optical
disc is something we are able to play currently.

Fixes udev discs sd for me, tested with empty dvd-r discs and audio cds.
This commit is contained in:
Ilkka Ollakka 2010-03-07 17:28:39 +02:00
parent fb3c1a2898
commit 0820fb75f3

View File

@ -523,19 +523,18 @@ static char *disc_get_mrl (struct udev_device *dev)
return NULL; /* Ignore non-optical block devices */
val = udev_device_get_property_value (dev, "ID_CDROM_MEDIA_STATE");
if ((val == NULL) || !strcmp (val, "blank"))
if (val && !strcmp (val, "blank"))
return NULL; /* ignore empty drives and virgin recordable discs */
const char *scheme = "file";
const char *scheme = "invalid";
val = udev_device_get_property_value (dev,
"ID_CDROM_MEDIA_TRACK_COUNT_AUDIO");
if (val && atoi (val))
scheme = "cdda"; /* Audio CD rather than file system */
#if 0 /* we can use file:// for DVDs */
val = udev_device_get_property_value (dev, "ID_CDROM_MEDIA_DVD");
if (val && atoi (val))
scheme = "dvd";
#endif
scheme = "file";
val = udev_device_get_property_value (dev, "ID_CDROM_MEDIA_BD");
if (val && atoi (val))
scheme = "bd";
@ -545,6 +544,11 @@ static char *disc_get_mrl (struct udev_device *dev)
scheme = "hddvd";
#endif
/* We didn't get any property that could tell we have optical disc
that we can play */
if( !strcmp( scheme, "invalid" ) )
return NULL;
val = udev_device_get_devnode (dev);
char *mrl;