diff options
| author | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2010-07-08 04:24:44 +0000 |
|---|---|---|
| committer | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2010-07-08 04:24:44 +0000 |
| commit | 46f4825b631fff91374caf7ea62b329609425bb6 (patch) | |
| tree | fad1e7ff10227154424f2edcde226bb1b71d78d6 /plugins | |
| parent | 369a201161abf72750470a58cf7ebdd1a10ab2e4 (diff) | |
| download | pcsxr-46f4825b631fff91374caf7ea62b329609425bb6.tar.gz | |
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@54337 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/dfcdrom/cdr-freebsd.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/plugins/dfcdrom/cdr-freebsd.c b/plugins/dfcdrom/cdr-freebsd.c index fbdd8c89..69b9d0ad 100644 --- a/plugins/dfcdrom/cdr-freebsd.c +++ b/plugins/dfcdrom/cdr-freebsd.c @@ -45,9 +45,6 @@ int OpenCdHandle(const char *dev) { if (parameter == 0) parameter = CDR_MAX_SPEED; ioctl(h, CDRIOCREADSPEED, ¶meter); - - parameter = CD_FRAMESIZE_RAW; - ioctl(h, CDRIOCSETBLOCKSIZE, ¶meter); } } @@ -85,8 +82,19 @@ long ReadSector(int handle, crdata *cr) { unsigned int lba = msf_to_lba(cr->msf.cdmsf_min0, cr->msf.cdmsf_sec0, cr->msf.cdmsf_frame0); - if (pread(handle, (void *)cr->buf, CD_FRAMESIZE_RAW, lba * CD_FRAMESIZE_RAW) != CD_FRAMESIZE_RAW) + int bsize = CD_FRAMESIZE_RAW; + + if (ioctl(handle, CDRIOCSETBLOCKSIZE, &bsize) == -1) { + return -1; + } + + if (lseek(handle, lba * CD_FRAMESIZE_RAW, SEEK_SET) == -1) { return -1; + } + + if (read(handle, (void *)cr->buf, CD_FRAMESIZE_RAW) == -1) { + return -1; + } return 0; } |
