From f215e84339c597f967c157f7e219fde3eb831b47 Mon Sep 17 00:00:00 2001 From: michael Date: Wed, 5 Mar 2003 10:56:47 +0000 Subject: 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 --- libmpdemux/open.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) (limited to 'libmpdemux') 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); -- cgit v1.2.3