Hi JD,
This is correct, you should limit your access to RV’s API through the main thread. Qt practices by default Thread Affinity through objects. See this: https://doc.qt.io/qt-5/qobject.html#thread-affinity
To do this properly, you should create an object on the main thread that has a Qt Slot that you can connect to a QObject in your worker thread. By emitting the signal, the Qt event loop will ensure that the slot is called on the thread in which the target object was created. This also keeps RV working within the existing event loop so it doesn’t step on other timing as best as it can.
The network protocol is probably not nearly as clean as just using Qt signals to do that.
Cheers,
-Kessler