Details
-
Bug
-
Resolution: Invalid
-
Not Evaluated
-
None
-
5.12.11, 5.15
-
None
-
Windows 10, fully updated. Tried with various combinations of Qt versions from the last 2 years and various GStreamer versions, all exhibiting the same behavior. Also tried compiling with mingw64 and MSVC 64bit and 32bit and the behavior is the same. Unable to test on previous versions of Windows as I don't have any Win7 or Win8 test environments.Windows 10, fully updated. Tried with various combinations of Qt versions from the last 2 years and various GStreamer versions, all exhibiting the same behavior. Also tried compiling with mingw64 and MSVC 64bit and 32bit and the behavior is the same. Unable to test on previous versions of Windows as I don't have any Win7 or Win8 test environments.
Description
On Windows, if you are using GStreamer alongside Qt, after playing and stopping an audio file a few times (4 in my testing) drag and drop stops working completely in Qt. I realize this isn't a pure Qt problem, but many projects use the two together, including the project I originally ran into this in, OpenKJ ( https://openkj.org https://github.com/openkj/openkj ). I am unable to just use QtMultimedia as it lacks many of the features needed for my use case (professional karaoke hosting software).
This problem is specific to Windows. Does not occur on Linux or macOS.
I've created a very minimal example of the bug here:
https://github.com/ILightburn/dnd-win-bug-minimal-example
After the bug is triggered, if you debug under Visual Studio and show all exceptions, you'll see it throwing (and obviously catching, since it doesn't crash the program) the following exception when you start to drag a list item:
Exception thrown at 0x74FD46D2 (KernelBase.dll) in openkj.exe: 0x80010012: The callee (server [not server application]) is not available and disappeared; all connections are invalid. The call did not execute.
The call stack shows that it's triggering on the Qt side after a call to:
const HRESULT r = DoDragDrop(dropDataObject, windowDropSource, allowedEffects, &resultEffect);
from ole32.dll in qwindowsdrag.cpp on line 700 in the QWindowsDrag.cpp file.