summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-03-05 10:56:47 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-03-05 10:56:47 +0000
commitf215e84339c597f967c157f7e219fde3eb831b47 (patch)
tree3f6d7c5f22c911d087de934973040fc632843b3f /libmpdemux
parentb749836b0824fbf406ad16f327edd1de074a952b (diff)
downloadmpv-f215e84339c597f967c157f7e219fde3eb831b47.tar.bz2
mpv-f215e84339c597f967c157f7e219fde3eb831b47.tar.xz
Dynamic decision of DVD device Darwin patch by (danchr at daimi dot au dot dk)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9536 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/open.c31
1 files changed, 27 insertions, 4 deletions
diff --git a/libmpdemux/open.c b/libmpdemux/open.c
index 6d8b6efa3b..add424d8cf 100644
--- a/libmpdemux/open.c
+++ b/libmpdemux/open.c
@@ -221,10 +221,33 @@ if(dvd_title){
* Open the disc.
*/
if(!dvd_device) dvd_device=strdup(DEFAULT_DVD_DEVICE);
- dvd = DVDOpen(dvd_device);
- if( !dvd ) {
- mp_msg(MSGT_OPEN,MSGL_ERR,MSGTR_CantOpenDVD,dvd_device);
- return NULL;
+#ifdef SYS_DARWIN
+ /* Dynamic DVD drive selection on Darwin */
+ if (!strcmp(dvd_device, "/dev/rdiskN")) {
+ int i;
+ char *temp_device = malloc((strlen(dvd_device)+1)*sizeof(char));
+
+ for (i = 1; i < 10; i++) {
+ sprintf(temp_device, "/dev/rdisk%d", i);
+ dvd = DVDOpen(temp_device);
+ if (!dvd) {
+ mp_msg(MSGT_OPEN,MSGL_ERR,MSGTR_CantOpenDVD,temp_device);
+ } else {
+ free(temp_device);
+ break;
+ }
+ }
+
+ if (!dvd)
+ return NULL;
+ } else
+#endif /* SYS_DARWIN */
+ {
+ dvd = DVDOpen(dvd_device);
+ if( !dvd ) {
+ mp_msg(MSGT_OPEN,MSGL_ERR,MSGTR_CantOpenDVD,dvd_device);
+ return NULL;
+ }
}
mp_msg(MSGT_OPEN,MSGL_INFO,MSGTR_DVDwait);