Mercurial > games > semicongine
comparison fuhtark_test/include/winapi/mspstrm.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1499:1f58458b7ef7 | 1500:91c8c3b7cbf0 |
|---|---|
| 1 #ifndef _MSPSTRM_H_ | |
| 2 #define _MSPSTRM_H_ | |
| 3 | |
| 4 #define STRM_INITIAL 0x00000000 | |
| 5 #define STRM_TERMINALSELECTED 0x00000001 | |
| 6 #define STRM_CONFIGURED 0x00000002 | |
| 7 #define STRM_RUNNING 0x00000004 | |
| 8 #define STRM_PAUSED 0x00000008 | |
| 9 #define STRM_STOPPED 0x00000010 | |
| 10 | |
| 11 class CMSPStream; | |
| 12 | |
| 13 class ATL_NO_VTABLE CPTEventSink : public CComObjectRootEx<CComMultiThreadModel>,public ITPluggableTerminalEventSink { | |
| 14 public: | |
| 15 CPTEventSink(); | |
| 16 ~CPTEventSink(); | |
| 17 BEGIN_COM_MAP(CPTEventSink) | |
| 18 COM_INTERFACE_ENTRY(ITPluggableTerminalEventSink) | |
| 19 END_COM_MAP() | |
| 20 public: | |
| 21 STDMETHOD(FireEvent)(const MSP_EVENT_INFO *pMspEventInfo); | |
| 22 public: | |
| 23 HRESULT SetSinkStream(CMSPStream *pStream); | |
| 24 private: | |
| 25 struct AsyncEventStruct { | |
| 26 CMSPStream *pMSPStream; | |
| 27 MSPEVENTITEM *pEventItem; | |
| 28 AsyncEventStruct() : pMSPStream(NULL),pEventItem(NULL) { | |
| 29 LOG((MSP_TRACE,"AsyncEventStruct::AsyncEventStruct[%p]",this)); | |
| 30 } | |
| 31 ~AsyncEventStruct() { | |
| 32 pMSPStream = NULL; | |
| 33 pEventItem = NULL; | |
| 34 LOG((MSP_TRACE,"AsyncEventStruct::~AsyncEventStruct[%p]",this)); | |
| 35 } | |
| 36 }; | |
| 37 static DWORD WINAPI FireEventCallBack(LPVOID pEventStructure); | |
| 38 private: | |
| 39 CMSPStream *m_pMSPStream; | |
| 40 }; | |
| 41 | |
| 42 class ATL_NO_VTABLE CMSPStream : public CComObjectRootEx<CComMultiThreadModelNoCS>,public IDispatchImpl<ITStream,&IID_ITStream,&LIBID_TAPI3Lib> { | |
| 43 public: | |
| 44 BEGIN_COM_MAP(CMSPStream) | |
| 45 COM_INTERFACE_ENTRY(IDispatch) | |
| 46 COM_INTERFACE_ENTRY(ITStream) | |
| 47 COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal,m_pFTM) | |
| 48 END_COM_MAP() | |
| 49 DECLARE_GET_CONTROLLING_UNKNOWN() | |
| 50 CMSPStream(); | |
| 51 ~CMSPStream(); | |
| 52 virtual void FinalRelease(); | |
| 53 STDMETHOD (get_MediaType) (long *plMediaType); | |
| 54 STDMETHOD (get_Direction) (TERMINAL_DIRECTION *pTerminalDirection); | |
| 55 STDMETHOD (get_Name) (BSTR *ppName) = 0; | |
| 56 STDMETHOD (SelectTerminal) (ITTerminal *pTerminal); | |
| 57 STDMETHOD (UnselectTerminal) (ITTerminal *pTerminal); | |
| 58 STDMETHOD (EnumerateTerminals) (IEnumTerminal **ppEnumTerminal); | |
| 59 STDMETHOD (get_Terminals) (VARIANT *pTerminals); | |
| 60 STDMETHOD (StartStream) (); | |
| 61 STDMETHOD (PauseStream) (); | |
| 62 STDMETHOD (StopStream) (); | |
| 63 virtual HRESULT Init(HANDLE hAddress,CMSPCallBase *pMSPCall,IMediaEvent *pGraph,DWORD dwMediaType,TERMINAL_DIRECTION Direction); | |
| 64 virtual HRESULT ShutDown(); | |
| 65 virtual HRESULT GetState(DWORD *pdwStatus) { return E_NOTIMPL; } | |
| 66 virtual HRESULT HandleTSPData(BYTE *pData,DWORD dwSize); | |
| 67 virtual HRESULT ProcessGraphEvent(long lEventCode,LONG_PTR lParam1,LONG_PTR lParam2); | |
| 68 protected: | |
| 69 HRESULT RegisterPluggableTerminalEventSink(ITTerminal *pTerminal); | |
| 70 HRESULT UnregisterPluggableTerminalEventSink(ITTerminal *pTerminal); | |
| 71 HRESULT ReleaseSink(); | |
| 72 ULONG InternalAddRef(); | |
| 73 ULONG InternalRelease(); | |
| 74 public: | |
| 75 HRESULT HandleSinkEvent(MSPEVENTITEM *pEventItem); | |
| 76 protected: | |
| 77 IUnknown *m_pFTM; | |
| 78 DWORD m_dwState; | |
| 79 DWORD m_dwMediaType; | |
| 80 TERMINAL_DIRECTION m_Direction; | |
| 81 HANDLE m_hAddress; | |
| 82 CMSPCallBase *m_pMSPCall; | |
| 83 IGraphBuilder *m_pIGraphBuilder; | |
| 84 IMediaControl *m_pIMediaControl; | |
| 85 CMSPArray <ITTerminal *> m_Terminals; | |
| 86 CMSPCritSection m_lock; | |
| 87 CMSPCritSection m_lockRefCount; | |
| 88 ITPluggableTerminalEventSink *m_pPTEventSink; | |
| 89 long m_lMyPersonalRefcount; | |
| 90 WINBOOL m_bFirstAddRef; | |
| 91 }; | |
| 92 | |
| 93 #endif |
