Skip to content
Snippets Groups Projects
Commit d7b85468 authored by Alexandre Lision's avatar Alexandre Lision
Browse files

video: disconnect preview

lambda registered for frameUpdated was still alive after closing the window.
It was consuming frames, preventing the call to get them.
It's a limitation of our implementetation: there is only one possible receiver
of frameUpdated for a given renderer.

Tuleap: #130
Change-Id: Ic8f5b8efea60e3409c77e4510320e3eba11fe21d
parent 0e66aea4
No related branches found
No related tags found
No related merge requests found
...@@ -99,17 +99,12 @@ QMetaObject::Connection previewStopped; ...@@ -99,17 +99,12 @@ QMetaObject::Connection previewStopped;
} }
// check if preview has to be started/stopped by this controller
self.shouldHandlePreview = !Video::PreviewManager::instance().isPreviewing();
[previewView setWantsLayer:YES]; [previewView setWantsLayer:YES];
[previewView setLayer:[CALayer layer]]; [previewView setLayer:[CALayer layer]];
[previewView.layer setBackgroundColor:[NSColor blackColor].CGColor]; [previewView.layer setBackgroundColor:[NSColor blackColor].CGColor];
[previewView.layer setContentsGravity:kCAGravityResizeAspect]; [previewView.layer setContentsGravity:kCAGravityResizeAspect];
[previewView.layer setFrame:previewView.frame]; [previewView.layer setFrame:previewView.frame];
[previewView.layer setBounds:previewView.frame]; [previewView.layer setBounds:previewView.frame];
[self connectPreviewSignals];
} }
- (IBAction)chooseDevice:(id)sender { - (IBAction)chooseDevice:(id)sender {
...@@ -135,6 +130,7 @@ QMetaObject::Connection previewStopped; ...@@ -135,6 +130,7 @@ QMetaObject::Connection previewStopped;
QObject::disconnect(frameUpdated); QObject::disconnect(frameUpdated);
QObject::disconnect(previewStopped); QObject::disconnect(previewStopped);
QObject::disconnect(previewStarted); QObject::disconnect(previewStarted);
previewStarted = QObject::connect(&Video::PreviewManager::instance(), previewStarted = QObject::connect(&Video::PreviewManager::instance(),
&Video::PreviewManager::previewStarted, &Video::PreviewManager::previewStarted,
[=](Video::Renderer* renderer) { [=](Video::Renderer* renderer) {
...@@ -197,6 +193,10 @@ QMetaObject::Connection previewStopped; ...@@ -197,6 +193,10 @@ QMetaObject::Connection previewStopped;
- (void) viewWillAppear - (void) viewWillAppear
{ {
// check if preview has to be started/stopped by this controller
self.shouldHandlePreview = !Video::PreviewManager::instance().previewRenderer()->isRendering();
[self connectPreviewSignals];
if (self.shouldHandlePreview) { if (self.shouldHandlePreview) {
Video::PreviewManager::instance().startPreview(); Video::PreviewManager::instance().startPreview();
} }
...@@ -204,6 +204,9 @@ QMetaObject::Connection previewStopped; ...@@ -204,6 +204,9 @@ QMetaObject::Connection previewStopped;
- (void)viewWillDisappear - (void)viewWillDisappear
{ {
QObject::disconnect(frameUpdated);
QObject::disconnect(previewStopped);
QObject::disconnect(previewStarted);
if (self.shouldHandlePreview) { if (self.shouldHandlePreview) {
Video::PreviewManager::instance().stopPreview(); Video::PreviewManager::instance().stopPreview();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment