f7c226f467
then be used for receiving node monitoring messages. * Reenabled using be_app as default BLooper if the API user does not provide one. I think the problem that Stefano needed to work aroung in r23995 was actually caused by the incorrect locking (an never unlocking) of the looper before calling PathHandler::Quit(). ->If I understand correctly, this code as supposed to work around the possible situation that the looper holding those PathHandlers may have already quit, leaving stale PathHandler pointers behind. But that case was not prevented by the old code anyways, since one would have had to access freed memory to even get the stale BLooper pointer. The real fix would be to store the BLooper pointer with each PathHandler so that the possible gone-ness of those loopers could be checked independent of accessing the PathHandler pointer. (The whole problem is that PathHandler adds itself to the BLooper and if the looper quits, it will free all its attached handlers.) * Introduced a global fallback BLooper for the case that no BApplication is running, which resolves a TODO. All this is yet untested, but should have a good chance of working. (Famous last words...) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26843 a95241bf-73f2-0310-859d-f6bbb57e9c96
41 lines
864 B
C++
41 lines
864 B
C++
/*
|
|
* Copyright 2007-2008, Haiku Inc. All Rights Reserved.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef _PATH_MONITOR_H
|
|
#define _PATH_MONITOR_H
|
|
|
|
|
|
#include <NodeMonitor.h>
|
|
|
|
|
|
// additional flags (combined with those in NodeMonitor.h)
|
|
#define B_WATCH_FILES_ONLY 0x0100
|
|
#define B_WATCH_RECURSIVELY 0x0200
|
|
|
|
#define B_PATH_MONITOR '_PMN'
|
|
|
|
namespace BPrivate {
|
|
|
|
class BPathMonitor {
|
|
public:
|
|
static status_t StartWatching(const char* path, uint32 flags,
|
|
BMessenger target,
|
|
BLooper* useLooper = NULL);
|
|
|
|
static status_t StopWatching(const char* path,
|
|
BMessenger target);
|
|
static status_t StopWatching(BMessenger target);
|
|
|
|
private:
|
|
BPathMonitor();
|
|
~BPathMonitor();
|
|
|
|
static status_t _InitLockerIfNeeded();
|
|
static status_t _InitLooperIfNeeded();
|
|
};
|
|
|
|
} // namespace BPrivate
|
|
|
|
#endif // _PATH_MONITOR_H
|