Parent Directory | Revision Log
* added and implemented a set of 19 new LSCP commands for controlling internal effects: - added LSCP command "GET AVAILABLE_EFFECTS" - added LSCP command "LIST AVAILABLE_EFFECTS" - added LSCP command "GET EFFECT INFO <effect-index>" - added LSCP command "CREATE EFFECT_INSTANCE <effect-index>" - added LSCP command "CREATE EFFECT_INSTANCE <effect-system> <module> <effect-name>" - added LSCP command "DESTROY EFFECT_INSTANCE <effect-instance>" - added LSCP command "GET EFFECT_INSTANCES" - added LSCP command "LIST EFFECT_INSTANCES" - added LSCP command "GET EFFECT_INSTANCE INFO <effect-instance>" - added LSCP command "GET EFFECT_INSTANCE_INPUT_CONTROL INFO <effect-instance> <input-control>" - added LSCP command "SET EFFECT_INSTANCE_INPUT_CONTROL <effect-instance> <input-control> <value>" - added LSCP command "GET MASTER_EFFECT_CHAINS <audio-device>" - added LSCP command "LIST MASTER_EFFECT_CHAINS <audio-device>" - added LSCP command "ADD MASTER_EFFECT_CHAIN <audio-device>" - added LSCP command "REMOVE MASTER_EFFECT_CHAIN <audio-device> <effect-chain>" - added LSCP command "GET MASTER_EFFECT_CHAIN INFO <audio-device> <effect-chain>" - added LSCP command "APPEND MASTER_EFFECT_CHAIN EFFECT <audio-device> <effect-chain> <effect-instance>" - added LSCP command "INSERT MASTER_EFFECT_CHAIN EFFECT <audio-device> <effect-chain> <effect-instance> <effect-chain-pos>" - added LSCP command "REMOVE MASTER_EFFECT_CHAIN EFFECT <audio-device> <effect-chain> <effect-instance>" * bumped version to 1.0.0.cvs7
1 | #include "IDGenerator.h" |
2 | |
3 | namespace LinuxSampler { |
4 | |
5 | IDGenerator::IDGenerator(bool simpleAlgorithm) { |
6 | previousId = -1; |
7 | simple = simpleAlgorithm; |
8 | } |
9 | |
10 | int IDGenerator::create() { |
11 | int newId = previousId + 1; |
12 | if (newId < 0 /*reached upper value range limit*/ || |
13 | ids.find(newId) != ids.end() /*already in use*/) |
14 | { |
15 | if (simple) return -1; // whole value range was used, and we dont know what we could pick next |
16 | |
17 | newId = -1; |
18 | for (int i = 0; i >= 0; i++) { |
19 | if (ids.find(i) == ids.end()) { |
20 | // we found an unused id ... |
21 | newId = i; |
22 | break; |
23 | } |
24 | } |
25 | if (newId < 0) { |
26 | // we didn't find a free ID, the whole value range is full! |
27 | return -1; |
28 | } |
29 | } |
30 | |
31 | if (!simple) ids.insert(newId); |
32 | previousId = newId; |
33 | return newId; |
34 | } |
35 | |
36 | void IDGenerator::destroy(int id) { |
37 | if (simple) return; // nothing to do |
38 | ids.erase(id); |
39 | } |
40 | |
41 | } // namespace LinuxSampler |
ViewVC Help | |
Powered by ViewVC |