Details
-
Bug
-
Resolution: Done
-
P4: Low
-
5.15.2, 5.15.5
-
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
- is duplicated by
-
QTBUG-95113 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
- Closed
- relates to
-
QTBUG-97103 REG: 5.15.0->5.15.1: Under some circumstances the performance of an application on Windows when switching application focus
- Closed