]> git.pld-linux.org Git - packages/cdp.git/blame - cdp-changer.patch
- ncurses rebuild
[packages/cdp.git] / cdp-changer.patch
CommitLineData
659eaf96 1--- cdp-0.33/cdp.h.changer Fri Nov 10 01:10:42 1995
2+++ cdp-0.33/cdp.h Thu Sep 9 20:48:14 1999
3@@ -36,7 +36,7 @@
4 BOOL fSilentMode;
5 BOOL fNoAutoPlay;
6 BOOL fCDPlayMode;
7- BOOL fCmdTable, fNoFastIn, fCmdVersion;
8+ BOOL fCmdTable, fNoFastIn, fCmdVersion, fCmdStop;
9 BOOL fNoVolumeMixer;
10 int startTrack;
11 } modeInfoType;
12--- cdp-0.33/cdp.c.changer Thu Sep 9 20:48:14 1999
13+++ cdp-0.33/cdp.c Thu Sep 9 20:50:31 1999
14@@ -210,7 +210,10 @@
15 {
16 dispInfo.fNoFollowMode = ! dispInfo.fNoFollowMode;
17 if ( ! dispInfo.fNoFollowMode && cdStatus.cur_track != dispInfo.view_track ) {
18- cd_play( &cdStatus, dispInfo.view_track, 0, cdStatus.cur_ntracks + 1);
19+ if ( !cdStatus.thiscd.trk[dispInfo.view_track - 1].data )
20+ cd_play( &cdStatus, dispInfo.view_track, 0, cdStatus.cur_ntracks + 1);
21+ else
22+ dispInfo.view_track = cdStatus.cur_track;
23 }
24 }
25
26@@ -226,13 +229,28 @@
27 }
28
29
30+/* Skip data tracks in either direction */
31+static inline int wrapAround( int cur_track, int delta )
32+{
33+ int new_track;
34+
35+ new_track = normalizeTrackNum( cur_track + delta );
36+ while ( cdStatus.thiscd.trk[new_track-1].data ) {
37+ new_track = normalizeTrackNum( new_track + delta );
38+ if ( new_track == cur_track )
39+ break;
40+ }
41+ return new_track;
42+}
43+
44+
45 static void handleTrackMoveKey( displayInfoType * pInfo,
46 int delta )
47 {
48 if ( pInfo->fNoFollowMode ) {
49 pInfo->view_track = normalizeTrackNum( pInfo->view_track + delta );
50 } else {
51- cd_play( &cdStatus, normalizeTrackNum( cdStatus.cur_track + delta ), 0,
52+ cd_play( &cdStatus, wrapAround( cdStatus.cur_track, delta ), 0,
53 cdStatus.cur_ntracks + 1);
54 }
55 }
56@@ -521,6 +539,7 @@
57 if ( strcmp( str, "stop" ) == 0 ) {
58 pInfoMode->fCmdVersion = TRUE;
59 pInfoMode->fNoAutoPlay = TRUE;
60+ pInfoMode->fCmdStop = TRUE;
61 continue;
62 }
63 if ( strcmp( str, "play" ) == 0 ) {
64@@ -568,9 +587,14 @@
65 }
66
67 cdStatus.cur_track = 1;
68- if ( pMode->fCmdTable )
69+ if ( pMode->fCmdTable ) {
70 printTOC();
71-
72+ if ( cdStatus.cur_cdmode == CDPLAY )
73+ myExit( 0 );
74+ }
75+ if ( pMode->fCmdStop )
76+ cd_stop ( &cdStatus );
77+
78 if ( ! pMode->fNoAutoPlay ) {
79 if ( pMode->startTrack > 0
80 && pMode->startTrack <= cdStatus.cur_ntracks + 1 )
81--- cdp-0.33/hardware.c.changer Thu Sep 9 20:48:14 1999
82+++ cdp-0.33/hardware.c Thu Sep 9 20:48:14 1999
83@@ -344,6 +344,24 @@
84
85
86 /*
87+ * track_frame( pStatus, frame)
88+ *
89+ * Calculate track number from frame number
90+ */
91+int track_frame( cdStatusType *pStatus, int frame )
92+{
93+ int i;
94+
95+ for ( i = 0; i < pStatus->thiscd.ntracks-1; i++ ) {
96+ if( frame < pStatus->thiscd.trk[i+1].start )
97+ return i+1;
98+ }
99+
100+ return pStatus->thiscd.ntracks;
101+}
102+
103+
104+/*
105 * play_chunk( pStatus, start, end)
106 *
107 * Play the CD from one position to another (both in frames.)
108@@ -351,6 +369,7 @@
109 static void play_chunk( cdStatusType * pStatus, int start, int end )
110 {
111 struct cdrom_msf msf;
112+ struct cdrom_ti ti;
113
114 if ( ! pStatus->fTOCRead || pStatus->cd_fd < 0 )
115 return;
116@@ -371,12 +390,30 @@
117 return;
118 }
119 if (ioctl (pStatus->cd_fd, CDROMPLAYMSF, &msf)) {
120- printf ("play(%d,%d)\n", start, end);
121+/* printf ("play(%d,%d)\n", start, end);
122 printf ("msf = %d:%d:%d %d:%d:%d\n",
123 msf.cdmsf_min0, msf.cdmsf_sec0, msf.cdmsf_frame0,
124 msf.cdmsf_min1, msf.cdmsf_sec1, msf.cdmsf_frame1);
125 perror ("CDROMPLAYMSF");
126- return;
127+ return;*/
128+
129+ /* Fall back to track index playing, because some
130+ "enhanced" CDs won't work with CDROMPLAYMSF */
131+ ti.cdti_trk0 = track_frame(pStatus, start);
132+ ti.cdti_ind0 = 0;
133+ ti.cdti_trk1 = track_frame(pStatus, end);
134+ ti.cdti_ind1 = 0;
135+
136+ /* Skip to the next audio track (autoplay game CDs) */
137+ while ( pStatus->thiscd.trk[ti.cdti_trk0 - 1].data) {
138+ ti.cdti_trk0++;
139+ if ( ti.cdti_trk0 > ti.cdti_trk1 )
140+ return;
141+ }
142+ if (ioctl (pStatus->cd_fd, CDROMPLAYTRKIND, &ti)) {
143+ perror ("CDROMPLAYTRKIND");
144+ return;
145+ }
146 }
147 }
148
This page took 0.088016 seconds and 4 git commands to generate.