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

When accessibility is made active after the start up of an application then it will trigger an update of all existing controls to update roles and names

    XMLWordPrintable

Details

    • 350a75f792 (qt/qtbase/dev) 350a75f792 (qt/tqtc-qtbase/dev) a6760fd4a9 (qt/tqtc-qtbase/5.15) 1b96c75661 (qt/qtbase/6.3) 1b96c75661 (qt/tqtc-qtbase/6.3) 54f34ffe10 (qt/qtbase/6.2) 54f34ffe10 (qt/tqtc-qtbase/6.2)

    Description

      When accessibility is made active after the start up of an application then it will trigger an update of all existing controls to update roles and names. This can cause a slowdown on some platforms if it is reacting to these changes dynamically as well. Whereas it would be better to just set this information on control creation so it can be staggered out and picked up when the accessibility is enabled the first time, rather than having updates across the board. A sample stack trace is:

       	Qt5Quick.dll!QList<QQuickItem *>::QList<QQuickItem *>(const QList<QQuickItem *> & l) Line 868	C++
       	000002890cd84308()	Unknown
       	Qt5Quick.dll!QQuickItem::childItems() Line 3711	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 157	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!unignoredChildren(QQuickItem * item, QList<QQuickItem *> * items, bool paintOrder) Line 159	C++
       	Qt5Quick.dll!accessibleUnignoredChildren(QQuickItem * item, bool paintOrder) Line 172	C++
       	[Inline Frame] Qt5Quick.dll!QAccessibleQuickWindow::rootItems() Line 61	C++
       	Qt5Quick.dll!QAccessibleQuickWindow::child(int index) Line 78	C++
       	qwindows.dll!QWindowsUiAutomation::windowForAccessible(const QAccessibleInterface * accessible) Line 74	C++
       	qwindows.dll!QWindowsUiaMainProvider::get_FragmentRoot(IRawElementProviderFragmentRoot * * pRetVal) Line 706	C++
       	UIAutomationCore.dll!UiaUtils::GetFragmentRootWithHostProviderEntryPoint()	Unknown
       	UIAutomationCore.dll!GetProviderEventInfo()	Unknown
       	UIAutomationCore.dll!UiaRaiseAutomationPropertyChangedEvent()	Unknown
       	qwindows.dll!QWindowsUiaWrapper::raiseAutomationPropertyChangedEvent(IRawElementProviderSimple * pProvider, int id, tagVARIANT oldValue, tagVARIANT newValue) Line 108	C++
       	qwindows.dll!QWindowsUiaMainProvider::notifyNameChange(QAccessibleEvent * event) Line 222	C++
       	Qt5Gui.dll!QAccessible::updateAccessibility(QAccessibleEvent * event) Line 876	C++
       	Qt5Quick.dll!QQuickAccessibleAttached::setName(const QString & name) Line 134	C++
       	Qt5Quick.dll!QQuickAccessibleAttached::setNameImplicitly(const QString & name) Line 429	C++
       	Qt5QuickTemplates2.dll!QQuickControl::maybeSetAccessibleName(const QString & name) Line 2327	C++
       	Qt5QuickTemplates2.dll!QQuickGroupBox::accessibilityActiveChanged(bool active) Line 287	C++
       	Qt5QuickTemplates2.dll!QQuickPopupItem::accessibilityActiveChanged(bool active) Line 409	C++
       	Qt5Gui.dll!QAccessible::setActive(bool active) Line 805	C++
       	qwindows.dll!QWindowsUiaAccessibility::handleWmGetObject(HWND__ * hwnd, unsigned __int64 wParam, __int64 lParam, __int64 * lResult) Line 77	C++
       	qwindows.dll!QWindowsContext::windowsProc(HWND__ * hwnd, unsigned int message, QtWindows::WindowsEventType et, unsigned __int64 wParam, __int64 lParam, __int64 * result, QWindowsWindow * * platformWindowPtr) Line 1213	C++
       	qwindows.dll!qWindowsWndProc(HWND__ * hwnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 1684	C++
      

      Attachments

        Issue Links

          For Gerrit Dashboard: QTBUG-95114
          # Subject Branch Project Status CR V

          Activity

            People

              vhilshei Volker Hilsheimer
              andysh Andy Shaw
              Votes:
              3 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: