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

midi

开发平台:

Unix_Linux

  1. /*
  2.  * AtmoDynData.h: class for holding all variable data - which may be passed
  3.  * between function calls, into threads instead of the use of global variables
  4.  *
  5.  * See the README.txt file for copyright information and how to reach the author(s).
  6.  *
  7.  * $Id: d03d4dc9b3bc02fa3bae48923c794d9596f3d2e5 $
  8.  */
  9. #ifndef _AtmoDynData_h_
  10. #define _AtmoDynData_h_
  11. #include "AtmoDefs.h"
  12. #include "AtmoThread.h"
  13. #include "AtmoConfig.h"
  14. #include "AtmoConnection.h"
  15. #if !defined(_ATMO_VLC_PLUGIN_)
  16. #    include "AtmoDisplays.h"
  17. #else
  18. #    include <vlc_common.h>
  19. #    include <vlc_threads.h>
  20. #endif
  21. /*
  22.   the idea behind this class is to avoid a mix of persistent value and
  23.   volatile values in CAtmoConfig class because some parameters and variables
  24.   exists only for the current process and won't be stored to the registry
  25.   (Simple thought its a container... )
  26.   you ask? why I didn't used a struct for it? ..mmh I like classes?
  27.   Problem: MultiThreading! todo semaphore, mutex!
  28.   Allways stop the current effect Thread before changing AtmoConnection or
  29.   AtmoConfig!
  30. */
  31. class CAtmoDynData
  32. {
  33. private:
  34.     CThread *m_pCurrentEffectThread;
  35.     CAtmoConnection *m_pAtmoConnection;
  36.     CAtmoConfig *m_pAtmoConfig;
  37. #if !defined(_ATMO_VLC_PLUGIN_)
  38.     CAtmoDisplays *m_pAtmoDisplays;
  39.     HINSTANCE m_hInst;
  40.     CRITICAL_SECTION m_RemoteCallCriticalSection;
  41. #else
  42.     vlc_object_t *p_atmo_filter;
  43.     vlc_mutex_t  m_lock;
  44. #endif
  45. public:
  46. #if !defined(_ATMO_VLC_PLUGIN_)
  47.      CAtmoDynData(HINSTANCE hInst,
  48.                   CAtmoConfig *pAtmoConfig,
  49.                   CAtmoDisplays *pAtmoDisplays);
  50. #else
  51.      CAtmoDynData(vlc_object_t *p_atmo_filter,
  52.                   CAtmoConfig *pAtmoConfig);
  53. #endif
  54.     ~CAtmoDynData(void);
  55.     CThread *getEffectThread()           { return m_pCurrentEffectThread; }
  56.     void setEffectThread(CThread *value) { m_pCurrentEffectThread = value; }
  57.     CAtmoConnection *getAtmoConnection() { return m_pAtmoConnection; }
  58.     void setAtmoConnection(CAtmoConnection *value) { m_pAtmoConnection = value; }
  59.     CAtmoConfig *getAtmoConfig() { return m_pAtmoConfig; }
  60. #if !defined(_ATMO_VLC_PLUGIN_)
  61.     CAtmoDisplays *getAtmoDisplays() { return m_pAtmoDisplays; }
  62.     HINSTANCE getHinstance() { return m_hInst; }
  63. #else
  64.     vlc_object_t *getAtmoFilter() { return p_atmo_filter; }
  65. #endif
  66.     void LockCriticalSection();
  67.     void UnLockCriticalSection();
  68. };
  69. #endif