-
Bug
-
Resolution: Out of scope
-
Not Evaluated
-
None
-
4.8.2
-
None
-
Qt 4.8.2 on Windows
QFileSystemModel lists directories on a background thread to avoid blocking the UI. However, once it gets a list of updates in QFileSystemModelPrivate::_q_fileSystemChanged it then fetches the icons for the file in the main thread using QFileInfoGatherer::getInfo() which in turn calls QFileIconProvider::icon(QFileInfo).
On Windows (and possibly Mac as well, though we've only observed the problem directly on Windows), the QFIP::icon() call can take a long time, especially when listing folders somewhere on a remote file system.
See also the related issue QTBUG-6039
Sample backtrace:
_nh_malloc_dbg(nSize=104, nhFlag=0, nBlockUse=1, szFileName=0x00000000, nLine=0) Line 302 C++ malloc(nSize=476708688) Line 56 C++ 00ca9824 QThreadData::current() Line 102 C++ 5c5b2604 > QFileIconProviderPrivate::getWinIcon(fileInfo={...}) Line 263 C++ QFileIconProvider::icon(info={...}) Line 422 C++ QFileInfoGatherer::getInfo(fileInfo={...}) Line 233 C++ QFileSystemModelPrivate::_q_fileSystemChanged(path={...}, updates={...}) Line 1829 C++ QFileSystemModel::qt_static_metacall(_o=0x1c4bb8e0, _c=InvokeMetaMethod, _id=5, _a=0x1c50c0e0) Line 76 C++ QMetaCallEvent::placeMetaCall(object=0x1c4bb8e0) Line 525 C++ QObject::event(e=0x1c50c128) Line 1195 C++ QFileSystemModel::event(event=0x1c50c128) Line 1635 C++ QApplicationPrivate::notify_helper(receiver=0x1c4bb8e0, e=0x1c50c128) Line 4551 C++ QApplication::notify(receiver=0x1c4bb8e0, e=0x1c50c128) Line 3933 C++ QCoreApplication::notifyInternal(receiver=0x1c4bb8e0, event=0x1c50c128) Line 915 C++ QCoreApplication::sendEvent(receiver=0x1c4bb8e0, event=0x1c50c128) Line 231 C++ QCoreApplicationPrivate::sendPostedEvents(receiver=0x00000000, event_type=0, data=0x05c00a80) Line 1539 C++ qt_internal_proc(hwnd=0x005107ce, message=1025, wp=0, lp=0) Line 496 C++