Show More
Commit Description:
Add timers for Simulation and various engines...
Commit Description:
Add timers for Simulation and various engines Starting to add additional timers for different stages of the process of updating in order to get more insight into what is slowing it down. The update takes 9ms, which is much longer than it used to. Engine-specific timers are coming later.
File last commit:
Show/Diff file:
Action:
FNA/lib/FAudio/cpp/com_utils.h
145 lines | 3.9 KiB | text/x-c | CLexer
#ifndef FACT_CPP_FAUDIO_COM_H
#define FACT_CPP_FAUDIO_COM_H
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <FAudio.h>
// CoTaskMem functionality, needed for XAudio2 compat
#if defined _WIN32 || defined __CYGWIN__
#define DLLIMPORT __declspec(dllimport)
#else
#if __GNUC__ >= 4
#define DLLIMPORT __attribute__((visibility ("default")))
#else
#define DLLIMPORT
#endif
#endif
extern "C" DLLIMPORT void * __stdcall CoTaskMemAlloc(size_t cb);
extern "C" DLLIMPORT void __stdcall CoTaskMemFree(void* ptr);
extern "C" DLLIMPORT void * __stdcall CoTaskMemRealloc(void* ptr, size_t cb);
#define CDECL __cdecl
// common windows types
#ifndef FAUDIO_USE_STD_TYPES
typedef uint8_t BYTE;
typedef uint16_t WORD;
typedef uint32_t HRESULT;
typedef uint32_t UINT32;
typedef long LONG;
typedef unsigned long ULONG;
typedef wchar_t WHCAR;
typedef const WHCAR *LPCWSTR;
typedef int BOOL;
typedef unsigned long DWORD;
typedef void *LPVOID;
typedef float FLOAT32;
#endif
// HRESULT stuff
#define S_OK 0
#define S_FALSE 1
#define E_NOTIMPL 80004001
#define E_NOINTERFACE 80004002
#define E_OUTOFMEMORY 0x8007000E
#define CLASS_E_NOAGGREGATION 0x80040110
#define CLASS_E_CLASSNOTAVAILABLE 0x80040111
// GUID, IID stuff
typedef FAudioGUID GUID;
typedef GUID IID;
#define REFIID const IID &
#define REFCLSID const IID &
bool guid_equals(REFIID a, REFIID b);
extern const IID IID_IUnknown;
extern const IID IID_IClassFactory;
extern const IID IID_IXAudio2;
extern const IID IID_IXAPO;
extern const IID IID_IXAPOParameters;
extern const IID CLSID_XAudio2_0;
extern const IID CLSID_XAudio2_1;
extern const IID CLSID_XAudio2_2;
extern const IID CLSID_XAudio2_3;
extern const IID CLSID_XAudio2_4;
extern const IID CLSID_XAudio2_5;
extern const IID CLSID_XAudio2_6;
extern const IID CLSID_XAudio2_7;
extern const IID *CLSID_XAudio2[];
extern const IID CLSID_AudioVolumeMeter_0;
extern const IID CLSID_AudioVolumeMeter_1;
extern const IID CLSID_AudioVolumeMeter_2;
extern const IID CLSID_AudioVolumeMeter_3;
extern const IID CLSID_AudioVolumeMeter_4;
extern const IID CLSID_AudioVolumeMeter_5;
extern const IID CLSID_AudioVolumeMeter_6;
extern const IID CLSID_AudioVolumeMeter_7;
extern const IID *CLSID_AudioVolumeMeter[];
extern const IID CLSID_AudioReverb_0;
extern const IID CLSID_AudioReverb_1;
extern const IID CLSID_AudioReverb_2;
extern const IID CLSID_AudioReverb_3;
extern const IID CLSID_AudioReverb_4;
extern const IID CLSID_AudioReverb_5;
extern const IID CLSID_AudioReverb_6;
extern const IID CLSID_AudioReverb_7;
extern const IID *CLSID_AudioReverb[];
extern const IID IID_IXACT3Engine3_0;
extern const IID IID_IXACT3Engine3_1;
extern const IID IID_IXACT3Engine3_2;
extern const IID IID_IXACT3Engine3_3;
extern const IID IID_IXACT3Engine3_4;
extern const IID IID_IXACT3Engine3_5;
extern const IID IID_IXACT3Engine3_6;
extern const IID IID_IXACT3Engine3_7;
#define JOIN_IID_VERSION(x, y) JOIN_IID_VERSION2(x, y)
#define JOIN_IID_VERSION2(x, y) x ## y
#define IID_IXACT3Engine JOIN_IID_VERSION(IID_IXACT3Engine3_, XACT3_VERSION)
extern const IID CLSID_XACTEngine3_0;
extern const IID CLSID_XACTEngine3_1;
extern const IID CLSID_XACTEngine3_2;
extern const IID CLSID_XACTEngine3_3;
extern const IID CLSID_XACTEngine3_4;
extern const IID CLSID_XACTEngine3_5;
extern const IID CLSID_XACTEngine3_6;
extern const IID CLSID_XACTEngine3_7;
extern const IID *CLSID_XACTEngine[];
// quality of life macro's
#define COM_METHOD(rtype) virtual rtype __stdcall
// common interfaces
class IUnknown {
public:
COM_METHOD(HRESULT) QueryInterface(REFIID riid, void** ppvInterface) = 0;
COM_METHOD(ULONG) AddRef() = 0;
COM_METHOD(ULONG) Release() = 0;
};
class IClassFactory : public IUnknown {
public:
COM_METHOD(HRESULT) CreateInstance(
IUnknown *pUnkOuter,
REFIID riid,
void **ppvObject) = 0;
COM_METHOD(HRESULT) LockServer(BOOL fLock) = 0;
};
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif // FACT_CPP_FAUDIO_COM_H