diff --git a/src/kits/tracker/FunctionObject.h b/headers/private/shared/FunctionObject.h similarity index 100% rename from src/kits/tracker/FunctionObject.h rename to headers/private/shared/FunctionObject.h diff --git a/src/kits/tracker/Thread.h b/headers/private/shared/Thread.h similarity index 94% rename from src/kits/tracker/Thread.h rename to headers/private/shared/Thread.h index 6cea939845..79d062fbf7 100644 --- a/src/kits/tracker/Thread.h +++ b/headers/private/shared/Thread.h @@ -36,15 +36,55 @@ All rights reserved. #include +#include #include #include "ObjectList.h" #include "FunctionObject.h" -#include "Utilities.h" namespace BPrivate { +class MessengerAutoLocker { + // move this into AutoLock.h + public: + MessengerAutoLocker(BMessenger* messenger) + : fMessenger(messenger), + fHasLock(messenger->LockTarget()) + {} + + ~MessengerAutoLocker() + { + Unlock(); + } + + bool operator!() const + { + return !fHasLock; + } + + bool IsLocked() const + { + return fHasLock; + } + + void Unlock() + { + if (fHasLock) { + BLooper* looper; + fMessenger->Target(&looper); + if (looper) + looper->Unlock(); + fHasLock = false; + } + } + + private: + BMessenger* fMessenger; + bool fHasLock; +}; + + class SimpleThread { // this should only be used as a base class, // subclass needs to add proper locking mechanism @@ -78,6 +118,7 @@ private: FunctionObject* fFunctor; }; + class ThreadSequence : private SimpleThread { public: static void Launch(BObjectList*, bool async = true, @@ -93,6 +134,7 @@ private: BObjectList* fFunctorList; }; + // would use SingleParamFunctionObjectWithResult, except mwcc won't handle this template class SingleParamFunctionObjectWorkaround : public @@ -105,7 +147,6 @@ public: { } - virtual void operator()() { (fFunction)(fParam1); } @@ -116,6 +157,7 @@ private: Param1 fParam1; }; + template class SimpleMemberFunctionObjectWorkaround : public FunctionObjectWithResult { diff --git a/src/kits/shared/Jamfile b/src/kits/shared/Jamfile index 4107a16315..e170392ebd 100644 --- a/src/kits/shared/Jamfile +++ b/src/kits/shared/Jamfile @@ -45,6 +45,7 @@ for architectureObject in [ MultiArchSubDirSetup ] { ShakeTrackingFilter.cpp StringForRate.cpp StringForSize.cpp + Thread.cpp Variant.cpp ; diff --git a/src/kits/tracker/Thread.cpp b/src/kits/shared/Thread.cpp similarity index 99% rename from src/kits/tracker/Thread.cpp rename to src/kits/shared/Thread.cpp index 9ca801fa5c..e0ed3e777e 100644 --- a/src/kits/tracker/Thread.cpp +++ b/src/kits/shared/Thread.cpp @@ -117,7 +117,7 @@ ThreadSequence::Launch(BObjectList* list, bool async, ThreadSequence::ThreadSequence(BObjectList* list, int32 priority) : SimpleThread(priority), - fFunctorList(list) + fFunctorList(list) { Go(); } diff --git a/src/kits/tracker/Jamfile b/src/kits/tracker/Jamfile index 1ef18922f4..45d6c4bdd7 100644 --- a/src/kits/tracker/Jamfile +++ b/src/kits/tracker/Jamfile @@ -83,7 +83,6 @@ for architectureObject in [ MultiArchSubDirSetup ] { TemplatesMenu.cpp Tests.cpp TextWidget.cpp - Thread.cpp TitleView.cpp Tracker.cpp TrackerInitialState.cpp diff --git a/src/kits/tracker/Utilities.h b/src/kits/tracker/Utilities.h index 661e9f60be..4aeae25ca2 100644 --- a/src/kits/tracker/Utilities.h +++ b/src/kits/tracker/Utilities.h @@ -381,46 +381,6 @@ class LooperAutoLocker { }; -class MessengerAutoLocker { - // move this into AutoLock.h - public: - MessengerAutoLocker(BMessenger* messenger) - : fMessenger(messenger), - fHasLock(messenger->LockTarget()) - {} - - ~MessengerAutoLocker() - { - Unlock(); - } - - bool operator!() const - { - return !fHasLock; - } - - bool IsLocked() const - { - return fHasLock; - } - - void Unlock() - { - if (fHasLock) { - BLooper* looper; - fMessenger->Target(&looper); - if (looper) - looper->Unlock(); - fHasLock = false; - } - } - - private: - BMessenger* fMessenger; - bool fHasLock; -}; - - class ShortcutFilter : public BMessageFilter { public: ShortcutFilter(uint32 shortcutKey, uint32 shortcutModifier,