Optimize some atomic counters
Define the static QAtomic at file scope to avoid GCC's pessimisation with function-static QAtomic (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79561), and make sure the initial value is 0, so it ends up in BSS, not TEXT. In QRhi..., don't create a static instance of the wrapper class, use a file- static atomic, too. This turns the class into a glorified namespace. Change-Id: I707f628e2b434330028077223071716d5704ba32 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
6fa34930c2
commit
8da3eea4fb
@ -5192,10 +5192,11 @@ int QRhi::ubufAlignment() const
|
||||
return d->ubufAlignment();
|
||||
}
|
||||
|
||||
static QBasicAtomicInteger<QRhiGlobalObjectIdGenerator::Type> counter = Q_BASIC_ATOMIC_INITIALIZER(0);
|
||||
|
||||
QRhiGlobalObjectIdGenerator::Type QRhiGlobalObjectIdGenerator::newId()
|
||||
{
|
||||
static QRhiGlobalObjectIdGenerator inst;
|
||||
return ++inst.counter;
|
||||
return counter.fetchAndAddRelaxed(1) + 1;
|
||||
}
|
||||
|
||||
bool QRhiPassResourceTracker::isEmpty() const
|
||||
|
@ -52,7 +52,6 @@
|
||||
#include "qrhiprofiler_p_p.h"
|
||||
#include <QBitArray>
|
||||
#include <QAtomicInt>
|
||||
#include <QAtomicInteger>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@ -484,9 +483,6 @@ public:
|
||||
using Type = quint32;
|
||||
#endif
|
||||
static Type newId();
|
||||
|
||||
private:
|
||||
QAtomicInteger<Type> counter;
|
||||
};
|
||||
|
||||
class QRhiPassResourceTracker
|
||||
|
@ -2799,12 +2799,12 @@ void QFontCache::cleanup()
|
||||
cache->setLocalData(0);
|
||||
}
|
||||
|
||||
QBasicAtomicInt font_cache_id = Q_BASIC_ATOMIC_INITIALIZER(1);
|
||||
static QBasicAtomicInt font_cache_id = Q_BASIC_ATOMIC_INITIALIZER(0);
|
||||
|
||||
QFontCache::QFontCache()
|
||||
: QObject(), total_cost(0), max_cost(min_cost),
|
||||
current_timestamp(0), fast(false), timer_id(-1),
|
||||
m_id(font_cache_id.fetchAndAddRelaxed(1))
|
||||
m_id(font_cache_id.fetchAndAddRelaxed(1) + 1)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -45,11 +45,12 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
static QBasicAtomicInt winIdGenerator = Q_BASIC_ATOMIC_INITIALIZER(0);
|
||||
|
||||
QFbWindow::QFbWindow(QWindow *window)
|
||||
: QPlatformWindow(window), mBackingStore(0), mWindowState(Qt::WindowNoState)
|
||||
{
|
||||
static QAtomicInt winIdGenerator(1);
|
||||
mWindowId = winIdGenerator.fetchAndAddRelaxed(1);
|
||||
mWindowId = winIdGenerator.fetchAndAddRelaxed(1) + 1;
|
||||
}
|
||||
|
||||
QFbWindow::~QFbWindow()
|
||||
|
@ -49,13 +49,14 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
static QBasicAtomicInt winIdGenerator = Q_BASIC_ATOMIC_INITIALIZER(0);
|
||||
|
||||
QAndroidPlatformWindow::QAndroidPlatformWindow(QWindow *window)
|
||||
: QPlatformWindow(window)
|
||||
{
|
||||
m_windowFlags = Qt::Widget;
|
||||
m_windowState = Qt::WindowNoState;
|
||||
static QAtomicInt winIdGenerator(1);
|
||||
m_windowId = winIdGenerator.fetchAndAddRelaxed(1);
|
||||
m_windowId = winIdGenerator.fetchAndAddRelaxed(1) + 1;
|
||||
setWindowState(window->windowStates());
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user