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 >
C/C++ Source or Header  |  1996-05-27  |  4KB  |  114 lines

  1.  
  2.  /* SV_SuperVisor.c
  3.     - SuperVising (global exit) Functions for 8SVX-Support -
  4.     (c) 1990-94 by Andreas R. Kleinert
  5.     Last changes : 05.07.1994
  6.  */
  7.  
  8. #include "spobject.h"
  9.  
  10. struct SPObjectHandle * __saveds __asm SPO_AllocHandle( register __a1 APTR future_a1);
  11. void __saveds __asm SPO_FreeHandle( register __a1 struct SPObjectHandle *SPObjectHandle_a1);
  12. void __saveds __asm SPO_StopReplay( register __a1 struct SPObjectHandle *SPObjectHandle_a1);
  13. void __saveds __asm SPO_FreeResources( register __a1 struct SPObjectHandle *SPObjectHandle_a1);
  14.  
  15. /* *************************************************** */
  16. /* *                             * */
  17. /* * SPO_AllocHandle : Free SPObjectHandle and more  * */
  18. /* *                             * */
  19. /* *************************************************** */
  20.  
  21. struct SPObjectHandle * __saveds __asm SPO_AllocHandle( register __a1 APTR future_a1)
  22. {
  23.  APTR future = future_a1;
  24.  struct SPObjectHandle *handle;
  25.  
  26.  handle = (APTR) AllocVec(sizeof(struct SPObjectHandle), (MEMF_CLEAR|MEMF_PUBLIC));
  27.  if(handle)
  28.   {
  29.    handle->ah_Type      = SP_SUBTYPE_NONE;
  30.    handle->ah_WriteMode = SP_SUBTYPE_NONE;
  31.    handle->ah_Medium    = SPO_MEDIUM_DISK; /* default */
  32.   }
  33.  
  34.  return(handle);
  35. }
  36.  
  37. /* *************************************************** */
  38. /* *                             * */
  39. /* * SPO_FreeHandle : Free SPObjectHandle and more   * */
  40. /* *                             * */
  41. /* *************************************************** */
  42.  
  43. void __saveds __asm SPO_FreeHandle( register __a1 struct SPObjectHandle *SPObjectHandle_a1)
  44. {
  45.  struct SPObjectHandle *SPObjectHandle = SPObjectHandle_a1;
  46.  
  47.  if(SPObjectHandle->ah_PlayTask)
  48.   {
  49.    SPObjectHandle->ah_TaskStopNext = TRUE;
  50.  
  51.    for(;SPObjectHandle->ah_TaskRunning;) Delay(5);
  52.  
  53.    RemTask(SPObjectHandle->ah_PlayTask); Delay(25);
  54.  
  55.    if(SPObjectHandle->ah_PlayTask->tc_SPLower) FreeVec(SPObjectHandle->ah_PlayTask->tc_SPLower);
  56.  
  57.    FreeVec(SPObjectHandle->ah_PlayTask);
  58.    SPObjectHandle->ah_PlayTask = N;
  59.   }
  60.  
  61.  if(SPObjectHandle->ah_SPOHeader)
  62.   {
  63.    FreeVec(SPObjectHandle->ah_SPOHeader);
  64.  
  65.    if(SPObjectHandle->ah_XpkBuffer) FreeMem(SPObjectHandle->ah_XpkBuffer, SPObjectHandle->ah_XpkBufferSize);
  66.  
  67.    SPObjectHandle->ah_SPOHeader = N;
  68.    SPObjectHandle->ah_XpkBuffer = N;
  69.   }
  70.  
  71.  if(SPObjectHandle->ah_SampleList) SPLI_FreeSampleList(SPObjectHandle->ah_SampleList);
  72.  
  73.  SPO_FreeResources(SPObjectHandle);
  74.  
  75.  FreeVec(SPObjectHandle);
  76. }
  77.  
  78. /* *************************************************** */
  79. /* *                             * */
  80. /* * SPO_StopReplay : ...                            * */
  81. /* *                             * */
  82. /* *************************************************** */
  83.  
  84. void __saveds __asm SPO_StopReplay( register __a1 struct SPObjectHandle *SPObjectHandle_a1)
  85. {
  86.  struct SPObjectHandle *SPObjectHandle = SPObjectHandle_a1;
  87.  
  88.  return;
  89. }
  90.  
  91. /* *************************************************** */
  92. /* *                             * */
  93. /* * SPO_FreeResources : Free Memory and more        * */
  94. /* *                             * */
  95. /* *************************************************** */
  96.  
  97. void __saveds __asm SPO_FreeResources( register __a1 struct SPObjectHandle *SPObjectHandle_a1)
  98. {
  99.  struct SPObjectHandle *SPObjectHandle = SPObjectHandle_a1;
  100.  
  101.  if(SPObjectHandle)
  102.   {
  103.    if(SPObjectHandle->ah_filehandle_source) Close(SPObjectHandle->ah_filehandle_source);
  104.    if(SPObjectHandle->ah_filehandle_dest)   Close(SPObjectHandle->ah_filehandle_dest);
  105.    if(SPObjectHandle->ah_filehandle_dest2)  Close(SPObjectHandle->ah_filehandle_dest2);
  106.    if(SPObjectHandle->ah_ramhandle)         AIM_FreeMemList(SPObjectHandle->ah_ramhandle);
  107.  
  108.    SPObjectHandle->ah_filehandle_source = N;
  109.    SPObjectHandle->ah_filehandle_dest   = N;
  110.    SPObjectHandle->ah_filehandle_dest2  = N;
  111.    SPObjectHandle->ah_ramhandle         = N;
  112.   }
  113. }
  114.