Edit

kc3-lang/SDL/src/audio/xaudio2/SDL_xaudio2_winrthelpers.h

Branch :

  • Show log

    Commit

  • Author : David Ludwig
    Date : 2013-09-06 19:07:15
    Hash : fff78081
    Message : WinRT: made SDL_xaudio2.c compile as C code when building for WinRT XAudio2 2.8's header file, xaudio2.h, doesn't compile in plain C code for WinRT apps, not automatically at least. Initially, this file was adapted to compile as C++, however these changes are now deprecated in favor of some preprocessor based hacks that should get xaudio2.h to compile (while making sure XAudio2 still works).

  • src/audio/xaudio2/SDL_xaudio2_winrthelpers.h
  • #pragma once
    
    //
    // Re-implementation of methods removed from XAudio2 (in WinRT):
    //
    
    typedef struct XAUDIO2_DEVICE_DETAILS
    {
        WCHAR DeviceID[256];
        WCHAR DisplayName[256];
        /* Other fields exist in the pre-Windows 8 version of this struct, however
           they weren't used by SDL, so they weren't added.
        */
    } XAUDIO2_DEVICE_DETAILS;
    
    
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    HRESULT IXAudio2_GetDeviceCount(IXAudio2 * unused, UINT32 * devcount);
    HRESULT IXAudio2_GetDeviceDetails(IXAudio2 * unused, UINT32 index, XAUDIO2_DEVICE_DETAILS * details);
    
    #ifdef __cplusplus
    }
    #endif
    
    
    //
    // C-style macros to call XAudio2's methods in C++:
    //
    #ifdef __cplusplus
    /*
    #define IXAudio2_CreateMasteringVoice(A, B, C, D, E, F, G) (A)->CreateMasteringVoice((B), (C), (D), (E), (F), (G))
    #define IXAudio2_CreateSourceVoice(A, B, C, D, E, F, G, H) (A)->CreateSourceVoice((B), (C), (D), (E), (F), (G), (H))
    #define IXAudio2_QueryInterface(A, B, C) (A)->QueryInterface((B), (C))
    #define IXAudio2_Release(A) (A)->Release()
    #define IXAudio2_StartEngine(A) (A)->StartEngine()
    #define IXAudio2_StopEngine(A) (A)->StopEngine()
    
    #define IXAudio2MasteringVoice_DestroyVoice(A) (A)->DestroyVoice()
    
    #define IXAudio2SourceVoice_DestroyVoice(A) (A)->DestroyVoice()
    #define IXAudio2SourceVoice_Discontinuity(A) (A)->Discontinuity()
    #define IXAudio2SourceVoice_FlushSourceBuffers(A) (A)->FlushSourceBuffers()
    #define IXAudio2SourceVoice_GetState(A, B) (A)->GetState((B))
    #define IXAudio2SourceVoice_Start(A, B, C) (A)->Start((B), (C))
    #define IXAudio2SourceVoice_Stop(A, B, C) (A)->Stop((B), (C))
    #define IXAudio2SourceVoice_SubmitSourceBuffer(A, B, C) (A)->SubmitSourceBuffer((B), (C))
    */
    #endif // ifdef __cplusplus