Please correct me if I'm wrong but I think this wouldn't happen using a QSharedPointer. Passing the SharedPointer by value will increase the reference counter, then if the SharedPointer goes out of scope in the main thread it won't be deleted until the copy of the SharedPointer in the engine thread goes out of scope.
Also just to make sure I get it right. Is the receiver being deleted or the QObject that was send to the receiver?
Please correct me if I'm wrong but I think this wouldn't happen using a QSharedPointer. Passing the SharedPointer by value will increase the reference counter, then if the SharedPointer goes out of scope in the main thread it won't be deleted until the copy of the SharedPointer in the engine thread goes out of scope.
Also just to make sure I get it right. Is the receiver being deleted or the QObject that was send to the receiver?