From 24054df7ea8081b4a4b9875344b37458ec8502a5 Mon Sep 17 00:00:00 2001 From: "SND\\weimingzhi_cp" Date: Thu, 26 Nov 2009 15:29:20 +0000 Subject: git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@38278 e17a0e51-4ae3-4d35-97c3-1a29b211df97 --- plugins/dfcdrom/cdr-linux.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'plugins/dfcdrom/cdr-linux.c') diff --git a/plugins/dfcdrom/cdr-linux.c b/plugins/dfcdrom/cdr-linux.c index 66905cbf..7860e920 100644 --- a/plugins/dfcdrom/cdr-linux.c +++ b/plugins/dfcdrom/cdr-linux.c @@ -17,6 +17,10 @@ #include "cdr.h" +#ifndef CDROMSETSPINDOWN +#define CDROMSETSPINDOWN 0x531e +#endif + static inline int msf_to_lba(char m, char s, char f) { return (((m * CD_SECS) + s) * CD_FRAMES + f) - CD_MSF_OFFSET; } @@ -55,6 +59,8 @@ long CDRshutdown(void) { } long CDRopen(void) { + char spindown; + LoadConf(); if (cdHandle > 0) @@ -64,6 +70,9 @@ long CDRopen(void) { ioctl(cdHandle, CDROM_LOCKDOOR, 0); // ioctl(cdHandle, CDROMSTART, NULL); + spindown = (char)SpinDown; + ioctl(cdHandle, CDROMSETSPINDOWN, &spindown); + ioctl(cdHandle, CDROM_SELECT_SPEED, CdrSpeed); } else { fprintf(stderr, "CDR: Could not open %s\n", CdromDev); @@ -101,9 +110,13 @@ long CDRopen(void) { } long CDRclose(void) { + char spindown; + if (cdHandle < 1) return 0; if (playing) CDRstop(); + spindown = SPINDOWN_VENDOR_SPECIFIC; + ioctl(cdHandle, CDROMSETSPINDOWN, &spindown); close(cdHandle); cdHandle = -1; @@ -419,6 +432,7 @@ long CDRgetStatus(struct CdrStat *stat) { struct cdrom_subchnl sc; int ret; static time_t to; + char spindown; if (cdHandle < 1) return -1; @@ -460,6 +474,8 @@ long CDRgetStatus(struct CdrStat *stat) { stat->Status |= 0x10; break; default: + spindown = (char)SpinDown; + ioctl(cdHandle, CDROMSETSPINDOWN, &spindown); ioctl(cdHandle, CDROM_LOCKDOOR, 0); break; } @@ -554,7 +570,6 @@ void ExecCfg(char *arg) { long CDRconfigure() { ExecCfg("configure"); - return 0; } -- cgit v1.2.3