Israel,

Maybe the problem is that fact that you call worker initVLC(videoWin) from the 
main thread.

Maybe you could connect a signal to the thread started signal to call initVLC.

Try to debug QThread::currentThread() when initVLC is called and when worker is 
created to see if what I say makes sense.

Best,

Nuno

> On 19 Jul 2021, at 04:29, Israel Brewster <ijbrews...@alaska.edu> wrote:
> 
> Yes, this is a FAQ, but I can’t seem to figure out what I am doing wrong. I 
> am using the worker pattern of QThread, (as opposed to subclassing), running 
> Qt 5.15.2. In my controller’s constructor, I have the following code to 
> initialize a worker:
> 
> worker=new VLCWorker();
> worker->moveToThread(&vlcWorkerThread);
> worker->initVLC(videoWin);
> vlcWorkerThread.start();
> 
> The initVLC function, among other things, creates a timer and connects it to 
> a slot in the worker:
> 
> rtspStartTimer=new QTimer;
> rtspStartTimer->setSingleShot(true);
> connect(rtspStartTimer, &QTimer::timeout,
>       this, &VLCWorker::rtspStarting);
> 
> 
> Later, at some point during program execution, I try to start this timer from 
> a function in the worker (which itself was triggered by a signal from the 
> main thread):
> 
> qDebug()<<"*****Trying to start timer which lives in 
> thread"<<(long)rtspStartTimer->thread()<<" from thread 
> "<<(long)this->thread();
> rtspStartTimer->start(250);
> qDebug()<<"*****Timer attempt complete";
> 
> Unfortunately, this doesn’t work, giving me the following output:
> 
> Debug: 2021-07-18T19:26:12.009 - *****Trying to start timer which lives in 
> thread 140235980165688  from thread  140235980165688 
> (../DoorBellCamC/vlccontroller.cpp:121, void VLCWorker::rtspStarting())
> Warning: 2021-07-18T19:26:12.009 - QObject::startTimer: Timers cannot be 
> started from another thread (:0, )
> Debug: 2021-07-18T19:26:12.009 - *****Timer attempt complete 
> (../DoorBellCamC/vlccontroller.cpp:123, void VLCWorker::rtspStarting())
> 
> So even though the output of the debug confirms that the timer lives in the 
> same thread I am trying to call start from, I still get the error about 
> “timers cannot be started from another thread”. What am I doing wrong?
> ---
> Israel Brewster
> Software Engineer
> Alaska Volcano Observatory 
> Geophysical Institute - UAF 
> 2156 Koyukuk Drive 
> Fairbanks AK 99775-7320
> Work: 907-474-5172
> cell:  907-328-9145
> 
> _______________________________________________
> Interest mailing list
> Interest@qt-project.org
> https://lists.qt-project.org/listinfo/interest

_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to