From a3def2869da8ad9c17d44005c0d1fd70a903f855 Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Thu, 25 Feb 2016 12:41:35 +0300 Subject: QtGui: de-duplicate calls and cache results Change-Id: Iaf232c31d6780b49dc6a3d0faafb9717f3c36e65 Reviewed-by: Marc Mutz Reviewed-by: Lars Knoll Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/gui/kernel/qhighdpiscaling_p.h | 6 ++++-- src/gui/kernel/qopenglwindow.cpp | 5 +++-- src/gui/kernel/qplatformwindow.cpp | 5 +++-- src/gui/kernel/qrasterwindow.cpp | 5 +++-- src/gui/kernel/qwindow.cpp | 4 ++-- src/gui/text/qzip.cpp | 9 +++++---- src/gui/util/qdesktopservices.cpp | 8 ++++---- 7 files changed, 24 insertions(+), 18 deletions(-) (limited to 'src/gui') diff --git a/src/gui/kernel/qhighdpiscaling_p.h b/src/gui/kernel/qhighdpiscaling_p.h index 364dfaeaee..eb3a9d5545 100644 --- a/src/gui/kernel/qhighdpiscaling_p.h +++ b/src/gui/kernel/qhighdpiscaling_p.h @@ -474,8 +474,9 @@ QVector fromNativePixels(const QVector &pixelValues, const QWindow *window QVector pointValues; pointValues.reserve(pixelValues.size()); + const auto factor = QHighDpiScaling::factor(window); for (const T &pixelValue : pixelValues) - pointValues.append(pixelValue / QHighDpiScaling::factor(window)); + pointValues.append(pixelValue / factor); return pointValues; } @@ -488,8 +489,9 @@ QVector toNativePixels(const QVector &pointValues, const QWindow *window) QVector pixelValues; pixelValues.reserve(pointValues.size()); + const auto factor = QHighDpiScaling::factor(window); for (const T &pointValue : pointValues) - pixelValues.append(pointValue * QHighDpiScaling::factor(window)); + pixelValues.append(pointValue * factor); return pixelValues; } diff --git a/src/gui/kernel/qopenglwindow.cpp b/src/gui/kernel/qopenglwindow.cpp index 37db608430..8ab5c08442 100644 --- a/src/gui/kernel/qopenglwindow.cpp +++ b/src/gui/kernel/qopenglwindow.cpp @@ -252,9 +252,10 @@ void QOpenGLWindowPrivate::beginPaint(const QRegion ®ion) if (!fbo || fbo->size() != deviceSize) { QOpenGLFramebufferObjectFormat fboFormat; fboFormat.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil); - if (q->requestedFormat().samples() > 0) { + const int samples = q->requestedFormat().samples(); + if (samples > 0) { if (updateBehavior != QOpenGLWindow::PartialUpdateBlend) - fboFormat.setSamples(q->requestedFormat().samples()); + fboFormat.setSamples(samples); else qWarning("QOpenGLWindow: PartialUpdateBlend does not support multisampling"); } diff --git a/src/gui/kernel/qplatformwindow.cpp b/src/gui/kernel/qplatformwindow.cpp index 347d02d616..e45a1d61ba 100644 --- a/src/gui/kernel/qplatformwindow.cpp +++ b/src/gui/kernel/qplatformwindow.cpp @@ -499,9 +499,10 @@ QPlatformScreen *QPlatformWindow::screenForGeometry(const QRect &newGeometry) co if (!parent() && currentScreen && !currentScreen->geometry().contains(center)) { const auto screens = currentScreen->virtualSiblings(); for (QPlatformScreen *screen : screens) { - if (screen->geometry().contains(center)) + const QRect screenGeometry = screen->geometry(); + if (screenGeometry.contains(center)) return screen; - if (screen->geometry().intersects(newGeometry)) + if (screenGeometry.intersects(newGeometry)) fallback = screen; } } diff --git a/src/gui/kernel/qrasterwindow.cpp b/src/gui/kernel/qrasterwindow.cpp index 947f2bb6a8..d8d448249e 100644 --- a/src/gui/kernel/qrasterwindow.cpp +++ b/src/gui/kernel/qrasterwindow.cpp @@ -73,8 +73,9 @@ public: void beginPaint(const QRegion ®ion) Q_DECL_OVERRIDE { Q_Q(QRasterWindow); - if (backingstore->size() != q->size()) { - backingstore->resize(q->size()); + const QSize size = q->size(); + if (backingstore->size() != size) { + backingstore->resize(size); markWindowAsDirty(); } backingstore->beginPaint(region); diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index 3f430be579..107ea73a56 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -1469,9 +1469,9 @@ void QWindow::setGeometry(const QRect &rect) { Q_D(QWindow); d->positionAutomatic = false; - if (rect == geometry()) + const QRect oldRect = geometry(); + if (rect == oldRect) return; - QRect oldRect = geometry(); d->positionPolicy = QWindowPrivate::WindowFrameExclusive; if (d->platformWindow) { diff --git a/src/gui/text/qzip.cpp b/src/gui/text/qzip.cpp index e42c268493..5178f5a9a8 100644 --- a/src/gui/text/qzip.cpp +++ b/src/gui/text/qzip.cpp @@ -824,14 +824,15 @@ QZipReader::QZipReader(const QString &archive, QIODevice::OpenMode mode) QScopedPointer f(new QFile(archive)); f->open(mode); QZipReader::Status status; - if (f->error() == QFile::NoError) + const QFileDevice::FileError error = f->error(); + if (error == QFile::NoError) status = NoError; else { - if (f->error() == QFile::ReadError) + if (error == QFile::ReadError) status = FileReadError; - else if (f->error() == QFile::OpenError) + else if (error == QFile::OpenError) status = FileOpenError; - else if (f->error() == QFile::PermissionsError) + else if (error == QFile::PermissionsError) status = FilePermissionsError; else status = FileError; diff --git a/src/gui/util/qdesktopservices.cpp b/src/gui/util/qdesktopservices.cpp index 1cfea8634a..085c073bb1 100644 --- a/src/gui/util/qdesktopservices.cpp +++ b/src/gui/util/qdesktopservices.cpp @@ -328,17 +328,17 @@ QString QDesktopServices::storageLocationImpl(QStandardPaths::StandardLocation t // * Unix data location is under the "data/" subdirectory const QString compatAppName = qt_applicationName_noFallback(); const QString baseDir = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation); + const QString organizationName = QCoreApplication::organizationName(); #if defined(Q_OS_WIN) || defined(Q_OS_MAC) QString result = baseDir; - if (!QCoreApplication::organizationName().isEmpty()) - result += QLatin1Char('/') + QCoreApplication::organizationName(); + if (!organizationName.isEmpty()) + result += QLatin1Char('/') + organizationName; if (!compatAppName.isEmpty()) result += QLatin1Char('/') + compatAppName; return result; #elif defined(Q_OS_UNIX) return baseDir + QLatin1String("/data/") - + QCoreApplication::organizationName() + QLatin1Char('/') - + compatAppName; + + organizationName + QLatin1Char('/') + compatAppName; #endif } return QStandardPaths::writableLocation(type); -- cgit v1.2.3