From d2afa8fd66e371fa44213be19499b91a24cd6d63 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 28 Dec 2025 21:51:28 +0000 Subject: [PATCH] Fix STA thread blocking crash on album art loading Replace async GetFileFromPathAsync().get() with synchronous CreateFromUri() to avoid blocking STA thread. This prevents the "sta thread blocking wait" assertion failure. Co-authored-by: jonaski <10343810+jonaski@users.noreply.github.com> --- src/core/windowsmediacontroller.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/core/windowsmediacontroller.cpp b/src/core/windowsmediacontroller.cpp index f8c102293..b655725ea 100644 --- a/src/core/windowsmediacontroller.cpp +++ b/src/core/windowsmediacontroller.cpp @@ -50,6 +50,7 @@ #include "covermanager/albumcoverloaderresult.h" using namespace winrt; +using namespace Windows::Foundation; using namespace Windows::Media; using namespace Windows::Storage; using namespace Windows::Storage::Streams; @@ -279,8 +280,10 @@ void WindowsMediaController::UpdateMetadata(const Song &song, const QUrl &art_ur QString artPath = art_url.toLocalFile(); if (!artPath.isEmpty()) { try { - auto thumbnailStream = RandomAccessStreamReference::CreateFromFile( - StorageFile::GetFileFromPathAsync(winrt::hstring(artPath.toStdWString())).get() + // Use file:// URI to avoid async blocking in STA thread + QString fileUri = QUrl::fromLocalFile(artPath).toString(); + auto thumbnailStream = RandomAccessStreamReference::CreateFromUri( + winrt::Windows::Foundation::Uri(winrt::hstring(fileUri.toStdWString())) ); updater.Thumbnail(thumbnailStream); current_song_art_url_ = artPath;