Hello
I'm trying to write a program that uses the DirectComposition API on
windows. While most of the API works correctly, some functions crash
when compiled with clang/gcc mingw64 and works when compiled with MSVC.
basically the following code works with MSVC and crashes with clang/gcc
mingw64:
IDCompositionTranslateTransform* translateTransform = nullptr;
hr = dcompDevice->CreateTranslateTransform(&translateTransform);
if (FAILED(hr) || !translateTransform)
throw
std::runtime_error("dcompDevice->CreateTranslateTransform");
hr = translateTransform->SetOffsetX(42.f); //BOOM
if (FAILED(hr))
throw std::runtime_error("translateVisual->SetOffsetX");
the translateTransform pointer seems correct, the call to SetOffsetX
crashes, it doesn't return.
I enclosed the full sample for reference.
As far as I can tell there is no real differences between the header
provided by MS and the one from Mingw.
While I have no clear idea about the cause of the issue, my gut feeling
is that it happens with overloaded functions. In above case:
STDMETHOD(SetOffsetX)(THIS_ float) PURE;
STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
I did my tests with
* MSVC 19.25.28612 (x86-64 & i686) => works
* Mingw 7.0.x (ceb3ac2f42d56504fae5bd5cfe7f681643baccd6) with
* clang 10.0.0 (x86-64 & i686) => crash
* gcc 10.1.0 (x86-64) => crash
Thanks for your input.
Pierre
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public