00001 /* 00002 $Id: cardsession_manager.h,v 1.1 2001/03/06 15:09:26 mbn Exp $ 00003 00004 ------------------------------------------------------------------------ 00005 ClanLib, the platform independent game SDK. 00006 00007 This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE 00008 version 2. See COPYING for details. 00009 00010 For a total list of contributers see CREDITS. 00011 00012 ------------------------------------------------------------------------ 00013 */ 00014 00015 #ifndef header_cardsession_manager 00016 #define header_cardsession_manager 00017 00018 #include "API/Core/System/cl_assert.h" 00019 #include "cardsoundbuffer_playback.h" 00020 00021 #include <vector> 00022 00023 class CL_CardSessionManager 00024 { 00025 public: 00026 CL_CardSessionManager(); 00027 virtual ~CL_CardSessionManager(); 00028 00029 void *add_playback(CL_CardSoundBuffer_Playback *playback_buffer); 00030 void add_reference(void *handle); 00031 void remove_reference(void *handle); 00032 void remove_soundbuffer_playbacks(CL_SoundBuffer_Generic *playback); 00033 void remove_all_playbacks(); 00034 bool is_soundbuffer_playing(CL_SoundBuffer *playback); 00035 00036 CL_CardSoundBuffer_Playback *get_playback(void *handle) 00037 { 00038 // Totally safe type checking (not) 00039 SPlayBackStruct *s = (SPlayBackStruct *) handle; 00040 return s->playback; 00041 } 00042 00043 private: 00044 struct SPlayBackStruct 00045 { 00046 CL_CardSoundBuffer_Playback *playback; 00047 int reference_count; 00048 00049 SPlayBackStruct(CL_CardSoundBuffer_Playback *_playback); 00050 virtual ~SPlayBackStruct(); 00051 }; 00052 00053 std::list<SPlayBackStruct*> playbacks; 00054 void garbage_collect(); 00055 }; 00056 00057 #endif
1.2.6 written by Dimitri van Heesch,
© 1997-2001