[Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src cd_pockettunes.cpp,1.5,1.6 cd_pockettunes.h,1.3,1.4
Chris Apers
chrilith at users.sourceforge.net
Wed Oct 12 13:29:56 CEST 2005
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src be_base.cpp,1.1,1.2 be_base.h,1.1,1.2 be_zodiac.h,1.1,1.2
- Next message: [Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src cd_msa.cpp,1.8,1.9 cd_msa.h,1.5,1.6 cdaudio.h,1.5,1.6
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/backends/PalmOS/Src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32486
Modified Files:
cd_pockettunes.cpp cd_pockettunes.h
Log Message:
Revamped PocketTunes support
Index: cd_pockettunes.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/PalmOS/Src/cd_pockettunes.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- cd_pockettunes.cpp 30 Jul 2005 21:10:48 -0000 1.5
+++ cd_pockettunes.cpp 12 Oct 2005 20:28:11 -0000 1.6
@@ -34,66 +34,93 @@
PocketTunesStart();
_isInitialized = PocketTunesIsRunning();
_isPlaying = false;
+ _pAction = NULL;
+
+ if (_isInitialized) {
+ _pAction = (PocketTunesAction*)MemPtrNew(sizeof(PocketTunesAction));
+ _volumeLimit = getVolumeLimit();
+ }
+
+ _isInitialized = (_isInitialized && _pAction);
return _isInitialized;
}
void PckTunesCDPlayer::release() {
- // self delete
PocketTunesStop();
+ if (_pAction)
+ MemPtrFree(_pAction);
+
+ // self delete
delete this;
}
-UInt32 PckTunesCDPlayer::getStatus() {
- if (!_isPlaying)
- return kPtunesStopped;
+UInt32 PckTunesCDPlayer::getVolumeLimit() {
+ UInt32 value = 0;
- EventType e;
- UInt32 status;
+ if (!_pAction)
+ return value;
- PocketTunesAction *pAction = (PocketTunesAction*)MemPtrNew (sizeof(PocketTunesAction));
- if (!pAction)
- return kPtunesStopped;
+ _pAction->action = kPocketTunesActionGetValue;
+ _pAction->data.getValueAction.which = kPtunesValueMaxVolume;
+
+ EvtGetEvent(&_eAction, evtNoWait);
+ if (PocketTunesCallSynch(_pAction) == errNone)
+ value = _pAction->data.getValueAction.value;
- pAction->action = kPocketTunesActionGetStatus;
- EvtGetEvent(&e, evtNoWait);
- if (PocketTunesCallSynch(pAction) == errNone)
- status = pAction->data.getStatusAction.status;
- else
- status = kPtunesStopped;
+ return value;
+}
- MemPtrFree(pAction);
- return status;
+UInt32 PckTunesCDPlayer::getStatus() {
+ UInt32 status = kPtunesStopped;
+
+ if (!_isPlaying || !_pAction)
+ return status;
+
+ _pAction->action = kPocketTunesActionGetStatus;
+
+ EvtGetEvent(&_eAction, evtNoWait);
+ if (PocketTunesCallSynch(_pAction) == errNone)
+ status = _pAction->data.getStatusAction.status;
+
+ return status;
}
UInt32 PckTunesCDPlayer::getPosition(UInt32 deflt) {
- if (!_isPlaying)
- return deflt;
+ UInt32 value = deflt;
- EventType e;
- UInt32 value;
+ if (!_isPlaying || !_pAction)
+ return value;
- PocketTunesAction *pAction = (PocketTunesAction*)MemPtrNew (sizeof(PocketTunesAction));
- if (!pAction)
- return deflt;
+ _pAction->action = kPocketTunesActionGetValue;
+ _pAction->data.getValueAction.which = kPtunesValueSongPosition;
+
+ EvtGetEvent(&_eAction, evtNoWait);
+ if (PocketTunesCallSynch(_pAction) == errNone)
+ value = _pAction->data.getValueAction.value;
- pAction->action = kPocketTunesActionGetValue;
- pAction->data.getValueAction.which = kPtunesValueSongPosition;
+ return value;
+}
- EvtGetEvent(&e, evtNoWait);
- if (PocketTunesCallSynch(pAction) == errNone)
- value = pAction->data.getValueAction.value;
- else
- value = deflt;
+UInt32 PckTunesCDPlayer::getDuration() {
+ UInt32 value = gVars->CD.defaultTrackLength;
- MemPtrFree(pAction);
- return value;
+ if (!_isPlaying || !_pAction)
+ return value;
+
+ _pAction->action = kPocketTunesActionGetValue;
+ _pAction->data.getValueAction.which = kPtunesValueSongDuration;
+
+ EvtGetEvent(&_eAction, evtNoWait);
+ if (PocketTunesCallSynch(_pAction) == errNone)
+ value = _pAction->data.getValueAction.value;
+
+ return value;
}
void PckTunesCDPlayer::setPosition(UInt32 value) {
if (!_isPlaying)
return;
- EventType e;
PocketTunesAction *pAction = AllocateAsynchronousActionStruct();
if (!pAction)
return;
@@ -102,32 +129,23 @@
pAction->data.getValueAction.which = kPtunesValueSongPosition;
pAction->data.getValueAction.value = value;
- EvtGetEvent(&e, evtNoWait);
+ EvtGetEvent(&_eAction, evtNoWait);
PocketTunesCall(pAction);
}
-UInt32 PckTunesCDPlayer::getDuration() {
- if (!_isPlaying)
- return gVars->CD.defaultTrackLength;
-
- EventType e;
- UInt32 value;
+void PckTunesCDPlayer::setVolume(int volume) {
+ _volumeLevel = volume;
- PocketTunesAction *pAction = (PocketTunesAction*)MemPtrNew (sizeof(PocketTunesAction));
+ PocketTunesAction *pAction = AllocateAsynchronousActionStruct();
if (!pAction)
- return gVars->CD.defaultTrackLength;
-
- pAction->action = kPocketTunesActionGetValue;
- pAction->data.getValueAction.which = kPtunesValueSongDuration;
+ return;
- EvtGetEvent(&e, evtNoWait);
- if (PocketTunesCallSynch(pAction) == errNone)
- value = pAction->data.getValueAction.value;
- else
- value = gVars->CD.defaultTrackLength;
+ pAction->action = kPocketTunesActionSetValue;
+ pAction->data.getValueAction.which = kPtunesValueVolume;
+ pAction->data.getValueAction.value = (_volumeLimit * volume) / 100;
- MemPtrFree(pAction);
- return value;
+ EvtGetEvent(&_eAction, evtNoWait);
+ PocketTunesCall(pAction);
}
bool PckTunesCDPlayer::poll() {
@@ -146,9 +164,7 @@
}
// not fully played
-// if (_sys->getMillis() < _pckTrackEndFrame)
-// return;
- if (getPosition(_pckTrackEndFrame) < _pckTrackEndFrame)
+ if (getPosition(_pckTrackEndFrame) < _pckTrackEndFrame && getStatus() != kPtunesStopped)
return;
PocketTunesStop();
@@ -162,14 +178,13 @@
// loop if needed
if (_pckLoops != 0 && _isPlaying) {
- PocketTunesPlay();
-
if (_pckTrackStartFrame == 0 && _pckTrackDuration == 0) {
setPosition(0);
} else {
setPosition(_pckTrackStartFrame);
}
-// _pckTrackEndFrame = _pckTrackStartFrame + _pckTrackDuration;
+
+ PocketTunesPlay();
}
}
@@ -185,21 +200,17 @@
EventType e;
Char nameP[256], fileP[100];
- Char *ext[] = { "mp3", "ogg" };
-
-// if (duration > 0)
-// duration += 5;
-
+ static const Char *ext[] = { "mp3", "ogg" };
+
_pckTrack = track;
_pckLoops = num_loops;
_pckTrackStartFrame = TO_MSECS(start_frame);
_pckTrackDuration = TO_MSECS(duration);
- // stop current play if any
- VFSVolumeGetLabel(gVars->volRefNum, nameP, 256);
-
+ VFSVolumeGetLabel(gVars->VFS.volRefNum, nameP, 256);
+
StrPrintF(fileP, "/Palm/Programs/ScummVM/Audio/%s_%03ld.%s", gameP, (track + gVars->CD.firstTrack - 1), ext[gVars->CD.format]);
-
+
if (PocketTunesOpenFile(nameP, fileP, 0) == errNone) {
EvtGetEvent(&e, evtNoWait);
PocketTunesPauseIfPlaying();
Index: cd_pockettunes.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/PalmOS/Src/cd_pockettunes.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- cd_pockettunes.h 30 Jul 2005 21:10:48 -0000 1.3
+++ cd_pockettunes.h 12 Oct 2005 20:28:11 -0000 1.4
@@ -19,39 +19,48 @@
* $Header$
*
*/
-
+
#ifndef CD_POCKETTUNES_H
#define CD_POCKETTUNES_H
-
+
#include "cdaudio.h"
#include "pockettunes.h"
-
+
class PckTunesCDPlayer : public CDAudio {
public:
PckTunesCDPlayer(OSystem *sys);
bool init();
void release();
-
+
bool poll();
void update();
void play(int track, int num_loops, int start_frame, int duration);
void stop();
-
+
+ void setVolume(int volume);
+
private:
OSystem *_sys;
Char gameP[15];
-
+
+ PocketTunesAction *_pAction; // prevent memory fragmentation
+ EventType _eAction;
+
UInt32 getStatus();
void setPosition(UInt32 value);
UInt32 getDuration();
UInt32 getPosition(UInt32 deft);
-
+
+ UInt32 _volumeLimit;
+ UInt32 getVolumeLimit();
+
Boolean _isPlaying;
// cdrom
UInt16 _pckLoops, _pckTrack;
UInt32 _pckTrackStartFrame, _pckTrackEndFrame;
UInt32 _pckStopTime, _pckTrackDuration;
};
-
- #endif
\ No newline at end of file
+
+ #endif
+
\ No newline at end of file
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src be_base.cpp,1.1,1.2 be_base.h,1.1,1.2 be_zodiac.h,1.1,1.2
- Next message: [Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src cd_msa.cpp,1.8,1.9 cd_msa.h,1.5,1.6 cdaudio.h,1.5,1.6
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list