home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magazyn Amiga Shareware Floppies
/
ma58.dms
/
ma58.adf
/
superplay-lib_DEV
/
Programmers
/
Example_SPObjects
/
SPO
/
SP_SuperVisor.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-05-27
|
4KB
|
114 lines
/* SV_SuperVisor.c
- SuperVising (global exit) Functions for 8SVX-Support -
(c) 1990-94 by Andreas R. Kleinert
Last changes : 05.07.1994
*/
#include "spobject.h"
struct SPObjectHandle * __saveds __asm SPO_AllocHandle( register __a1 APTR future_a1);
void __saveds __asm SPO_FreeHandle( register __a1 struct SPObjectHandle *SPObjectHandle_a1);
void __saveds __asm SPO_StopReplay( register __a1 struct SPObjectHandle *SPObjectHandle_a1);
void __saveds __asm SPO_FreeResources( register __a1 struct SPObjectHandle *SPObjectHandle_a1);
/* *************************************************** */
/* * * */
/* * SPO_AllocHandle : Free SPObjectHandle and more * */
/* * * */
/* *************************************************** */
struct SPObjectHandle * __saveds __asm SPO_AllocHandle( register __a1 APTR future_a1)
{
APTR future = future_a1;
struct SPObjectHandle *handle;
handle = (APTR) AllocVec(sizeof(struct SPObjectHandle), (MEMF_CLEAR|MEMF_PUBLIC));
if(handle)
{
handle->ah_Type = SP_SUBTYPE_NONE;
handle->ah_WriteMode = SP_SUBTYPE_NONE;
handle->ah_Medium = SPO_MEDIUM_DISK; /* default */
}
return(handle);
}
/* *************************************************** */
/* * * */
/* * SPO_FreeHandle : Free SPObjectHandle and more * */
/* * * */
/* *************************************************** */
void __saveds __asm SPO_FreeHandle( register __a1 struct SPObjectHandle *SPObjectHandle_a1)
{
struct SPObjectHandle *SPObjectHandle = SPObjectHandle_a1;
if(SPObjectHandle->ah_PlayTask)
{
SPObjectHandle->ah_TaskStopNext = TRUE;
for(;SPObjectHandle->ah_TaskRunning;) Delay(5);
RemTask(SPObjectHandle->ah_PlayTask); Delay(25);
if(SPObjectHandle->ah_PlayTask->tc_SPLower) FreeVec(SPObjectHandle->ah_PlayTask->tc_SPLower);
FreeVec(SPObjectHandle->ah_PlayTask);
SPObjectHandle->ah_PlayTask = N;
}
if(SPObjectHandle->ah_SPOHeader)
{
FreeVec(SPObjectHandle->ah_SPOHeader);
if(SPObjectHandle->ah_XpkBuffer) FreeMem(SPObjectHandle->ah_XpkBuffer, SPObjectHandle->ah_XpkBufferSize);
SPObjectHandle->ah_SPOHeader = N;
SPObjectHandle->ah_XpkBuffer = N;
}
if(SPObjectHandle->ah_SampleList) SPLI_FreeSampleList(SPObjectHandle->ah_SampleList);
SPO_FreeResources(SPObjectHandle);
FreeVec(SPObjectHandle);
}
/* *************************************************** */
/* * * */
/* * SPO_StopReplay : ... * */
/* * * */
/* *************************************************** */
void __saveds __asm SPO_StopReplay( register __a1 struct SPObjectHandle *SPObjectHandle_a1)
{
struct SPObjectHandle *SPObjectHandle = SPObjectHandle_a1;
return;
}
/* *************************************************** */
/* * * */
/* * SPO_FreeResources : Free Memory and more * */
/* * * */
/* *************************************************** */
void __saveds __asm SPO_FreeResources( register __a1 struct SPObjectHandle *SPObjectHandle_a1)
{
struct SPObjectHandle *SPObjectHandle = SPObjectHandle_a1;
if(SPObjectHandle)
{
if(SPObjectHandle->ah_filehandle_source) Close(SPObjectHandle->ah_filehandle_source);
if(SPObjectHandle->ah_filehandle_dest) Close(SPObjectHandle->ah_filehandle_dest);
if(SPObjectHandle->ah_filehandle_dest2) Close(SPObjectHandle->ah_filehandle_dest2);
if(SPObjectHandle->ah_ramhandle) AIM_FreeMemList(SPObjectHandle->ah_ramhandle);
SPObjectHandle->ah_filehandle_source = N;
SPObjectHandle->ah_filehandle_dest = N;
SPObjectHandle->ah_filehandle_dest2 = N;
SPObjectHandle->ah_ramhandle = N;
}
}