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

Detect when one handler invokes the other one directly

XMLWordPrintable

    • Icon: Suggestion Suggestion
    • Resolution: Unresolved
    • Icon: Not Evaluated Not Evaluated
    • None
    • None
    • Task Tree
    • None
    • All

      It may happen when e.g. Barrier is used (e.g. when Barrier is activated from task's start or end handler, what calls the other handler directly). Unwind properly in this case.

      1. It may also happen that the delayed Barrier or TimeoutTask is finished, when some done handler entered the nested event loop, e.g. while showing a message box. In this case we can't unwind properly.
      2. When one still running task causes the other task to finish synchronously, we probably can't detect such a case. And it may happen, that in this case the other finished task may cause the emitter to be destructed directly, because e.g. the result caused the other tasks in the group to be stopped immediately.
      3. Detecting a case when handlers are called from each other is easy, but there is no good default behavior on how to follow properly.

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            jkobus Jarek Kobus
            jkobus Jarek Kobus
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:

                There are no open Gerrit changes