mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 11:28:07 +00:00
Fix null access in fullscreen.
Add a FPS monitor for debug. Fix infinite loop on rendering frames : ForceRefresh when miniViewArea changes its height, on not the list view.
This commit is contained in:
parent
98f11b56e2
commit
c3daf71f7d
6 changed files with 42 additions and 15 deletions
|
|
@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file.
|
|||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
|
||||
## 5.1.2 - 2023-08-25
|
||||
|
||||
### Fixed
|
||||
- Mac Freeze on Active Speaker.
|
||||
- Apply Accessibility workaround on all systems.
|
||||
- Null access on QML object while being in fullscreen.
|
||||
|
||||
## 5.1.1 - 2023-08-24
|
||||
|
||||
### Fixed
|
||||
|
|
|
|||
|
|
@ -336,6 +336,7 @@ void App::processArguments(QHash<QString,QString> args){
|
|||
}
|
||||
|
||||
static QQuickWindow *createSubWindow (QQmlApplicationEngine *engine, const char *path) {
|
||||
QString qPath(path);
|
||||
qInfo() << QStringLiteral("Creating subwindow: `%1`.").arg(path);
|
||||
|
||||
QQmlComponent component(engine, QUrl(path));
|
||||
|
|
@ -351,7 +352,23 @@ static QQuickWindow *createSubWindow (QQmlApplicationEngine *engine, const char
|
|||
QQmlEngine::setObjectOwnership(object, QQmlEngine::CppOwnership);
|
||||
object->setParent(engine);
|
||||
|
||||
return qobject_cast<QQuickWindow *>(object);
|
||||
|
||||
int totalDuration = 0;
|
||||
int loops = 0;
|
||||
QElapsedTimer timer;
|
||||
timer.start();
|
||||
auto window = qobject_cast<QQuickWindow *>(object);
|
||||
QObject::connect(window, &QQuickWindow::beforeRendering, [totalDuration, loops, timer, path]() mutable{
|
||||
totalDuration += timer.elapsed();
|
||||
++loops;
|
||||
if (totalDuration > 10*1000) {
|
||||
qDebug() << path << " : " << (1000.0 * loops) / totalDuration << "fps";
|
||||
totalDuration = 0;
|
||||
loops = 0;
|
||||
}
|
||||
timer.restart();
|
||||
});
|
||||
return window;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -37,8 +37,8 @@ FILE * gStream = NULL;
|
|||
#include "components/vfs/VfsUtils.hpp"
|
||||
#endif
|
||||
|
||||
#if _WIN32 && QT_VERSION < QT_VERSION_CHECK(5, 15, 10)
|
||||
// From 5.15.2 to 5.15.10, Accessibility freeze the application on Windows: Deactivate handlers.
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 10)
|
||||
// From 5.15.2 to 5.15.10, sometimes, Accessibility freeze the application : Deactivate handlers.
|
||||
#define ACCESSBILITY_WORKAROUND
|
||||
#include <QAccessibleEvent>
|
||||
#include <QAccessible>
|
||||
|
|
|
|||
|
|
@ -451,7 +451,7 @@ Rectangle {
|
|||
iconIsCustom: ! (callModel.isSecured)
|
||||
backgroundRadius: width/2
|
||||
|
||||
colorSet: callModel.encryption === CallModel.CallEncryptionNone
|
||||
colorSet: !callModel || callModel.encryption === CallModel.CallEncryptionNone
|
||||
? IncallStyle.buttons.unsecure
|
||||
: callModel.isSecured
|
||||
? SettingsModel.isPostQuantumAvailable && callModel.encryption === CallModel.CallEncryptionZrtp && callModel.isPQZrtp == CallModel.CallPQStateOn
|
||||
|
|
@ -462,7 +462,7 @@ Rectangle {
|
|||
window.attachVirtualWindow(Utils.buildLinphoneDialogUri('ZrtpTokenAuthenticationDialog'), {call:callModel})
|
||||
}
|
||||
|
||||
tooltipText: Logic.makeReadableSecuredString(callModel.encryption !== CallModel.CallEncryptionNone, callModel.securedString)
|
||||
tooltipText: callModel ? Logic.makeReadableSecuredString(callModel.encryption !== CallModel.CallEncryptionNone, callModel.securedString) : ''
|
||||
}
|
||||
RowLayout{
|
||||
visible: callModel.remoteRecording
|
||||
|
|
|
|||
|
|
@ -129,6 +129,7 @@ Item {
|
|||
onRequestResetPosition: resetPosition()
|
||||
}
|
||||
}
|
||||
|
||||
Item{
|
||||
id: miniViewArea
|
||||
anchors.right: parent.right
|
||||
|
|
@ -140,6 +141,12 @@ Item {
|
|||
//---------------
|
||||
width: 16 * miniViews.cellHeight / 9
|
||||
visible: mainItem.isConferenceReady || !mainItem.isConference
|
||||
property int heightLeft: parent.height - preview.height
|
||||
onHeightLeftChanged: {Qt.callLater(miniViewArea.forceRefresh)}
|
||||
function forceRefresh(){// Force a content refresh via margins. Qt is buggy when managing sizes in ListView.
|
||||
++miniViewArea.anchors.topMargin
|
||||
--miniViewArea.anchors.topMargin
|
||||
}
|
||||
|
||||
ScrollableListView{
|
||||
id: miniViews
|
||||
|
|
@ -150,13 +157,8 @@ Item {
|
|||
verticalLayoutDirection: ListView.BottomToTop
|
||||
fitCacheToContent: false
|
||||
property int oldCount : 0// Count changed can be called without a change... (bug?). Use oldCount to avoid it.
|
||||
onCountChanged: {if(oldCount != count){ oldCount = count ; Qt.callLater(forceRefresh)}}
|
||||
onHeightChanged: Qt.callLater(forceRefresh)
|
||||
function forceRefresh(){// Force a content refresh via margins. Qt is buggy when managing sizes in ListView.
|
||||
++miniViewArea.anchors.topMargin
|
||||
--miniViewArea.anchors.topMargin
|
||||
}
|
||||
Component.onCompleted: {Qt.callLater(forceRefresh)}
|
||||
onCountChanged: {if(oldCount != count){ oldCount = count ; Qt.callLater(miniViewArea.forceRefresh)}}
|
||||
Component.onCompleted: {Qt.callLater(miniViewArea.forceRefresh)}
|
||||
delegate:Item{
|
||||
height: visible ? miniViews.cellHeight + 15 : 0
|
||||
width: visible ? miniViews.width : 0
|
||||
|
|
|
|||
|
|
@ -401,7 +401,7 @@ Window {
|
|||
iconIsCustom: ! (conference.isSecured && SettingsModel.isPostQuantumAvailable && callModel.encryption === CallModel.CallEncryptionZrtp)
|
||||
backgroundRadius: width/2
|
||||
|
||||
colorSet: callModel.encryption === CallModel.CallEncryptionNone
|
||||
colorSet: !callModel || callModel.encryption === CallModel.CallEncryptionNone
|
||||
? IncallStyle.buttons.unsecure
|
||||
: callModel.isSecured
|
||||
? SettingsModel.isPostQuantumAvailable && callModel.encryption === CallModel.CallEncryptionZrtp && callModel.isPQZrtp == CallModel.CallPQStateOn
|
||||
|
|
@ -413,7 +413,7 @@ Window {
|
|||
window.attachVirtualWindow(Utils.buildLinphoneDialogUri('ZrtpTokenAuthenticationDialog'), {call:callModel})
|
||||
}
|
||||
|
||||
tooltipText: Logic.makeReadableSecuredString(callModel.encryption !== CallModel.CallEncryptionNone, callModel ? callModel.securedString : '')
|
||||
tooltipText: callModel ? Logic.makeReadableSecuredString(callModel.encryption !== CallModel.CallEncryptionNone, callModel.securedString) : ''
|
||||
}
|
||||
RowLayout{
|
||||
visible: callModel && callModel.remoteRecording
|
||||
|
|
@ -485,7 +485,7 @@ Window {
|
|||
interval: 50
|
||||
repeat: true
|
||||
running: parent.enabled
|
||||
onTriggered: parent.value = callModel.speakerVu
|
||||
onTriggered: if(callModel) parent.value = callModel.speakerVu
|
||||
}
|
||||
}
|
||||
ActionSwitch {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue