From 09deb6a2c3adf334af3e1888c5c2c4b5326cb87d Mon Sep 17 00:00:00 2001 From: "SND\\weimingzhi_cp" Date: Mon, 15 Feb 2010 03:58:32 +0000 Subject: git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@41555 e17a0e51-4ae3-4d35-97c3-1a29b211df97 --- plugins/dfcdrom/cdr-linux.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'plugins/dfcdrom/cdr-linux.c') 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; -- cgit v1.2.3