Hi, 2014-02-04 Frank Reininghaus: [...] > (c) Unless I'm overlooking something, it looks to me like > rolesData(KFileItem) invokes applyChangedBalooRoles(QString), which > will then finally trigger applyChangedBalooRolesJobFinished(KJob*). > The latter function then calls rolesData(KFileItem) again. This looks > like an infinite recursion to me. It won't cause a crash or block the > GUI because two of the recursive calls are asynchronous, but it will > make Dolphin use 100% of one CPU core permanently. Or am I missing > something here? I thought again about this issue. Maybe the best solution is to simply drop the call to rolesData from applyChangedBalooRolesJobFinished? If any non-Baloo roles need to be updated, this will happen anyway because we receive a signal from KDirWatch either directly or indirectly (via KFileItemModel's itemsChanged signal) in KFileItemModelRolesUpdater if anything interesting changes. So I think that everything should work OK (and without infinite recursions) if the QHash data is simply initialized to an empty QHash in applyChangedBalooRolesJobFinished, but I haven't tested it. Cheers, Frank