From af69be5346912005b8ae6a08c93ed4655e316170 Mon Sep 17 00:00:00 2001 From: ed Date: Mon, 30 Nov 2020 12:09:49 +0000 Subject: [PATCH] Windows: Tidied up the usage of the JUCE_COMCALL, JUCE_COMCLASS, and JUCE_IUNKNOWNCLASS macros --- .../native/juce_win32_Midi.cpp | 6 ++--- .../native/juce_win32_WASAPI.cpp | 17 +++++--------- .../juce_core/native/juce_win32_ComSmartPtr.h | 11 +++++----- .../juce_core/native/juce_win32_Threads.cpp | 4 ++-- .../native/juce_win32_DirectWriteTypeface.cpp | 12 +++++----- .../native/juce_win32_Windowing.cpp | 14 ++++++------ .../native/juce_win32_CameraDevice.h | 22 +++++++++---------- 7 files changed, 40 insertions(+), 46 deletions(-) diff --git a/modules/juce_audio_devices/native/juce_win32_Midi.cpp b/modules/juce_audio_devices/native/juce_win32_Midi.cpp index b2eeb1ac9a..064dec75d5 100644 --- a/modules/juce_audio_devices/native/juce_win32_Midi.cpp +++ b/modules/juce_audio_devices/native/juce_win32_Midi.cpp @@ -782,9 +782,9 @@ private: public: virtual ~DeviceCallbackHandler() {}; - virtual HRESULT addDevice (IDeviceInformation*) = 0; - virtual HRESULT removeDevice (IDeviceInformationUpdate*) = 0; - virtual HRESULT updateDevice (IDeviceInformationUpdate*) = 0; + JUCE_COMCALL addDevice (IDeviceInformation*) = 0; + JUCE_COMCALL removeDevice (IDeviceInformationUpdate*) = 0; + JUCE_COMCALL updateDevice (IDeviceInformationUpdate*) = 0; bool attach (HSTRING deviceSelector, DeviceInformationKind infoKind) { diff --git a/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp b/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp index 38daf1cdca..2bf72e9fa5 100755 --- a/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp +++ b/modules/juce_audio_devices/native/juce_win32_WASAPI.cpp @@ -116,9 +116,6 @@ bool check (HRESULT hr) #define KSDATAFORMAT_SUBTYPE_IEEE_FLOAT uuidFromString ("00000003-0000-0010-8000-00aa00389b71") #endif -#define JUCE_IUNKNOWNCLASS(name, guid) JUCE_COMCLASS(name, guid) : public IUnknown -#define JUCE_COMCALL virtual HRESULT STDMETHODCALLTYPE - enum EDataFlow { eRender = 0, @@ -337,10 +334,6 @@ JUCE_IUNKNOWNCLASS (IAudioSessionControl, "F4B1A599-7266-4319-A8CA-E70ACB11E8CD" JUCE_COMCALL UnregisterAudioSessionNotification (IAudioSessionEvents*) = 0; }; -#undef JUCE_COMCALL -#undef JUCE_COMCLASS -#undef JUCE_IUNKNOWNCLASS - //============================================================================== namespace WasapiClasses { @@ -1755,11 +1748,11 @@ private: ChangeNotificationClient (WASAPIAudioIODeviceType* d) : ComBaseClassHelper (0), device (d) {} - HRESULT STDMETHODCALLTYPE OnDeviceAdded (LPCWSTR) { return notify(); } - HRESULT STDMETHODCALLTYPE OnDeviceRemoved (LPCWSTR) { return notify(); } - HRESULT STDMETHODCALLTYPE OnDeviceStateChanged(LPCWSTR, DWORD) { return notify(); } - HRESULT STDMETHODCALLTYPE OnDefaultDeviceChanged (EDataFlow, ERole, LPCWSTR) { return notify(); } - HRESULT STDMETHODCALLTYPE OnPropertyValueChanged (LPCWSTR, const PROPERTYKEY) { return notify(); } + JUCE_COMRESULT OnDeviceAdded (LPCWSTR) { return notify(); } + JUCE_COMRESULT OnDeviceRemoved (LPCWSTR) { return notify(); } + JUCE_COMRESULT OnDeviceStateChanged(LPCWSTR, DWORD) { return notify(); } + JUCE_COMRESULT OnDefaultDeviceChanged (EDataFlow, ERole, LPCWSTR) { return notify(); } + JUCE_COMRESULT OnPropertyValueChanged (LPCWSTR, const PROPERTYKEY) { return notify(); } private: WeakReference device; diff --git a/modules/juce_core/native/juce_win32_ComSmartPtr.h b/modules/juce_core/native/juce_win32_ComSmartPtr.h index d0392781a2..828acb16bb 100644 --- a/modules/juce_core/native/juce_win32_ComSmartPtr.h +++ b/modules/juce_core/native/juce_win32_ComSmartPtr.h @@ -50,6 +50,10 @@ namespace juce #define JUCE_COMCLASS(name, guid) struct __declspec (uuid (guid)) name #endif +#define JUCE_IUNKNOWNCLASS(name, guid) JUCE_COMCLASS(name, guid) : public IUnknown +#define JUCE_COMRESULT HRESULT STDMETHODCALLTYPE +#define JUCE_COMCALL virtual HRESULT STDMETHODCALLTYPE + inline GUID uuidFromString (const char* s) noexcept { uint32 ints[4] = {}; @@ -153,9 +157,6 @@ private: ComClass** operator&() noexcept; // private to avoid it being used accidentally }; -//============================================================================== -#define JUCE_COMRESULT HRESULT __stdcall - //============================================================================== template class ComBaseClassHelperBase : public First, public ComClasses... @@ -164,8 +165,8 @@ public: ComBaseClassHelperBase (unsigned int initialRefCount) : refCount (initialRefCount) {} virtual ~ComBaseClassHelperBase() = default; - ULONG __stdcall AddRef() { return ++refCount; } - ULONG __stdcall Release() { auto r = --refCount; if (r == 0) delete this; return r; } + ULONG STDMETHODCALLTYPE AddRef() { return ++refCount; } + ULONG STDMETHODCALLTYPE Release() { auto r = --refCount; if (r == 0) delete this; return r; } protected: ULONG refCount; diff --git a/modules/juce_core/native/juce_win32_Threads.cpp b/modules/juce_core/native/juce_win32_Threads.cpp index 296ec45505..4a41481199 100644 --- a/modules/juce_core/native/juce_win32_Threads.cpp +++ b/modules/juce_core/native/juce_win32_Threads.cpp @@ -51,7 +51,7 @@ void CriticalSection::exit() const noexcept { LeaveCriticalSection ((CRI //============================================================================== void JUCE_API juce_threadEntryPoint (void*); -static unsigned int __stdcall threadEntryProc (void* userData) +static unsigned int STDMETHODCALLTYPE threadEntryProc (void* userData) { if (juce_messageWindowHandle != nullptr) AttachThreadInput (GetWindowThreadProcessId (juce_messageWindowHandle, nullptr), @@ -557,7 +557,7 @@ struct HighResolutionTimer::Pimpl private: unsigned int timerID; - static void __stdcall callbackFunction (UINT, UINT, DWORD_PTR userInfo, DWORD_PTR, DWORD_PTR) + static void STDMETHODCALLTYPE callbackFunction (UINT, UINT, DWORD_PTR userInfo, DWORD_PTR, DWORD_PTR) { if (Pimpl* const timer = reinterpret_cast (userInfo)) if (timer->periodMs != 0) diff --git a/modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp b/modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp index 31e39f081f..c9a38e2661 100644 --- a/modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp +++ b/modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp @@ -285,7 +285,7 @@ private: { PathGeometrySink() : ComBaseClassHelper (0) {} - void __stdcall AddBeziers (const D2D1_BEZIER_SEGMENT* beziers, UINT beziersCount) noexcept override + void STDMETHODCALLTYPE AddBeziers (const D2D1_BEZIER_SEGMENT* beziers, UINT beziersCount) noexcept override { for (UINT i = 0; i < beziersCount; ++i) path.cubicTo (convertPoint (beziers[i].point1), @@ -293,29 +293,29 @@ private: convertPoint (beziers[i].point3)); } - void __stdcall AddLines (const D2D1_POINT_2F* points, UINT pointsCount) noexcept override + void STDMETHODCALLTYPE AddLines (const D2D1_POINT_2F* points, UINT pointsCount) noexcept override { for (UINT i = 0; i < pointsCount; ++i) path.lineTo (convertPoint (points[i])); } - void __stdcall BeginFigure (D2D1_POINT_2F startPoint, D2D1_FIGURE_BEGIN) noexcept override + void STDMETHODCALLTYPE BeginFigure (D2D1_POINT_2F startPoint, D2D1_FIGURE_BEGIN) noexcept override { path.startNewSubPath (convertPoint (startPoint)); } - void __stdcall EndFigure (D2D1_FIGURE_END figureEnd) noexcept override + void STDMETHODCALLTYPE EndFigure (D2D1_FIGURE_END figureEnd) noexcept override { if (figureEnd == D2D1_FIGURE_END_CLOSED) path.closeSubPath(); } - void __stdcall SetFillMode (D2D1_FILL_MODE fillMode) noexcept override + void STDMETHODCALLTYPE SetFillMode (D2D1_FILL_MODE fillMode) noexcept override { path.setUsingNonZeroWinding (fillMode == D2D1_FILL_MODE_WINDING); } - void __stdcall SetSegmentFlags (D2D1_PATH_SEGMENT) noexcept override {} + void STDMETHODCALLTYPE SetSegmentFlags (D2D1_PATH_SEGMENT) noexcept override {} JUCE_COMRESULT Close() noexcept override { return S_OK; } Path path; diff --git a/modules/juce_gui_basics/native/juce_win32_Windowing.cpp b/modules/juce_gui_basics/native/juce_win32_Windowing.cpp index 30fa805000..9ba5ac5b25 100644 --- a/modules/juce_gui_basics/native/juce_win32_Windowing.cpp +++ b/modules/juce_gui_basics/native/juce_win32_Windowing.cpp @@ -1050,11 +1050,11 @@ namespace IconConverters } //============================================================================== -JUCE_COMCLASS (ITipInvocation, "37c994e7-432b-4834-a2f7-dce1f13b834b") : public IUnknown +JUCE_IUNKNOWNCLASS (ITipInvocation, "37c994e7-432b-4834-a2f7-dce1f13b834b") { static CLSID getCLSID() noexcept { return { 0x4ce576fa, 0x83dc, 0x4f88, { 0x95, 0x1c, 0x9d, 0x07, 0x82, 0xb4, 0xe3, 0x76 } }; } - virtual HRESULT STDMETHODCALLTYPE Toggle (HWND) = 0; + JUCE_COMCALL Toggle (HWND) = 0; }; struct OnScreenKeyboard : public DeletedAtShutdown, @@ -1150,14 +1150,14 @@ typedef HSTRING_PRIVATE* HSTRING; struct IInspectable : public IUnknown { - virtual HRESULT STDMETHODCALLTYPE GetIids (ULONG* ,IID**) = 0; - virtual HRESULT STDMETHODCALLTYPE GetRuntimeClassName (HSTRING*) = 0; - virtual HRESULT STDMETHODCALLTYPE GetTrustLevel (void*) = 0; + JUCE_COMCALL GetIids (ULONG* ,IID**) = 0; + JUCE_COMCALL GetRuntimeClassName (HSTRING*) = 0; + JUCE_COMCALL GetTrustLevel (void*) = 0; }; JUCE_COMCLASS (IUIViewSettingsInterop, "3694dbf9-8f68-44be-8ff5-195c98ede8a6") : public IInspectable { - virtual HRESULT STDMETHODCALLTYPE GetForWindow (HWND, REFIID, void**) = 0; + JUCE_COMCALL GetForWindow (HWND, REFIID, void**) = 0; }; JUCE_COMCLASS (IUIViewSettings, "c63657f6-8850-470d-88f8-455e16ea2c26") : public IInspectable @@ -1168,7 +1168,7 @@ JUCE_COMCLASS (IUIViewSettings, "c63657f6-8850-470d-88f8-455e16ea2c26") : publi Touch = 1 }; - virtual HRESULT STDMETHODCALLTYPE GetUserInteractionMode (UserInteractionMode*) = 0; + JUCE_COMCALL GetUserInteractionMode (UserInteractionMode*) = 0; }; diff --git a/modules/juce_video/native/juce_win32_CameraDevice.h b/modules/juce_video/native/juce_win32_CameraDevice.h index fac85c8002..008bf1ac92 100644 --- a/modules/juce_video/native/juce_win32_CameraDevice.h +++ b/modules/juce_video/native/juce_win32_CameraDevice.h @@ -25,19 +25,19 @@ interface ISampleGrabberCB : public IUnknown { - virtual STDMETHODIMP SampleCB (double, IMediaSample*) = 0; - virtual STDMETHODIMP BufferCB (double, BYTE*, long) = 0; + JUCE_COMCALL SampleCB (double, IMediaSample*) = 0; + JUCE_COMCALL BufferCB (double, BYTE*, long) = 0; }; interface ISampleGrabber : public IUnknown { - virtual HRESULT STDMETHODCALLTYPE SetOneShot (BOOL) = 0; - virtual HRESULT STDMETHODCALLTYPE SetMediaType (const AM_MEDIA_TYPE*) = 0; - virtual HRESULT STDMETHODCALLTYPE GetConnectedMediaType (AM_MEDIA_TYPE*) = 0; - virtual HRESULT STDMETHODCALLTYPE SetBufferSamples (BOOL) = 0; - virtual HRESULT STDMETHODCALLTYPE GetCurrentBuffer (long*, long*) = 0; - virtual HRESULT STDMETHODCALLTYPE GetCurrentSample (IMediaSample**) = 0; - virtual HRESULT STDMETHODCALLTYPE SetCallback (ISampleGrabberCB*, long) = 0; + JUCE_COMCALL SetOneShot (BOOL) = 0; + JUCE_COMCALL SetMediaType (const AM_MEDIA_TYPE*) = 0; + JUCE_COMCALL GetConnectedMediaType (AM_MEDIA_TYPE*) = 0; + JUCE_COMCALL SetBufferSamples (BOOL) = 0; + JUCE_COMCALL GetCurrentBuffer (long*, long*) = 0; + JUCE_COMCALL GetCurrentSample (IMediaSample**) = 0; + JUCE_COMCALL SetCallback (ISampleGrabberCB*, long) = 0; }; static const IID IID_ISampleGrabberCB = { 0x0579154A, 0x2B53, 0x4994, { 0xB0, 0xD0, 0xE7, 0x73, 0x14, 0x8E, 0xFF, 0x85 } }; @@ -532,9 +532,9 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster return ComBaseClassHelperBase::QueryInterface (refId, result); } - STDMETHODIMP SampleCB (double, IMediaSample*) { return E_FAIL; } + JUCE_COMRESULT SampleCB (double, IMediaSample*) { return E_FAIL; } - STDMETHODIMP BufferCB (double time, BYTE* buffer, long bufferSize) + JUCE_COMRESULT BufferCB (double time, BYTE* buffer, long bufferSize) { owner.handleFrame (time, buffer, bufferSize); return S_OK;