Rémi Bernon (@rbernon) commented about dlls/windows.media.playback.backgroundmediaplayer/main.c:
+static HRESULT get_media_player( IMediaPlayer **media_player ) +{ + static const WCHAR *media_player_name = L"Windows.Media.Playback.MediaPlayer"; + IInspectable *inspectable = NULL; + HSTRING str = NULL; + HRESULT hr = WindowsCreateString( media_player_name, wcslen( media_player_name ), &str ); + + if (SUCCEEDED(hr)) hr = RoActivateInstance( str, &inspectable ); + if (SUCCEEDED(hr)) + { + hr = IInspectable_QueryInterface( inspectable, &IID_IMediaPlayer, (void **)media_player ); + IInspectable_Release( inspectable ); + } + + WindowsDeleteString( str ); + return hr;
HRESULT hr;
if (FAILED(hr = WindowsCreateString( media_player_name, wcslen( media_player_name ), &str ))) return hr;
if (SUCCEEDED(hr = RoActivateInstance( str, &inspectable )))
{
hr = IInspectable_QueryInterface( inspectable, &IID_IMediaPlayer, (void **)media_player );
IInspectable_Release( inspectable );
}
WindowsDeleteString( str );
return hr;
Otherwise you'd call WindowsDeleteString even if WindowsCreateString failed (no big deal but still). -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8937#note_115599