what happens when calling KDirWatch::addDir() multiple times with the same path?

David Faure faure at kde.org
Sat Dec 2 16:36:03 UTC 2017


On dimanche 26 novembre 2017 00:19:27 CET René J.V. Bertin wrote:
> Hi,
> 
> KDirWatch is mostly rather old code, does anyone really know why it does
> what it does?

"Why" is always hard, but your questions are only about "what", so that's 
easy, the code answers that ;)

> For instance, watching a directory multiple times with KDW::addDir() results
> in as many "Added already watched Entry" debug messages but I can't get my
> head around the underlying goal. 

The goal of what? That categorized and off-by-default debug message?
The goal of that is clearly debugging ;)

It's a debug and not a warning, and the word already doesn't imply anything 
bad.

> It's also not clear (as in undocumented)
> whether you'd need to call KDW::removeDir() the same number of times in
> order to stop watching the directory in question (I'm assuming you have
> to).

The code answers this, at least. When you get the debug message, it means it 
called

    (*it).addClient(instance, watchModes);

which does

    for (Client &client : m_clients) {
        if (client.instance == instance) {
            client.count++;
            client.m_watchModes = watchModes;
            return;
        }
    }

So this is reference counted. Nice, heh?

> As a result I feel I need to wrap each call to KDW::addDir(foo) with a check
> of KDW::contains(foo).

No you don't need to do that.

-- 
David Faure, faure at kde.org, http://www.davidfaure.fr
Working on KDE Frameworks 5





More information about the Kde-frameworks-devel mailing list