AtmoThread.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:1k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*
  2.  * AtmoThread.h: Base thread class for all threads inside AtmoWin
  3.  *
  4.  *
  5.  * See the README.txt file for copyright information and how to reach the author(s).
  6.  *
  7.  * $Id: fb279ee46ed27cdf4f459141ff5d61950ed178e1 $
  8.  */
  9. #ifndef _AtmoThread_h_
  10. #define _AtmoThread_h_
  11. #include "AtmoDefs.h"
  12. #if defined(_ATMO_VLC_PLUGIN_)
  13. // use threading stuff from videolan!
  14. #   include <vlc_common.h>
  15. #   include <vlc_threads.h>
  16.     typedef struct
  17.     {
  18.       VLC_COMMON_MEMBERS
  19.       void *p_thread; /* cast to CThread * */
  20.     } atmo_thread_t;
  21. #else
  22. #   include <windows.h>
  23. #endif
  24. class CThread
  25. {
  26. protected:
  27. #if defined(_ATMO_VLC_PLUGIN_)
  28.     atmo_thread_t *m_pAtmoThread;
  29.     vlc_mutex_t  m_TerminateLock;
  30.     vlc_cond_t   m_TerminateCond;
  31.     vlc_object_t *m_pOwner;
  32. #else
  33.     HANDLE m_hThread;
  34. DWORD m_dwThreadID;
  35. HANDLE m_hTerminateEvent;
  36. #endif
  37.     volatile ATMO_BOOL m_bTerminated;
  38. private:
  39. #if defined(_ATMO_VLC_PLUGIN_)
  40.     static void *ThreadProc(vlc_object_t *);
  41. #else
  42. static DWORD WINAPI ThreadProc(LPVOID lpParameter);
  43. #endif
  44. protected:
  45. virtual DWORD Execute(void);
  46. ATMO_BOOL ThreadSleep(DWORD millisekunden);
  47. public:
  48. #if defined(_ATMO_VLC_PLUGIN_)
  49. CThread(vlc_object_t *pOwner);
  50. #else
  51. CThread(void);
  52. #endif
  53.     virtual ~CThread(void);
  54.     void Terminate(void);
  55.     void Run();
  56. };
  57. #endif