UI: Use std::shared_ptr instead of QSharedPointer

Also use std::weak_ptr instead of QWeakPointer as needed.

Qt has been porting QSharedPointer and QWeakPointer to std::shared_ptr
and std::weak_ptr respectively. QSharedPointer is apparently 2x slower
than std::shared_ptr.

References:
 * https://bugreports.qt.io/browse/QTBUG-109570
 * https://codereview.qt-project.org/c/qt/qtbase/+/359678
 * https://codereview.qt-project.org/c/qt/qtgrpc/+/447780
 * https://codereview.qt-project.org/c/qt/qtbase/+/450134
 * https://codereview.qt-project.org/c/qt/qttools/+/450776
 * https://codereview.qt-project.org/c/qt/qttools/+/450777
 * https://codereview.qt-project.org/q/QSharedPointer
This commit is contained in:
Ryan Foster
2023-10-04 18:36:20 -04:00
parent 3d05d681b7
commit 02478d4939
5 changed files with 12 additions and 13 deletions
+3 -3
View File
@@ -23,7 +23,7 @@ using namespace std;
// Padding on top and bottom of vertical meters
#define METER_PADDING 1
QWeakPointer<VolumeMeterTimer> VolumeMeter::updateTimer;
std::weak_ptr<VolumeMeterTimer> VolumeMeter::updateTimer;
static inline Qt::CheckState GetCheckState(bool muted, bool unassigned)
{
@@ -870,9 +870,9 @@ VolumeMeter::VolumeMeter(QWidget *parent, obs_volmeter_t *obs_volmeter,
channels = (int)audio_output_get_channels(obs_get_audio());
doLayout();
updateTimerRef = updateTimer.toStrongRef();
updateTimerRef = updateTimer.lock();
if (!updateTimerRef) {
updateTimerRef = QSharedPointer<VolumeMeterTimer>::create();
updateTimerRef = std::make_shared<VolumeMeterTimer>();
updateTimerRef->setTimerType(Qt::PreciseTimer);
updateTimerRef->start(16);
updateTimer = updateTimerRef;