diff --git a/src/util/StreamerMode.cpp b/src/util/StreamerMode.cpp index 599b5b832..001e8f36b 100644 --- a/src/util/StreamerMode.cpp +++ b/src/util/StreamerMode.cpp @@ -10,6 +10,8 @@ namespace chatterino { +constexpr int cooldownInS = 10; + const QStringList &broadcastingBinaries() { #ifdef USEWINSDK @@ -25,6 +27,17 @@ bool isInStreamerMode() #ifdef USEWINSDK if (IsWindowsVistaOrGreater()) { + static bool cache = false; + static QDateTime time = QDateTime(); + + if (time.isValid() && + time.addSecs(cooldownInS) > QDateTime::currentDateTime()) + { + return cache; + } + + time = QDateTime::currentDateTime(); + WTS_PROCESS_INFO *pWPIs = nullptr; DWORD dwProcCount = 0; @@ -38,12 +51,17 @@ bool isInStreamerMode() reinterpret_cast(pWPIs[i].pProcessName)); if (broadcastingBinaries().contains(processName)) + { + cache = true; return true; + } } } if (pWPIs) WTSFreeMemory(pWPIs); + + cache = false; } #endif diff --git a/src/widgets/helper/ChannelView.cpp b/src/widgets/helper/ChannelView.cpp index 2253547b2..ba7168e3b 100644 --- a/src/widgets/helper/ChannelView.cpp +++ b/src/widgets/helper/ChannelView.cpp @@ -34,6 +34,7 @@ #include "util/Clipboard.hpp" #include "util/DistanceBetweenPoints.hpp" #include "util/IncognitoBrowser.hpp" +#include "util/StreamerMode.hpp" #include "util/Twitch.hpp" #include "widgets/Scrollbar.hpp" #include "widgets/TooltipWidget.hpp" @@ -1315,7 +1316,7 @@ void ChannelView::mouseMoveEvent(QMouseEvent *event) { auto element = &hoverLayoutElement->getCreator(); auto thumbnailSize = getSettings()->thumbnailSize; - if (thumbnailSize == 0) + if (thumbnailSize == 0 || isInStreamerMode()) { tooltipPreviewImage.setImage(nullptr); }