summaryrefslogtreecommitdiff
path: root/plugins/dfcdrom
diff options
context:
space:
mode:
authorSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2009-11-27 08:19:43 +0000
committerSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2009-11-27 08:19:43 +0000
commitd4ce960b5136aafd47e60c77876e17e37b3de18a (patch)
tree8c4f88173d36b6c54fd844f0f3f1490ab91ed049 /plugins/dfcdrom
parent24054df7ea8081b4a4b9875344b37458ec8502a5 (diff)
downloadpcsxr-d4ce960b5136aafd47e60c77876e17e37b3de18a.tar.gz
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@38307 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'plugins/dfcdrom')
-rw-r--r--plugins/dfcdrom/cdr-linux.c69
-rw-r--r--plugins/dfcdrom/cdr.h13
2 files changed, 40 insertions, 42 deletions
diff --git a/plugins/dfcdrom/cdr-linux.c b/plugins/dfcdrom/cdr-linux.c
index 7860e920..9ef40039 100644
--- a/plugins/dfcdrom/cdr-linux.c
+++ b/plugins/dfcdrom/cdr-linux.c
@@ -30,6 +30,18 @@ int initial_time = 0;
pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
+CacheData *cdcache;
+unsigned char *cdbuffer;
+int cacheaddr;
+
+crdata cr;
+
+unsigned char lastTime[3];
+int cdHandle;
+pthread_t thread;
+int subqread;
+volatile int stopth, found, locked, playing;
+
long (*ReadTrackT[])() = {
ReadNormal,
ReadThreaded,
@@ -247,7 +259,7 @@ long ReadThreaded() {
unsigned char* GetBThreaded() {
PRINTF("threadc %d\n", found);
- if (found == 1) { found = 0; return cdbuffer; }
+ if (found == 1) { /*found = 0;*/ return cdbuffer; }
cdbuffer = cdcache[0].cr.buf + 12;
while (btoi(cdbuffer[0]) != cr.msf.cdmsf_min0 ||
btoi(cdbuffer[1]) != cr.msf.cdmsf_sec0 ||
@@ -260,31 +272,6 @@ unsigned char* GetBThreaded() {
return cdbuffer;
}
-
-// read track
-// time:
-// byte 0 - minute
-// byte 1 - second
-// byte 2 - frame
-// uses bcd format
-long CDRreadTrack(unsigned char *time) {
- if (cdHandle < 1) {
- memset(cr.buf, 0, DATA_SIZE);
- return 0;
- }
-
- PRINTF("CDRreadTrack %d:%d:%d\n", btoi(time[0]), btoi(time[1]), btoi(time[2]));
-
- if (UseSubQ) memcpy(lastTime, time, 3);
- subqread = 0;
-
- cr.msf.cdmsf_min0 = btoi(time[0]);
- cr.msf.cdmsf_sec0 = btoi(time[1]);
- cr.msf.cdmsf_frame0 = btoi(time[2]);
-
- return fReadTrack();
-}
-
void *CdrThread(void *arg) {
unsigned char curTime[3];
int i;
@@ -302,12 +289,12 @@ void *CdrThread(void *arg) {
PRINTF("start thc %d:%d:%d\n", curTime[0], curTime[1], curTime[2]);
- for (i=0; i<CacheSize; i++) {
+ for (i = 0; i < CacheSize; i++) {
memcpy(&cdcache[i].cr.msf, curTime, 3);
- PRINTF("reading %d:%d:%d\n", crp.msf.cdmsf_min0, crp.msf.cdmsf_sec0, crp.msf.cdmsf_frame0);
+ PRINTF("reading %d:%d:%d\n", curTime[0], curTime[1], curTime[2]);
cdcache[i].ret = ioctl(cdHandle, CDROMREADRAW, &cdcache[i].cr);
- PRINTF("readed %x:%x:%x\n", crd.buf[12], crd.buf[13], crd.buf[14]);
+ PRINTF("readed %x:%x:%x\n", cdcache[i].cr.buf[12], cdcache[i].cr.buf[13], cdcache[i].cr.buf[14]);
if (cdcache[i].ret == -1) break;
curTime[2]++;
@@ -329,6 +316,30 @@ void *CdrThread(void *arg) {
return NULL;
}
+// read track
+// time:
+// byte 0 - minute
+// byte 1 - second
+// byte 2 - frame
+// uses bcd format
+long CDRreadTrack(unsigned char *time) {
+ if (cdHandle < 1) {
+ memset(cr.buf, 0, DATA_SIZE);
+ return 0;
+ }
+
+ PRINTF("CDRreadTrack %d:%d:%d\n", btoi(time[0]), btoi(time[1]), btoi(time[2]));
+
+ if (UseSubQ) memcpy(lastTime, time, 3);
+ subqread = 0;
+
+ cr.msf.cdmsf_min0 = btoi(time[0]);
+ cr.msf.cdmsf_sec0 = btoi(time[1]);
+ cr.msf.cdmsf_frame0 = btoi(time[2]);
+
+ return fReadTrack();
+}
+
// return readed track
unsigned char *CDRgetBuffer(void) {
return fGetBuffer();
diff --git a/plugins/dfcdrom/cdr.h b/plugins/dfcdrom/cdr.h
index ae22f6cd..2570545c 100644
--- a/plugins/dfcdrom/cdr.h
+++ b/plugins/dfcdrom/cdr.h
@@ -48,24 +48,11 @@ typedef union {
unsigned char buf[CD_FRAMESIZE_RAW];
} crdata;
-crdata cr;
-
typedef struct {
crdata cr;
int ret;
} CacheData;
-CacheData *cdcache;
-unsigned char *cdbuffer;
-int cacheaddr;
-
-unsigned char lastTime[3];
-int cdHandle;
-pthread_t thread;
-int subqread, stopth;
-int found, locked;
-int playing;
-
long ReadNormal();
long ReadThreaded();
unsigned char* GetBNormal();