summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-02-15 03:58:32 +0000
committerSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-02-15 03:58:32 +0000
commit09deb6a2c3adf334af3e1888c5c2c4b5326cb87d (patch)
treec93a197bee484901b4ceb213774075d5e78d1555 /plugins
parenta551b94c78c9f43161bd165d27a479bb4fa0189a (diff)
downloadpcsxr-09deb6a2c3adf334af3e1888c5c2c4b5326cb87d.tar.gz
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@41555 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'plugins')
-rw-r--r--plugins/dfcdrom/cdr-linux.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/plugins/dfcdrom/cdr-linux.c b/plugins/dfcdrom/cdr-linux.c
index ddf81767..68443ee9 100644
--- a/plugins/dfcdrom/cdr-linux.c
+++ b/plugins/dfcdrom/cdr-linux.c
@@ -522,19 +522,27 @@ unsigned char *CDRgetBufferSub(void) {
int ret;
if (!UseSubQ) return NULL;
-
if (subqread) return (unsigned char *)&subq;
cr.msf.cdmsf_min0 = btoi(lastTime[0]);
cr.msf.cdmsf_sec0 = btoi(lastTime[1]);
cr.msf.cdmsf_frame0 = btoi(lastTime[2]);
+
+ if (ReadMode == THREADED) pthread_mutex_lock(&mut);
+
if (ioctl(cdHandle, CDROMSEEK, &cr.msf) == -1) {
// will be slower, but there's no other way to make it accurate
- if (ioctl(cdHandle, CDROMREADRAW, &cr) == -1) return NULL;
+ if (ioctl(cdHandle, CDROMREADRAW, &cr) == -1) {
+ if (ReadMode == THREADED) pthread_mutex_unlock(&mut);
+ return NULL;
+ }
}
subchnl.cdsc_format = CDROM_MSF;
ret = ioctl(cdHandle, CDROMSUBCHNL, &subchnl);
+
+ if (ReadMode == THREADED) pthread_mutex_unlock(&mut);
+
if (ret == -1) return NULL;
subqread = 1;