/[svn]/linuxsampler/trunk/src/effects/EffectFactory.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/effects/EffectFactory.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2125 by schoenebeck, Sat Sep 18 09:24:41 2010 UTC revision 2126 by persson, Tue Sep 21 06:00:25 2010 UTC
# Line 7  Line 7 
7    
8  namespace LinuxSampler {  namespace LinuxSampler {
9    
10  static bool bInitialized = false;  namespace {
11    
12  static std::vector<EffectInfo*> vEffectInfos;  class EffectInfos {
13    public:
14        EffectInfos();
15        ~EffectInfos();
16        void Update();
17        uint Count();
18        EffectInfo* GetEffectInfo(uint index);
19    private:
20        std::vector<EffectInfo*> infos;
21        bool bInitialized;
22    };
23    
24    EffectInfos::EffectInfos() : bInitialized(false) {
25    }
26    
27    EffectInfos::~EffectInfos() {
28        for (int i = 0; i < infos.size(); i++) delete infos[i];
29    }
30    
31    void EffectInfos::Update() {
32        // clear out all old effect infos
33        for (int i = 0; i < infos.size(); i++) delete infos[i];
34    
35        // scan for LADSPA effects
36        infos = LadspaEffect::AvailableEffects();
37    }
38    
39    uint EffectInfos::Count() {
40        if (!bInitialized) {
41            Update();
42            bInitialized = true;
43        }
44        return infos.size();
45    }
46    
47    EffectInfo* EffectInfos::GetEffectInfo(uint index) {
48        if (index >= infos.size()) return NULL;
49        return infos[index];
50    }
51    
52    
53    EffectInfos effectInfos;
54    
55    std::vector<Effect*> vEffectInstances;
56    
57    }
58    
 static std::vector<Effect*> vEffectInstances;  
59    
60  ////////////////////////////////////////////////////////////////////////////  ////////////////////////////////////////////////////////////////////////////
61  // class 'EffectFactory'  // class 'EffectFactory'
# Line 21  String EffectFactory::AvailableEffectSys Line 65  String EffectFactory::AvailableEffectSys
65  }  }
66    
67  uint EffectFactory::AvailableEffectsCount() {  uint EffectFactory::AvailableEffectsCount() {
68      if (!bInitialized) UpdateAvailableEffects();      return effectInfos.Count();
     bInitialized = true;  
     return vEffectInfos.size();  
69  }  }
70    
71  EffectInfo* EffectFactory::GetEffectInfo(uint index) {  EffectInfo* EffectFactory::GetEffectInfo(uint index) {
72      if (index >= vEffectInfos.size()) return NULL;      return effectInfos.GetEffectInfo(index);
     return vEffectInfos[index];  
73  }  }
74    
75  Effect* EffectFactory::Create(EffectInfo* pEffectInfo) throw (Exception) {  Effect* EffectFactory::Create(EffectInfo* pEffectInfo) throw (Exception) {
# Line 65  void EffectFactory::Destroy(Effect* pEff Line 106  void EffectFactory::Destroy(Effect* pEff
106  }  }
107    
108  void EffectFactory::UpdateAvailableEffects() {  void EffectFactory::UpdateAvailableEffects() {
109      // clear out all old effect infos      effectInfos.Update();
     for (int i = 0; i < vEffectInfos.size(); i++) delete vEffectInfos[i];  
     vEffectInfos.clear();  
   
     // scan for LADSPA effects  
     vEffectInfos = LadspaEffect::AvailableEffects();  
110  }  }
111    
112  } // namespace LinuxSampler  } // namespace LinuxSampler

Legend:
Removed from v.2125  
changed lines
  Added in v.2126

  ViewVC Help
Powered by ViewVC