From 2d5ed0c4268988ba928e1d9a916f049ad8928968 Mon Sep 17 00:00:00 2001 From: Aleix Pol Gonzalez Date: Mon, 30 Sep 2024 14:23:38 +0200 Subject: [PATCH] Avoid calling QHash::contains and then looking up the value Fetch value and if present use it. Signed-off-by: Victoria Fischer --- src/backends/drm/drm_egl_layer_surface.cpp | 3 ++- src/core/outputlayer.cpp | 4 ++-- src/effect/quickeffect.cpp | 6 +++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/backends/drm/drm_egl_layer_surface.cpp b/src/backends/drm/drm_egl_layer_surface.cpp index 2ff0edfdab..e10b75519a 100644 --- a/src/backends/drm/drm_egl_layer_surface.cpp +++ b/src/backends/drm/drm_egl_layer_surface.cpp @@ -340,7 +340,8 @@ bool EglGbmLayerSurface::doesSurfaceFit(Surface *surface, const QSize &size, con return formats.contains(surface->importDumbSwapchain->format()); case MultiGpuImportMode::Egl: { const auto format = surface->importGbmSwapchain->format(); - return formats.contains(format) && (surface->importGbmSwapchain->modifier() == DRM_FORMAT_MOD_INVALID || formats[format].contains(surface->importGbmSwapchain->modifier())); + const auto it = formats.find(format); + return it != formats.end() && (surface->importGbmSwapchain->modifier() == DRM_FORMAT_MOD_INVALID || it->contains(surface->importGbmSwapchain->modifier())); } } Q_UNREACHABLE(); diff --git a/src/core/outputlayer.cpp b/src/core/outputlayer.cpp index 90aeb615df..17198ea65f 100644 --- a/src/core/outputlayer.cpp +++ b/src/core/outputlayer.cpp @@ -79,12 +79,12 @@ bool OutputLayer::importScanoutBuffer(SurfaceItem *surfaceItem, const std::share return false; } const auto formats = supportedDrmFormats(); - if (!formats.contains(attrs->format) || !formats[attrs->format].contains(attrs->modifier)) { + if (auto it = formats.find(attrs->format); it != formats.end() && !it->contains(attrs->modifier)) { if (m_scanoutCandidate && m_scanoutCandidate != surfaceItem) { m_scanoutCandidate->setScanoutHint(nullptr, {}); } m_scanoutCandidate = surfaceItem; - surfaceItem->setScanoutHint(scanoutDevice(), supportedDrmFormats()); + surfaceItem->setScanoutHint(scanoutDevice(), formats); return false; } m_sourceRect = surfaceItem->bufferSourceBox(); diff --git a/src/effect/quickeffect.cpp b/src/effect/quickeffect.cpp index 1ea6fd2567..03a2e3a0a3 100644 --- a/src/effect/quickeffect.cpp +++ b/src/effect/quickeffect.cpp @@ -76,12 +76,12 @@ public: bool QuickSceneEffectPrivate::isItemOnScreen(QQuickItem *item, Output *screen) const { - if (!item || !screen || !views.contains(screen)) { + if (!item || !screen) { return false; } - const auto &view = views.at(screen); - return item->window() == view->window(); + const auto it = views.find(screen); + return it != views.end() && item->window() == it->second->window(); } QuickSceneView::QuickSceneView(QuickSceneEffect *effect, Output *screen)