feat(ui/views/App/Settings/SettingsVideo): hide preview when at least on call exists

This commit is contained in:
Ronan Abhamon 2017-04-20 14:26:22 +02:00
parent c6cae4220e
commit 906ec7402b
3 changed files with 33 additions and 8 deletions

View file

@ -51,11 +51,11 @@ CameraPreviewRenderer::CameraPreviewRenderer () {
CameraPreviewRenderer::~CameraPreviewRenderer () {
qInfo() << QStringLiteral("Delete context info:") << mContextInfo;
CoreManager *core = CoreManager::getInstance();
CoreManager *coreManager = CoreManager::getInstance();
core->lockVideoRender();
CoreManager::getInstance()->getCore()->setNativePreviewWindowId(nullptr);
core->unlockVideoRender();
coreManager->lockVideoRender();
coreManager->getCore()->setNativePreviewWindowId(nullptr);
coreManager->unlockVideoRender();
delete mContextInfo;
}
@ -66,10 +66,10 @@ QOpenGLFramebufferObject *CameraPreviewRenderer::createFramebufferObject (const
format.setInternalTextureFormat(GL_RGBA8);
format.setSamples(4);
CoreManager *core = CoreManager::getInstance();
CoreManager *coreManager = CoreManager::getInstance();
// It's not the same thread as render.
core->lockVideoRender();
coreManager->lockVideoRender();
mContextInfo->width = size.width();
mContextInfo->height = size.height();
@ -78,7 +78,7 @@ QOpenGLFramebufferObject *CameraPreviewRenderer::createFramebufferObject (const
updateWindowId();
core->unlockVideoRender();
coreManager->unlockVideoRender();
return new QOpenGLFramebufferObject(size, format);
}
@ -88,7 +88,7 @@ void CameraPreviewRenderer::render () {
{
QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions();
f->glClearColor(0.f, 0.f, 0.f, 0.f);
f->glClearColor(0.f, 0.f, 0.f, 1.f);
f->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
CoreManager *coreManager = CoreManager::getInstance();

View file

@ -2,6 +2,20 @@
// `SettingsVideo.qml` Logic.
// =============================================================================
.import Linphone 1.0 as Linphone
// =============================================================================
function showVideoPreview (account) {
window.attachVirtualWindow(Qt.resolvedUrl('SettingsVideoPreview.qml'))
}
function updateVideoPreview () {
var count = Linphone.CallsListModel.rowCount()
if (count === 0) {
showCameraPreview.enabled = true
} else if (count === 1) {
showCameraPreview.enabled = false
window.detachVirtualWindow()
}
}

View file

@ -108,10 +108,21 @@ TabContainer {
}
TextButtonB {
id: showCameraPreview
anchors.right: parent.right
enabled: CallsListModel.rowCount() === 0
text: qsTr('showCameraPreview')
onClicked: Logic.showVideoPreview()
Connections {
target: CallsListModel
onRowsInserted: Logic.updateVideoPreview()
onRowsRemoved: Logic.updateVideoPreview()
}
}
// -------------------------------------------------------------------------