Details
-
Bug
-
Resolution: Done
-
P3: Somewhat important
-
5.9.1
-
None
-
msvc2015
-
7c2850cd8f1029b74d960fad5754320b61176f46 (qtbase/5.9/31.7.2017, 5.9.2)
Description
problem: sporadically there are no more "readyRead" signals from QTcpSocket, even though there is data sent to the socket
I manage to track it to the proccessing of WM_QT_ACTIVATENOTIFIERS in qeventdispatcher_win.cpp (see Attachment):
the socket notifiers do not get registered again because a WM_USER message to a different HWND is found by PeekMessage at qtbase\src\corelib\kernel\qeventdispatcher_win.cpp:210 .
cause: the 2nd param of PeekMessage is "0" (=look for any window of the current thread)
and on the other hand WM_QT_SOCKETNOTIFIER = WM_USER(1024) is a widely-used customized window message
proposal to fix: the 2nd param to PeekMessage should be "d->internalHwnd" instead of "0", souldn't it?
Attachments
Issue Links
- relates to
-
QTBUG-58214 QUdpSocket still broken - readyRead() stops firing
- Closed
-
QTBUG-62184 Use RegisterWindowMessage instead of defining the user level Window Messages to avoid overlapping with other applications
- Closed
For Gerrit Dashboard: QTBUG-62083 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
200681,5 | QEventDispatcherWin32: Check for WM_QT_SOCKETNOTIFIER on internal window only | 5.9 | qt/qtbase | Status: MERGED | +2 | 0 |