root/src/tests/kits/app/bhandler/LockLooperTestCommon.h
//------------------------------------------------------------------------------
//      LockLooperTestCommon.h
//
//------------------------------------------------------------------------------

#ifndef LOCKLOOPERTESTCOMMON_H
#define LOCKLOOPERTESTCOMMON_H

// Standard Includes -----------------------------------------------------------

// System Includes -------------------------------------------------------------
#include <OS.h>

// Project Includes ------------------------------------------------------------

// Local Includes --------------------------------------------------------------

// Local Defines ---------------------------------------------------------------

// Globals ---------------------------------------------------------------------

class BLooper;

class TLockLooperInfo
{
        public:
        TLockLooperInfo(BLooper* Looper) : fLooper(Looper)
        {
                // Create it "acquired"
                fThreadLock = create_sem(0, NULL);
                fTestLock = create_sem(0, NULL);
        }

        void LockTest()         { acquire_sem(fTestLock); }
        void UnlockTest()       { release_sem(fTestLock); }
        void LockThread()       { acquire_sem(fThreadLock); }
        void UnlockThread()     { release_sem(fThreadLock); }
        void UnlockLooper()     { fLooper->Unlock(); }
        void LockLooper()
        {
                fLooper->Lock();
        }

        private:
                BLooper*        fLooper;
                sem_id          fTestLock;
                sem_id          fThreadLock;
};

int32 LockLooperThreadFunc(void* data);

#endif  //LOCKLOOPERTESTCOMMON_H

/*
 * $Log $
 *
 * $Id  $
 *
 */