1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| class MusicThread: pulic QThread
{
Q_OBJECT
enum ObjectType
{
None = 0, AddObject, DelObject, AddInput, DelInput, AddOutput, DelOutput
};
public:
MusicThread(QObject* parent) : QThread(parent)
{
_objectType = None;
_objectToAdd = NULL;
}
void addObject(MusicObject* object)
{
if (isRunning())
{
_objectType = AddObject;
_objectToAdd = (void*)object;
}
else
_objects.append(object);
}
//du code assez similaire pour ajouter-retirer des entrées/sorties
protected:
void run()
{
QList<MusicInput*> inputs(_inputs);
QList<MusicObject*> objects(_objects);
QList<MusicOutput*> outputs(_outputs);
while(1)
{
if (_objectType != None)
{
if (_objectType == AddObject)
objects.append(static_cast<MusicObject*>(_objectToAdd));
//code vérifiant les autres conditions...
}
foreach(MusicInput* in, inputs)
{
in->Read();
}
//2 autres foreach pour les objets et les sorties
}
inputs.clear(); objects.clear(); outputs.clear();
}
private:
//attributs...
}; |