windows: Try to unify all the GUID comparison code into a core helper function. There are likely several more I missed.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
diff --git a/src/core/windows/SDL_windows.c b/src/core/windows/SDL_windows.c
index e98a1c9..32c4d11 100644
--- a/src/core/windows/SDL_windows.c
+++ b/src/core/windows/SDL_windows.c
@@ -158,7 +158,7 @@ WIN_LookupAudioDeviceName(const WCHAR *name, const GUID *guid)
DWORD len = 0;
char *retval = NULL;
- if (SDL_memcmp(guid, &nullguid, sizeof (*guid)) == 0) {
+ if (WIN_IsEqualGUID(guid, &nullguid)) {
return WIN_StringToUTF8(name); /* No GUID, go with what we've got. */
}
@@ -202,6 +202,18 @@ WIN_LookupAudioDeviceName(const WCHAR *name, const GUID *guid)
#endif /* if __WINRT__ / else */
}
+BOOL
+WIN_IsEqualGUID(const GUID * a, const GUID * b)
+{
+ return (SDL_memcmp(a, b, sizeof (*a)) == 0);
+}
+
+BOOL
+WIN_IsEqualIID(REFIID a, REFIID b)
+{
+ return (SDL_memcmp(a, b, sizeof (*a)) == 0);
+}
+
#endif /* __WIN32__ || __WINRT__ */
/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/core/windows/SDL_windows.h b/src/core/windows/SDL_windows.h
index bae04ed..040da6c 100644
--- a/src/core/windows/SDL_windows.h
+++ b/src/core/windows/SDL_windows.h
@@ -62,6 +62,10 @@ extern BOOL WIN_IsWindowsVistaOrGreater(void);
/* You need to SDL_free() the result of this call. */
extern char *WIN_LookupAudioDeviceName(const WCHAR *name, const GUID *guid);
+/* Checks to see if two GUID are the same. */
+extern BOOL WIN_IsEqualGUID(const GUID * a, const GUID * b);
+extern BOOL WIN_IsEqualIID(REFIID a, REFIID b);
+
#endif /* _INCLUDED_WINDOWS_H */
/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/haptic/windows/SDL_dinputhaptic.c b/src/haptic/windows/SDL_dinputhaptic.c
index 59ef956..7fdb6dc 100644
--- a/src/haptic/windows/SDL_dinputhaptic.c
+++ b/src/haptic/windows/SDL_dinputhaptic.c
@@ -59,15 +59,6 @@ DI_SetError(const char *str, HRESULT err)
}
/*
- * Checks to see if two GUID are the same.
- */
-static int
-DI_GUIDIsSame(const GUID * a, const GUID * b)
-{
- return (SDL_memcmp(a, b, sizeof (GUID)) == 0);
-}
-
-/*
* Callback to find the haptic devices.
*/
static BOOL CALLBACK
@@ -219,17 +210,17 @@ DI_DeviceObjectCallback(LPCDIDEVICEOBJECTINSTANCE dev, LPVOID pvRef)
if ((dev->dwType & DIDFT_AXIS) && (dev->dwFlags & DIDOI_FFACTUATOR)) {
const GUID *guid = &dev->guidType;
DWORD offset = 0;
- if (DI_GUIDIsSame(guid, &GUID_XAxis)) {
+ if (WIN_IsEqualGUID(guid, &GUID_XAxis)) {
offset = DIJOFS_X;
- } else if (DI_GUIDIsSame(guid, &GUID_YAxis)) {
+ } else if (WIN_IsEqualGUID(guid, &GUID_YAxis)) {
offset = DIJOFS_Y;
- } else if (DI_GUIDIsSame(guid, &GUID_ZAxis)) {
+ } else if (WIN_IsEqualGUID(guid, &GUID_ZAxis)) {
offset = DIJOFS_Z;
- } else if (DI_GUIDIsSame(guid, &GUID_RxAxis)) {
+ } else if (WIN_IsEqualGUID(guid, &GUID_RxAxis)) {
offset = DIJOFS_RX;
- } else if (DI_GUIDIsSame(guid, &GUID_RyAxis)) {
+ } else if (WIN_IsEqualGUID(guid, &GUID_RyAxis)) {
offset = DIJOFS_RY;
- } else if (DI_GUIDIsSame(guid, &GUID_RzAxis)) {
+ } else if (WIN_IsEqualGUID(guid, &GUID_RzAxis)) {
offset = DIJOFS_RZ;
} else {
return DIENUM_CONTINUE; /* can't use this, go on. */
@@ -251,7 +242,7 @@ DI_DeviceObjectCallback(LPCDIDEVICEOBJECTINSTANCE dev, LPVOID pvRef)
* Callback to get all supported effects.
*/
#define EFFECT_TEST(e,s) \
-if (DI_GUIDIsSame(&pei->guid, &(e))) \
+if (WIN_IsEqualGUID(&pei->guid, &(e))) \
haptic->supported |= (s)
static BOOL CALLBACK
DI_EffectCallback(LPCDIEFFECTINFO pei, LPVOID pv)
@@ -481,7 +472,7 @@ SDL_DINPUT_JoystickSameHaptic(SDL_Haptic * haptic, SDL_Joystick * joystick)
return 0;
}
- return DI_GUIDIsSame(&hap_instance.guidInstance, &joy_instance.guidInstance);
+ return WIN_IsEqualGUID(&hap_instance.guidInstance, &joy_instance.guidInstance);
}
int
@@ -500,7 +491,7 @@ SDL_DINPUT_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick)
/* Since it comes from a joystick we have to try to match it with a haptic device on our haptic list. */
for (item = SDL_hapticlist; item != NULL; item = item->next) {
- if (!item->bXInputHaptic && DI_GUIDIsSame(&item->instance.guidInstance, &joy_instance.guidInstance)) {
+ if (!item->bXInputHaptic && WIN_IsEqualGUID(&item->instance.guidInstance, &joy_instance.guidInstance)) {
haptic->index = index;
return SDL_DINPUT_HapticOpenFromDevice(haptic, joystick->hwdata->InputDevice, SDL_TRUE);
}
diff --git a/src/video/windows/SDL_windowskeyboard.c b/src/video/windows/SDL_windowskeyboard.c
index b0a39e8..4161e56 100644
--- a/src/video/windows/SDL_windowskeyboard.c
+++ b/src/video/windows/SDL_windowskeyboard.c
@@ -331,9 +331,6 @@ static DWORD IME_GetId(SDL_VideoData *videodata, UINT uIndex);
static void IME_SendEditingEvent(SDL_VideoData *videodata);
static void IME_DestroyTextures(SDL_VideoData *videodata);
-#define SDL_IsEqualIID(riid1, riid2) SDL_IsEqualGUID(riid1, riid2)
-#define SDL_IsEqualGUID(rguid1, rguid2) (!SDL_memcmp(rguid1, rguid2, sizeof(GUID)))
-
static SDL_bool UILess_SetupSinks(SDL_VideoData *videodata);
static void UILess_ReleaseSinks(SDL_VideoData *videodata);
static void UILess_EnableUIUpdates(SDL_VideoData *videodata);
@@ -1052,9 +1049,9 @@ STDMETHODIMP UIElementSink_QueryInterface(TSFSink *sink, REFIID riid, PVOID *ppv
return E_INVALIDARG;
*ppv = 0;
- if (SDL_IsEqualIID(riid, &IID_IUnknown))
+ if (WIN_IsEqualIID(riid, &IID_IUnknown))
*ppv = (IUnknown *)sink;
- else if (SDL_IsEqualIID(riid, &IID_ITfUIElementSink))
+ else if (WIN_IsEqualIID(riid, &IID_ITfUIElementSink))
*ppv = (ITfUIElementSink *)sink;
if (*ppv) {
@@ -1158,9 +1155,9 @@ STDMETHODIMP IPPASink_QueryInterface(TSFSink *sink, REFIID riid, PVOID *ppv)
return E_INVALIDARG;
*ppv = 0;
- if (SDL_IsEqualIID(riid, &IID_IUnknown))
+ if (WIN_IsEqualIID(riid, &IID_IUnknown))
*ppv = (IUnknown *)sink;
- else if (SDL_IsEqualIID(riid, &IID_ITfInputProcessorProfileActivationSink))
+ else if (WIN_IsEqualIID(riid, &IID_ITfInputProcessorProfileActivationSink))
*ppv = (ITfInputProcessorProfileActivationSink *)sink;
if (*ppv) {
@@ -1174,8 +1171,8 @@ STDMETHODIMP IPPASink_OnActivated(TSFSink *sink, DWORD dwProfileType, LANGID lan
{
static const GUID TF_PROFILE_DAYI = { 0x037B2C25, 0x480C, 0x4D7F, { 0xB0, 0x27, 0xD6, 0xCA, 0x6B, 0x69, 0x78, 0x8A } };
SDL_VideoData *videodata = (SDL_VideoData *)sink->data;
- videodata->ime_candlistindexbase = SDL_IsEqualGUID(&TF_PROFILE_DAYI, guidProfile) ? 0 : 1;
- if (SDL_IsEqualIID(catid, &GUID_TFCAT_TIP_KEYBOARD) && (dwFlags & TF_IPSINK_FLAG_ACTIVE))
+ videodata->ime_candlistindexbase = WIN_IsEqualGUID(&TF_PROFILE_DAYI, guidProfile) ? 0 : 1;
+ if (WIN_IsEqualIID(catid, &GUID_TFCAT_TIP_KEYBOARD) && (dwFlags & TF_IPSINK_FLAG_ACTIVE))
IME_InputLangChanged((SDL_VideoData *)sink->data);
IME_HideCandidateList(videodata);