From kfm-devel Wed Feb 05 10:18:05 2014 From: Frank Reininghaus Date: Wed, 05 Feb 2014 10:18:05 +0000 To: kfm-devel Subject: Re: Dolphin and Baloo Message-Id: X-MARC-Message: https://marc.info/?l=kfm-devel&m=139159550123344 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