>>> Like every QObject class, unless noted otherwise, you may not call methods >>> on the object from outside the object's thread of affinity (the one it >>> was created in or moved to with moveToThread). Your code is abusing the >>> API in both cases if you're using the API from another thread. >> >> To be clear: I'm not initting any Qt objects in the constructor, that all >> happens inside the run() function, in the i_auP->Start(&i_outP); call. > > That's not clear from your code: > QAudioOutput *audioOutput(auP->i_qGeneratorP->i_qOutputP.get()); > > The CAudioUnit class is not defined anywhere in your code.
that class is NOT a QObject, it's my own class, which does not care about thread affinity >> Specifically: both i_qGeneratorP and i_qOutputP are allocated there. I think >> they're the only Qt objects use within the new thread? > > If you say so, but I can't confirm that you've done the right thing since I > can't see those classes they are both QObjects, and are allocated with "new" during i_auP->Start() > Note that you do initialise the i_auP pointer in your constructor's > initialisation list which is not a QObject, it's my own wrapper class > You call this GetCUnit_Out() function in both threads. I can't tell what this > function is doing, I don't know what i_qGeneratorP is it's a QObject, specifically a QIODevice > and what thread its i_qOutputP pointer is filled in. as i said, i_qOutputP is new'd during i_auP->Start(), and is of type QAudioOutput > PS: if you're using Hungarian notation, doesn't the "i" prefix indicate > "integer"? no. 25 years ago, we use "i_" to indicate "instance (member) variables" in the "THINK Class Library" i've had that habit ever since > Why are you using it for pointers? cuz it's an instance variable of a pointer > Perhaps you're too young for proper Hungarian writing :-) lol, i wonder if i'm older than you :) :) _______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest