Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-64443

QWindowsPipeReader/Writer notification stops when dragging the window

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • None
    • 5.8.0, 5.9.0, 5.9.1, 5.9.2, 5.10.0 Beta 4
    • Core: I/O
    • None
    • Any Windows.
    • Windows
    • ee122077b09430da54ca09750589b37326a22d85 (qt/qtbase/dev) f265c87e015c26225b80297f5c9f430ea7030214 (qt/qtbase/dev)

    Description

      Removing of QWinOverlapperIoNotifier, based on IO completion ports [1], in favor to the alertable I/O functions [2], leads to stopping for all I/O in widget-based application, e.g. when the user holds a mouse button on the widget title.

      For example, it concerned to the QLocal{Socket|Server} and QProcess classes. 

      I have added two simple widget-based examples:

      • localsocket.zip - demonstrates this issue, the user should run this example and try to hold the left or right mouse buttons on a window title (or just click on a window title with the right button when the title-context menu will be displayed). Then all I/O output will be stopped, until the user closes the context menu, or when releases a mouse buttons.
      • tcpsocket - demonstrates the other behavior: during the holding of the left mouse button, the I/O still is running, but when holding the right button, it also stops.

      Previously (when has been used the QWinOverlapperIoNotifier), the localsocket example had same behavior as the tcpsocket example.

      Of course, seems, a workaround is that, the user shall move the QIODevice objects/workers to a separate thread. And I'm not sure if it is possible with the callbacks of {Write|Read}FileEx functions, I mean, that is it safely? Also, seems, it is completelly not an expected behavior, because the I/O should continue in a main thread anyway (if to think logically).

       

      A main questions are:

      1. What to do to users with such zoo in behaviors?
      2. What to do to contributors (e.g. for me), e.g. should I introduce the alertable I/O and for qtserialport module too?

       

      [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa365198(v=vs.85).aspx

      [2] https://msdn.microsoft.com/en-us/library/windows/desktop/aa363772(v=vs.85).aspx

       

      Attachments

        1. localsocket.zip
          0.9 kB
          Denis Shienkov
        2. tcpsocket.zip
          0.9 kB
          Denis Shienkov
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            cnn Qt Core & Network
            kuzulis Denis Shienkov
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: