[Bug 44399] WickrMe 4.19.7: Crashes due to stub combase.RoGetActivationFactory

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Jan 26 08:52:30 CST 2018


https://bugs.winehq.org/show_bug.cgi?id=44399

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
    Staged patchset|                            |https://github.com/wine-com
                   |                            |pholio/wine-staging/tree/ma
                   |                            |ster/patches/combase-RoApi
                 CC|                            |focht at gmx.net
             Status|NEW                         |STAGED

--- Comment #8 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

the app uses QT5.8 multimedia, specifically WASAPI plugin to query for various
audio device info.
Relevant part of QT5.8 WASAPI plugin source code:

http://code.qt.io/cgit/qt/qtmultimedia.git/tree/src/plugins/wasapi/qwasapiutils.cpp#n234

--- snip ---
QList<QByteArray> QWasapiUtils::availableDevices(QAudio::Mode mode)
{
    qCDebug(lcMmUtils) << __FUNCTION__ << mode;

    CoInitIfNeeded();
    ComPtr<IDeviceInformationStatics> statics;
    HRESULT hr;

    hr =
GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Devices_Enumeration_DeviceInformation).Get(),
                              &statics);
    Q_ASSERT_SUCCEEDED(hr);

    DeviceClass dc = mode == QAudio::AudioInput ? DeviceClass_AudioCapture :
DeviceClass_AudioRender;

    QList<QByteArray> &deviceNames = mode == QAudio::AudioInput ?
gMapping->inputDeviceNames : gMapping->outputDeviceNames;
    QList<QString> &deviceIds = mode == QAudio::AudioInput ?
gMapping->inputDeviceIds : gMapping->outputDeviceIds;

    // We need to refresh due to plugable devices (ie USB)
    deviceNames.clear();
    deviceIds.clear();

   
ComPtr<IAsyncOperation<ABI::Windows::Devices::Enumeration::DeviceInformationCollection
*>> op;
    hr = statics->FindAllAsyncDeviceClass(dc, &op );
    RETURN_EMPTY_LIST_IF_FAILED("Could not query audio devices.");

    ComPtr<IVectorView<DeviceInformation *>> resultVector;
    hr = QWinRTFunctions::await(op, resultVector.GetAddressOf());
    RETURN_EMPTY_LIST_IF_FAILED("Could not receive audio device list.");
...
--- snip ---

MSDN: https://msdn.microsoft.com/en-us/library/hh973459.aspx ("How to: Activate
and Use a Windows Runtime Component Using WRL")

Missing Windows Runtime 'windows.devices.enumeration.dll' which provides device
enumeration API for Win8+ is a follow-up issue.

I'm changing the status to "staged" to refer to staging patchset:
https://github.com/wine-compholio/wine-staging/tree/master/patches/combase-RoApi

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list