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

Handling of origin in QScxmlEvent only dispatches to immediate children

    XMLWordPrintable

Details

    • Windows

    Description

      In QScxmlStateMachine->routeEvent this code is used to dispatch events starting with a # to children services :

      for (const auto &invokedService : m_invokedServices) {
        auto service = invokedService.service;
        if (service == nullptr)
          continue;
        if (service->id() == originId) {
          qCDebug(qscxmlLog) << q << "routing event" << event->name()
            << "from" << q->name()
            << "to child" << service->id();
          service->postEvent(new QScxmlEvent(*event));
        }
      }

      The problem here is that if the service itself has children, then this loop will not consider them.
      So it means that only directly invoked scxml machines are considered.
      This call would need to be recursing the entire service tree.

      Attachments

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

        Activity

          People

            ulherman Ulf Hermann
            tommimtauriainen Tommi M. Tauriainen
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes