home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga Shareware Floppies / ma58.dms / ma58.adf / superplay-lib_DEV / Programmers / Example_SPObjects / ST / SP_SuperVisor.c < prev    next >
C/C++ Source or Header  |  1996-05-27  |  3KB  |  98 lines

  1.  
  2.  /* SV_SuperVisor.c
  3.     - SuperVising (global exit) Functions for ST-Support -
  4.     (c) 1990-94 by Andreas R. Kleinert
  5.     Last changes : 17.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_STModule)
  48.   {
  49.    ST_Stop();
  50.  
  51.    ST_UnLoadModule();
  52.  
  53.    ST_Module = N;
  54.    ST_Len    = N;
  55.   }
  56.  
  57.  if(SPObjectHandle->ah_SampleList) SPLI_FreeSampleList(SPObjectHandle->ah_SampleList);
  58.  
  59.  SPO_FreeResources(SPObjectHandle);
  60.  
  61.  FreeVec(SPObjectHandle);
  62. }
  63.  
  64. /* *************************************************** */
  65. /* *                             * */
  66. /* * SPO_StopReplay : ...                            * */
  67. /* *                             * */
  68. /* *************************************************** */
  69.  
  70. void __saveds __asm SPO_StopReplay( register __a1 struct SPObjectHandle *SPObjectHandle_a1)
  71. {
  72.  struct SPObjectHandle *SPObjectHandle = SPObjectHandle_a1;
  73.  
  74.  if(SPObjectHandle) if(SPObjectHandle->ah_STModule) ST_Stop();
  75. }
  76.  
  77. /* *************************************************** */
  78. /* *                             * */
  79. /* * SPO_FreeResources : Free Memory and more        * */
  80. /* *                             * */
  81. /* *************************************************** */
  82.  
  83. void __saveds __asm SPO_FreeResources( register __a1 struct SPObjectHandle *SPObjectHandle_a1)
  84. {
  85.  struct SPObjectHandle *SPObjectHandle = SPObjectHandle_a1;
  86.  
  87.  if(SPObjectHandle)
  88.   {
  89.    if(SPObjectHandle->ah_filehandle_source) Close(SPObjectHandle->ah_filehandle_source);
  90.    if(SPObjectHandle->ah_filehandle_dest)   Close(SPObjectHandle->ah_filehandle_dest);
  91.    if(SPObjectHandle->ah_ramhandle)         AIM_FreeMemList(SPObjectHandle->ah_ramhandle);
  92.  
  93.    SPObjectHandle->ah_filehandle_source = N;
  94.    SPObjectHandle->ah_filehandle_dest   = N;
  95.    SPObjectHandle->ah_ramhandle         = N;
  96.   }
  97. }
  98.