@@ -58,6 +58,7 @@ namespace
5858 PipewireImage (*_getFramePipewire)() = nullptr ;
5959 void (*_releaseFramePipewire)() = nullptr ;
6060 const char * (*_getPipewireToken)() = nullptr ;
61+ bool (*_isRestartNeeded)() = nullptr ;
6162}
6263
6364PipewireGrabber::PipewireGrabber (const QString& device, const QString& configurationPath)
@@ -91,11 +92,13 @@ PipewireGrabber::PipewireGrabber(const QString& device, const QString& configura
9192 _uninitPipewireDisplay = (void (*)()) dlsym (_library, " uninitPipewireDisplay" );
9293 _getFramePipewire = (PipewireImage (*)()) dlsym (_library, " getFramePipewire" );
9394 _releaseFramePipewire = (void (*)()) dlsym (_library, " releaseFramePipewire" );
95+ _isRestartNeeded = (bool (*)()) dlsym (_library, " isRestartNeeded" );
9496 }
9597 else
9698 Warning (_log, " Could not load Pipewire proxy library. Error: {:s}" , dlerror ());
9799
98- if (_library && (_getPipewireToken == nullptr || _hasPipewire == nullptr || _releaseFramePipewire == nullptr || _initPipewireDisplay == nullptr || _uninitPipewireDisplay == nullptr || _getFramePipewire == nullptr ))
100+ if (_library && (_getPipewireToken == nullptr || _hasPipewire == nullptr || _releaseFramePipewire == nullptr ||
101+ _initPipewireDisplay == nullptr || _uninitPipewireDisplay == nullptr || _getFramePipewire == nullptr || _isRestartNeeded == nullptr ))
99102 {
100103 Error (_log, " Could not load Pipewire proxy library definition. Error: {:s}" , dlerror ());
101104
@@ -115,14 +118,21 @@ void PipewireGrabber::restart()
115118{
116119 if (!_isActive)
117120 {
118- Info (_log, " Restarting the grabber" );
119- uninit ();
120- QTimer::singleShot (1000 , this , [this ]() {
121- if (_retryTimer->isActive ())
122- {
123- this ->start ();
124- }
125- });
121+ if (_isRestartNeeded ())
122+ {
123+ Info (_log, " Restarting the grabber" );
124+ uninit ();
125+ QTimer::singleShot (1000 , this , [this ]() {
126+ if (_retryTimer->isActive ())
127+ {
128+ this ->start ();
129+ }
130+ });
131+ }
132+ else
133+ {
134+ Info (_log, " The grabber restart is not needed." );
135+ }
126136 _retryTimer->start ();
127137 }
128138 else
0 commit comments