From a21f2f8be378a1e700dc2190c71d1a424fe1e578 Mon Sep 17 00:00:00 2001 From: ownedbywuigi Date: Fri, 3 Apr 2026 10:32:27 +0100 Subject: [PATCH] Fix bug in Windows SMTC --- application/basilisk/base/content/browser.js | 2 ++ widget/nsIWindowsUIUtils.idl | 6 +++++ widget/windows/WindowsUIUtils.cpp | 28 ++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/application/basilisk/base/content/browser.js b/application/basilisk/base/content/browser.js index 0769d286ad..ecba86b1c9 100644 --- a/application/basilisk/base/content/browser.js +++ b/application/basilisk/base/content/browser.js @@ -1869,6 +1869,8 @@ function updateWindowsSMTCMetadataFromTab(aTab, aPlaying) { uiUtils.setSMTCMetadata(title, artist, album); if (thumbnailURL) { uiUtils.setSMTCThumbnailURL(thumbnailURL); + } else { + uiUtils.clearSMTCThumbnail(); } uiUtils.setSMTCPlaybackState(!!aPlaying); gLastSMTCMediaTab = tab; diff --git a/widget/nsIWindowsUIUtils.idl b/widget/nsIWindowsUIUtils.idl index 9cfb405d11..84c837d41f 100644 --- a/widget/nsIWindowsUIUtils.idl +++ b/widget/nsIWindowsUIUtils.idl @@ -41,6 +41,12 @@ interface nsIWindowsUIUtils : nsISupports */ void setSMTCThumbnailURL(in AString aThumbnailURL); + /** + * Clear native Windows System Media Transport Controls artwork. + * No-op on unsupported Windows versions. + */ + void clearSMTCThumbnail(); + /** * Clear native Windows System Media Transport Controls metadata. * No-op on unsupported Windows versions. diff --git a/widget/windows/WindowsUIUtils.cpp b/widget/windows/WindowsUIUtils.cpp index 78ac39b93c..ea406e9b87 100644 --- a/widget/windows/WindowsUIUtils.cpp +++ b/widget/windows/WindowsUIUtils.cpp @@ -494,6 +494,34 @@ WindowsUIUtils::SetSMTCThumbnailURL(const nsAString& aThumbnailURL) return NS_OK; } +NS_IMETHODIMP +WindowsUIUtils::ClearSMTCThumbnail() +{ +#ifndef __MINGW32__ + if (!IsWin10OrLater()) { + return NS_OK; + } + + nsresult rv = EnsureSMTC(); + if (NS_FAILED(rv)) { + return NS_OK; + } + if (!gSMTC) { + return NS_OK; + } + + ComPtr updater; + HRESULT hr = gSMTC->get_DisplayUpdater(&updater); + if (FAILED(hr) || !updater) { + return NS_OK; + } + + updater->put_Thumbnail(nullptr); + updater->Update(); +#endif + return NS_OK; +} + NS_IMETHODIMP WindowsUIUtils::ClearSMTCMetadata() {