www.pudn.com > MP3CORD.rar > beosthread.h
/*____________________________________________________________________________ FreeAmp - The Free MP3 Player Portions Copyright (C) 1998-1999 EMusic.com This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. $Id: beosthread.h,v 1.4 1999/10/23 08:26:38 hiro Exp $ ____________________________________________________________________________*/ #ifndef INCLUDED_BEOS_THREAD_H #define INCLUDED_BEOS_THREAD_H #include#include #include "thread.h" #include "mutex.h" class beosThread : public Thread { public: beosThread(); virtual ~beosThread(); virtual bool Create(thread_function function, void* arg); virtual void Destroy(); virtual void Suspend(); virtual void Resume(); virtual void Join(); virtual uint32 GetPriority( void ) const; virtual uint32 SetPriority( uint32 priority ); virtual void DumpThreadInfo( void ) const; static int32 internalThreadFunction(void *); void * InternalThreadFunction(); protected: bool Lock( void ); void Unlock( void ); private: uint32 m_priority; thread_id m_threadHandle; unsigned m_threadId; bool m_suspended; BLocker m_lock; thread_function m_function; void * m_arg; }; // Inline functions inline bool beosThread::Lock( void ) { return m_lock.Lock(); } inline void beosThread::Unlock( void ) { Unlock(); } // Utility functions. inline int32 beos_priority( uint32 freeamp_prio ) { #if 0 switch ( freeamp_prio ) { case Idle: return B_NORMAL_PRIORITY; break; case Low: return B_NORMAL_PRIORITY; break; case BelowNormal: return B_NORMAL_PRIORITY; break; case Normal: return B_NORMAL_PRIORITY; break; case AboveNormal: return B_NORMAL_PRIORITY; break; case High: return B_NORMAL_PRIORITY; break; case Critical: return B_NORMAL_PRIORITY; break; default: return B_NORMAL_PRIORITY; break; } #endif return B_NORMAL_PRIORITY; } #endif /* _BEOS_THREAD_H */