diff options
| author | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2010-07-09 04:15:47 +0000 |
|---|---|---|
| committer | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2010-07-09 04:15:47 +0000 |
| commit | e52097ddfe6c54547af8e3e47aadd33e385a4db7 (patch) | |
| tree | ca50fc5e6fb434d712fdd47c1fc1ed21ca0f47c4 /plugins/dfcdrom/cdr-linux.c | |
| parent | 83e06df4098064f5e4ca3c9ae1214019e934e907 (diff) | |
| download | pcsxr-e52097ddfe6c54547af8e3e47aadd33e385a4db7.tar.gz | |
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@54386 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'plugins/dfcdrom/cdr-linux.c')
| -rw-r--r-- | plugins/dfcdrom/cdr-linux.c | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/plugins/dfcdrom/cdr-linux.c b/plugins/dfcdrom/cdr-linux.c index b55e15d2..fdd41ddb 100644 --- a/plugins/dfcdrom/cdr-linux.c +++ b/plugins/dfcdrom/cdr-linux.c @@ -25,33 +25,40 @@ char *LibName = N_("CD-ROM Drive Reader"); +static int handle = -1; + int OpenCdHandle(const char *dev) { - int h; char spindown; - h = open(dev, O_RDONLY); + handle = open(dev, O_RDONLY); - if (h != -1) { - ioctl(h, CDROM_LOCKDOOR, 0); -// ioctl(h, CDROMSTART, NULL); + if (handle != -1) { + ioctl(handle, CDROM_LOCKDOOR, 0); +// ioctl(handle, CDROMSTART, NULL); spindown = (char)SpinDown; - ioctl(h, CDROMSETSPINDOWN, &spindown); + ioctl(handle, CDROMSETSPINDOWN, &spindown); - ioctl(h, CDROM_SELECT_SPEED, CdrSpeed); + ioctl(handle, CDROM_SELECT_SPEED, CdrSpeed); } - return h; + return (handle == -1) ? -1 : 0; } -void CloseCdHandle(int handle) { +void CloseCdHandle() { char spindown = SPINDOWN_VENDOR_SPECIFIC; ioctl(handle, CDROMSETSPINDOWN, &spindown); close(handle); + + handle = -1; +} + +int IsCdHandleOpen () { + return (handle != -1); } -long GetTN(int handle, unsigned char *buffer) { +long GetTN(unsigned char *buffer) { struct cdrom_tochdr toc; if (ioctl(handle, CDROMREADTOCHDR, &toc) == -1) @@ -63,7 +70,7 @@ long GetTN(int handle, unsigned char *buffer) { return 0; } -long GetTD(int handle, unsigned char track, unsigned char *buffer) { +long GetTD(unsigned char track, unsigned char *buffer) { struct cdrom_tocentry entry; if (track == 0) @@ -81,7 +88,7 @@ long GetTD(int handle, unsigned char track, unsigned char *buffer) { return 0; } -long GetTE(int handle, unsigned char track, unsigned char *m, unsigned char *s, unsigned char *f) { +long GetTE(unsigned char track, unsigned char *m, unsigned char *s, unsigned char *f) { struct cdrom_tocentry entry; char msf[3]; @@ -100,19 +107,19 @@ long GetTE(int handle, unsigned char track, unsigned char *m, unsigned char *s, return 0; } -long ReadSector(int handle, crdata *cr) { +long ReadSector(crdata *cr) { if (ioctl(handle, CDROMREADRAW, cr) == -1) return -1; return 0; } -long PlayCDDA(int handle, unsigned char *sector) { +long PlayCDDA(unsigned char *sector) { struct cdrom_msf addr; unsigned char ptmp[4]; // 0 is the last track of every cdrom, so play up to there - if (GetTD(handle, 0, ptmp) == -1) + if (GetTD(0, ptmp) == -1) return -1; addr.cdmsf_min0 = sector[0]; @@ -128,7 +135,7 @@ long PlayCDDA(int handle, unsigned char *sector) { return 0; } -long StopCDDA(int handle) { +long StopCDDA() { struct cdrom_subchnl sc; sc.cdsc_format = CDROM_MSF; @@ -145,7 +152,7 @@ long StopCDDA(int handle) { return 0; } -long GetStatus(int handle, int playing, struct CdrStat *stat) { +long GetStatus(int playing, struct CdrStat *stat) { struct cdrom_subchnl sc; int ret; char spindown; @@ -193,7 +200,7 @@ long GetStatus(int handle, int playing, struct CdrStat *stat) { return 0; } -unsigned char *ReadSub(int handle, const unsigned char *time) { +unsigned char *ReadSub(const unsigned char *time) { static struct SubQ subq; struct cdrom_subchnl subchnl; int ret; |
