dinput: Use msvcrt memory allocation functions.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
87c7f1bdce
commit
f5b32121b1
|
@ -129,7 +129,7 @@ static HRESULT string_atow( const char *in, WCHAR **out )
|
||||||
if (!in) return DI_OK;
|
if (!in) return DI_OK;
|
||||||
|
|
||||||
len = MultiByteToWideChar( CP_ACP, 0, in, -1, NULL, 0 );
|
len = MultiByteToWideChar( CP_ACP, 0, in, -1, NULL, 0 );
|
||||||
if (!(*out = HeapAlloc( GetProcessHeap(), 0, len * sizeof(WCHAR) ))) return DIERR_OUTOFMEMORY;
|
if (!(*out = malloc( len * sizeof(WCHAR) ))) return DIERR_OUTOFMEMORY;
|
||||||
|
|
||||||
MultiByteToWideChar( CP_ACP, 0, in, -1, *out, len );
|
MultiByteToWideChar( CP_ACP, 0, in, -1, *out, len );
|
||||||
return DI_OK;
|
return DI_OK;
|
||||||
|
@ -252,7 +252,7 @@ static HRESULT diconfiguredevicesparams_atow( const DICONFIGUREDEVICESPARAMSA *i
|
||||||
len_a = name_a - in->lptszUserNames + 1;
|
len_a = name_a - in->lptszUserNames + 1;
|
||||||
len_w = MultiByteToWideChar( CP_ACP, 0, in->lptszUserNames, len_a, NULL, 0 );
|
len_w = MultiByteToWideChar( CP_ACP, 0, in->lptszUserNames, len_a, NULL, 0 );
|
||||||
|
|
||||||
out->lptszUserNames = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, len_w * sizeof(WCHAR) );
|
out->lptszUserNames = calloc( len_w, sizeof(WCHAR) );
|
||||||
if (!out->lptszUserNames) return DIERR_OUTOFMEMORY;
|
if (!out->lptszUserNames) return DIERR_OUTOFMEMORY;
|
||||||
|
|
||||||
MultiByteToWideChar( CP_ACP, 0, in->lptszUserNames, len_a, out->lptszUserNames, len_w );
|
MultiByteToWideChar( CP_ACP, 0, in->lptszUserNames, len_a, out->lptszUserNames, len_w );
|
||||||
|
@ -572,17 +572,17 @@ static HRESULT WINAPI dinput_device_a_BuildActionMap( IDirectInputDevice8A *ifac
|
||||||
if (FAILED(hr = string_atow( username_a, &username_w ))) return hr;
|
if (FAILED(hr = string_atow( username_a, &username_w ))) return hr;
|
||||||
|
|
||||||
format_w.dwNumActions = format_a->dwNumActions;
|
format_w.dwNumActions = format_a->dwNumActions;
|
||||||
format_w.rgoAction = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, format_a->dwNumActions * sizeof(DIACTIONW) );
|
format_w.rgoAction = calloc( format_a->dwNumActions, sizeof(DIACTIONW) );
|
||||||
if (!format_w.rgoAction) hr = DIERR_OUTOFMEMORY;
|
if (!format_w.rgoAction) hr = DIERR_OUTOFMEMORY;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
diactionformat_atow( format_a, &format_w, FALSE );
|
diactionformat_atow( format_a, &format_w, FALSE );
|
||||||
hr = IDirectInputDevice8_BuildActionMap( iface_w, &format_w, username_w, flags );
|
hr = IDirectInputDevice8_BuildActionMap( iface_w, &format_w, username_w, flags );
|
||||||
diactionformat_wtoa( &format_w, format_a );
|
diactionformat_wtoa( &format_w, format_a );
|
||||||
HeapFree( GetProcessHeap(), 0, format_w.rgoAction );
|
free( format_w.rgoAction );
|
||||||
}
|
}
|
||||||
|
|
||||||
HeapFree( GetProcessHeap(), 0, username_w );
|
free( username_w );
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -601,17 +601,17 @@ static HRESULT WINAPI dinput_device_a_SetActionMap( IDirectInputDevice8A *iface_
|
||||||
if (FAILED(hr = string_atow( username_a, &username_w ))) return hr;
|
if (FAILED(hr = string_atow( username_a, &username_w ))) return hr;
|
||||||
|
|
||||||
format_w.dwNumActions = format_a->dwNumActions;
|
format_w.dwNumActions = format_a->dwNumActions;
|
||||||
format_w.rgoAction = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, format_a->dwNumActions * sizeof(DIACTIONW) );
|
format_w.rgoAction = calloc( format_a->dwNumActions, sizeof(DIACTIONW) );
|
||||||
if (!format_w.rgoAction) hr = DIERR_OUTOFMEMORY;
|
if (!format_w.rgoAction) hr = DIERR_OUTOFMEMORY;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
diactionformat_atow( format_a, &format_w, FALSE );
|
diactionformat_atow( format_a, &format_w, FALSE );
|
||||||
hr = IDirectInputDevice8_SetActionMap( iface_w, &format_w, username_w, flags );
|
hr = IDirectInputDevice8_SetActionMap( iface_w, &format_w, username_w, flags );
|
||||||
diactionformat_wtoa( &format_w, format_a );
|
diactionformat_wtoa( &format_w, format_a );
|
||||||
HeapFree( GetProcessHeap(), 0, format_w.rgoAction );
|
free( format_w.rgoAction );
|
||||||
}
|
}
|
||||||
|
|
||||||
HeapFree( GetProcessHeap(), 0, username_w );
|
free( username_w );
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -627,12 +627,12 @@ static HRESULT WINAPI dinput_device_a_GetImageInfo( IDirectInputDevice8A *iface_
|
||||||
if (header_a->dwSizeImageInfo != sizeof(DIDEVICEIMAGEINFOA)) return DIERR_INVALIDPARAM;
|
if (header_a->dwSizeImageInfo != sizeof(DIDEVICEIMAGEINFOA)) return DIERR_INVALIDPARAM;
|
||||||
|
|
||||||
header_w.dwBufferSize = (header_a->dwBufferSize / sizeof(DIDEVICEIMAGEINFOA)) * sizeof(DIDEVICEIMAGEINFOW);
|
header_w.dwBufferSize = (header_a->dwBufferSize / sizeof(DIDEVICEIMAGEINFOA)) * sizeof(DIDEVICEIMAGEINFOW);
|
||||||
header_w.lprgImageInfoArray = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, header_w.dwBufferSize );
|
header_w.lprgImageInfoArray = calloc( header_w.dwBufferSize, 1 );
|
||||||
if (!header_w.lprgImageInfoArray) return DIERR_OUTOFMEMORY;
|
if (!header_w.lprgImageInfoArray) return DIERR_OUTOFMEMORY;
|
||||||
|
|
||||||
hr = IDirectInputDevice8_GetImageInfo( iface_w, &header_w );
|
hr = IDirectInputDevice8_GetImageInfo( iface_w, &header_w );
|
||||||
dideviceimageinfoheader_wtoa( &header_w, header_a );
|
dideviceimageinfoheader_wtoa( &header_w, header_a );
|
||||||
HeapFree( GetProcessHeap(), 0, header_w.lprgImageInfoArray );
|
free( header_w.lprgImageInfoArray );
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -770,7 +770,7 @@ static HRESULT WINAPI dinput8_a_FindDevice( IDirectInput8A *iface_a, REFGUID gui
|
||||||
if (FAILED(hr = string_atow( name_a, &name_w ))) return hr;
|
if (FAILED(hr = string_atow( name_a, &name_w ))) return hr;
|
||||||
|
|
||||||
hr = IDirectInput8_FindDevice( iface_w, guid, name_w, instance_guid );
|
hr = IDirectInput8_FindDevice( iface_w, guid, name_w, instance_guid );
|
||||||
HeapFree( GetProcessHeap(), 0, name_w );
|
free( name_w );
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -805,17 +805,17 @@ static HRESULT WINAPI dinput8_a_EnumDevicesBySemantics( IDirectInput8A *iface_a,
|
||||||
if (FAILED(hr = string_atow( username_a, &username_w ))) return hr;
|
if (FAILED(hr = string_atow( username_a, &username_w ))) return hr;
|
||||||
|
|
||||||
format_w.dwNumActions = format_a->dwNumActions;
|
format_w.dwNumActions = format_a->dwNumActions;
|
||||||
format_w.rgoAction = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, format_a->dwNumActions * sizeof(DIACTIONW) );
|
format_w.rgoAction = calloc( format_a->dwNumActions, sizeof(DIACTIONW) );
|
||||||
if (!format_w.rgoAction) hr = DIERR_OUTOFMEMORY;
|
if (!format_w.rgoAction) hr = DIERR_OUTOFMEMORY;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
diactionformat_atow( format_a, &format_w, FALSE );
|
diactionformat_atow( format_a, &format_w, FALSE );
|
||||||
hr = IDirectInput8_EnumDevicesBySemantics( iface_w, username_w, &format_w, enum_devices_by_semantics_wtoa_callback,
|
hr = IDirectInput8_EnumDevicesBySemantics( iface_w, username_w, &format_w, enum_devices_by_semantics_wtoa_callback,
|
||||||
¶ms, flags );
|
¶ms, flags );
|
||||||
HeapFree( GetProcessHeap(), 0, format_w.rgoAction );
|
free( format_w.rgoAction );
|
||||||
}
|
}
|
||||||
|
|
||||||
HeapFree( GetProcessHeap(), 0, username_w );
|
free( username_w );
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -834,7 +834,7 @@ static HRESULT WINAPI dinput8_a_ConfigureDevices( IDirectInput8A *iface_a, LPDIC
|
||||||
if (FAILED(hr = diconfiguredevicesparams_atow( params_a, ¶ms_w ))) return hr;
|
if (FAILED(hr = diconfiguredevicesparams_atow( params_a, ¶ms_w ))) return hr;
|
||||||
|
|
||||||
format_w.dwNumActions = format_a->dwNumActions;
|
format_w.dwNumActions = format_a->dwNumActions;
|
||||||
format_w.rgoAction = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, format_a->dwNumActions * sizeof(DIACTIONW) );
|
format_w.rgoAction = calloc( format_a->dwNumActions, sizeof(DIACTIONW) );
|
||||||
if (!format_w.rgoAction) hr = DIERR_OUTOFMEMORY;
|
if (!format_w.rgoAction) hr = DIERR_OUTOFMEMORY;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -843,11 +843,15 @@ static HRESULT WINAPI dinput8_a_ConfigureDevices( IDirectInput8A *iface_a, LPDIC
|
||||||
|
|
||||||
if (SUCCEEDED(hr)) hr = IDirectInput8_ConfigureDevices( iface_w, callback, ¶ms_w, flags, ref );
|
if (SUCCEEDED(hr)) hr = IDirectInput8_ConfigureDevices( iface_w, callback, ¶ms_w, flags, ref );
|
||||||
|
|
||||||
if (!format_w.hInstString) for (i = 0; i < format_w.dwNumActions; ++i) HeapFree( GetProcessHeap(), 0, (void *)format_w.rgoAction[i].lptszActionName );
|
if (!format_w.hInstString)
|
||||||
HeapFree( GetProcessHeap(), 0, format_w.rgoAction );
|
{
|
||||||
|
for (i = 0; i < format_w.dwNumActions; ++i)
|
||||||
|
free( (void *)format_w.rgoAction[i].lptszActionName );
|
||||||
|
}
|
||||||
|
free( format_w.rgoAction );
|
||||||
}
|
}
|
||||||
|
|
||||||
HeapFree( GetProcessHeap(), 0, params_w.lptszUserNames );
|
free( params_w.lptszUserNames );
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -946,7 +950,7 @@ static HRESULT WINAPI dinput7_a_FindDevice( IDirectInput7A *iface_a, REFGUID gui
|
||||||
if (FAILED(hr = string_atow( name_a, &name_w ))) return hr;
|
if (FAILED(hr = string_atow( name_a, &name_w ))) return hr;
|
||||||
|
|
||||||
hr = IDirectInput7_FindDevice( iface_w, guid, name_w, instance_guid );
|
hr = IDirectInput7_FindDevice( iface_w, guid, name_w, instance_guid );
|
||||||
HeapFree( GetProcessHeap(), 0, name_w );
|
free( name_w );
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -190,7 +190,7 @@ static void init_devices(HWND dialog, IDirectInput8W *lpDI, DIDevicesData *data,
|
||||||
IDirectInput8_EnumDevicesBySemantics(lpDI, NULL, lpdiaf, count_devices, (LPVOID) data, 0);
|
IDirectInput8_EnumDevicesBySemantics(lpDI, NULL, lpdiaf, count_devices, (LPVOID) data, 0);
|
||||||
|
|
||||||
/* Allocate devices */
|
/* Allocate devices */
|
||||||
data->devices = HeapAlloc(GetProcessHeap(), 0, sizeof(DeviceData) * data->ndevices);
|
data->devices = malloc( sizeof(DeviceData) * data->ndevices );
|
||||||
|
|
||||||
/* Collect and insert */
|
/* Collect and insert */
|
||||||
data->ndevices = 0;
|
data->ndevices = 0;
|
||||||
|
@ -210,11 +210,11 @@ static void destroy_data(HWND dialog)
|
||||||
for (i=0; i < devices_data->ndevices; i++)
|
for (i=0; i < devices_data->ndevices; i++)
|
||||||
IDirectInputDevice8_Release(devices_data->devices[i].lpdid);
|
IDirectInputDevice8_Release(devices_data->devices[i].lpdid);
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, devices_data->devices);
|
free( devices_data->devices );
|
||||||
|
|
||||||
/* Free the backup LPDIACTIONFORMATW */
|
/* Free the backup LPDIACTIONFORMATW */
|
||||||
HeapFree(GetProcessHeap(), 0, data->original_lpdiaf->rgoAction);
|
free( data->original_lpdiaf->rgoAction );
|
||||||
HeapFree(GetProcessHeap(), 0, data->original_lpdiaf);
|
free( data->original_lpdiaf );
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fill_device_object_list(HWND dialog)
|
static void fill_device_object_list(HWND dialog)
|
||||||
|
@ -365,9 +365,9 @@ static INT_PTR CALLBACK ConfigureDevicesDlgProc(HWND dialog, UINT uMsg, WPARAM w
|
||||||
init_listview_columns(dialog);
|
init_listview_columns(dialog);
|
||||||
|
|
||||||
/* Create a backup action format for CANCEL and RESET operations */
|
/* Create a backup action format for CANCEL and RESET operations */
|
||||||
data->original_lpdiaf = HeapAlloc(GetProcessHeap(), 0, sizeof(*data->original_lpdiaf));
|
data->original_lpdiaf = malloc( sizeof(*data->original_lpdiaf) );
|
||||||
data->original_lpdiaf->dwNumActions = data->lpdiaf->dwNumActions;
|
data->original_lpdiaf->dwNumActions = data->lpdiaf->dwNumActions;
|
||||||
data->original_lpdiaf->rgoAction = HeapAlloc(GetProcessHeap(), 0, sizeof(DIACTIONW)*data->lpdiaf->dwNumActions);
|
data->original_lpdiaf->rgoAction = malloc( sizeof(DIACTIONW) * data->lpdiaf->dwNumActions );
|
||||||
copy_actions(data->original_lpdiaf, data->lpdiaf);
|
copy_actions(data->original_lpdiaf, data->lpdiaf);
|
||||||
|
|
||||||
/* Select the first device and show its actions */
|
/* Select the first device and show its actions */
|
||||||
|
|
|
@ -436,11 +436,11 @@ static void release_DataFormat( DataFormat *format )
|
||||||
{
|
{
|
||||||
TRACE("Deleting DataFormat: %p\n", format);
|
TRACE("Deleting DataFormat: %p\n", format);
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, format->dt);
|
free( format->dt );
|
||||||
format->dt = NULL;
|
format->dt = NULL;
|
||||||
HeapFree(GetProcessHeap(), 0, format->offsets);
|
free( format->offsets );
|
||||||
format->offsets = NULL;
|
format->offsets = NULL;
|
||||||
HeapFree(GetProcessHeap(), 0, format->user_df);
|
free( format->user_df );
|
||||||
format->user_df = NULL;
|
format->user_df = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -483,15 +483,12 @@ static HRESULT create_DataFormat(LPCDIDATAFORMAT asked_format, DataFormat *forma
|
||||||
DWORD next = 0;
|
DWORD next = 0;
|
||||||
|
|
||||||
if (!format->wine_df) return DIERR_INVALIDPARAM;
|
if (!format->wine_df) return DIERR_INVALIDPARAM;
|
||||||
done = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, asked_format->dwNumObjs * sizeof(int));
|
done = calloc( asked_format->dwNumObjs, sizeof(int) );
|
||||||
dt = HeapAlloc(GetProcessHeap(), 0, asked_format->dwNumObjs * sizeof(DataTransform));
|
dt = malloc( asked_format->dwNumObjs * sizeof(DataTransform) );
|
||||||
if (!dt || !done) goto failed;
|
if (!dt || !done) goto failed;
|
||||||
|
|
||||||
if (!(format->offsets = HeapAlloc(GetProcessHeap(), 0, format->wine_df->dwNumObjs * sizeof(int))))
|
if (!(format->offsets = malloc( format->wine_df->dwNumObjs * sizeof(int) ))) goto failed;
|
||||||
goto failed;
|
if (!(format->user_df = malloc( asked_format->dwSize ))) goto failed;
|
||||||
|
|
||||||
if (!(format->user_df = HeapAlloc(GetProcessHeap(), 0, asked_format->dwSize)))
|
|
||||||
goto failed;
|
|
||||||
memcpy(format->user_df, asked_format, asked_format->dwSize);
|
memcpy(format->user_df, asked_format, asked_format->dwSize);
|
||||||
|
|
||||||
TRACE("Creating DataTransform :\n");
|
TRACE("Creating DataTransform :\n");
|
||||||
|
@ -595,22 +592,22 @@ static HRESULT create_DataFormat(LPCDIDATAFORMAT asked_format, DataFormat *forma
|
||||||
format->internal_format_size = format->wine_df->dwDataSize;
|
format->internal_format_size = format->wine_df->dwDataSize;
|
||||||
format->size = index;
|
format->size = index;
|
||||||
if (same) {
|
if (same) {
|
||||||
HeapFree(GetProcessHeap(), 0, dt);
|
free( dt );
|
||||||
dt = NULL;
|
dt = NULL;
|
||||||
}
|
}
|
||||||
format->dt = dt;
|
format->dt = dt;
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, done);
|
free( done );
|
||||||
|
|
||||||
return DI_OK;
|
return DI_OK;
|
||||||
|
|
||||||
failed:
|
failed:
|
||||||
HeapFree(GetProcessHeap(), 0, done);
|
free( done );
|
||||||
HeapFree(GetProcessHeap(), 0, dt);
|
free( dt );
|
||||||
format->dt = NULL;
|
format->dt = NULL;
|
||||||
HeapFree(GetProcessHeap(), 0, format->offsets);
|
free( format->offsets );
|
||||||
format->offsets = NULL;
|
format->offsets = NULL;
|
||||||
HeapFree(GetProcessHeap(), 0, format->user_df);
|
free( format->user_df );
|
||||||
format->user_df = NULL;
|
format->user_df = NULL;
|
||||||
|
|
||||||
return DIERR_OUTOFMEMORY;
|
return DIERR_OUTOFMEMORY;
|
||||||
|
@ -691,14 +688,14 @@ static HKEY get_mapping_key(const WCHAR *device, const WCHAR *username, const WC
|
||||||
WCHAR *keyname;
|
WCHAR *keyname;
|
||||||
|
|
||||||
SIZE_T len = wcslen( subkey ) + wcslen( username ) + wcslen( device ) + wcslen( guid ) + 1;
|
SIZE_T len = wcslen( subkey ) + wcslen( username ) + wcslen( device ) + wcslen( guid ) + 1;
|
||||||
keyname = HeapAlloc( GetProcessHeap(), 0, sizeof(WCHAR) * len );
|
keyname = malloc( sizeof(WCHAR) * len );
|
||||||
swprintf( keyname, len, subkey, username, device, guid );
|
swprintf( keyname, len, subkey, username, device, guid );
|
||||||
|
|
||||||
/* The key used is HKCU\Software\Wine\DirectInput\Mappings\[username]\[device]\[mapping_guid] */
|
/* The key used is HKCU\Software\Wine\DirectInput\Mappings\[username]\[device]\[mapping_guid] */
|
||||||
if (RegCreateKeyW(HKEY_CURRENT_USER, keyname, &hkey))
|
if (RegCreateKeyW(HKEY_CURRENT_USER, keyname, &hkey))
|
||||||
hkey = 0;
|
hkey = 0;
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, keyname);
|
free( keyname );
|
||||||
|
|
||||||
return hkey;
|
return hkey;
|
||||||
}
|
}
|
||||||
|
@ -798,7 +795,7 @@ static BOOL set_app_data(IDirectInputDeviceImpl *dev, int offset, UINT_PTR app_d
|
||||||
if (num_actions == 0)
|
if (num_actions == 0)
|
||||||
{
|
{
|
||||||
num_actions = 1;
|
num_actions = 1;
|
||||||
action_map = HeapAlloc(GetProcessHeap(), 0, sizeof(ActionMap));
|
action_map = malloc( sizeof(ActionMap) );
|
||||||
if (!action_map) return FALSE;
|
if (!action_map) return FALSE;
|
||||||
target_map = &action_map[0];
|
target_map = &action_map[0];
|
||||||
}
|
}
|
||||||
|
@ -815,7 +812,7 @@ static BOOL set_app_data(IDirectInputDeviceImpl *dev, int offset, UINT_PTR app_d
|
||||||
if (!target_map)
|
if (!target_map)
|
||||||
{
|
{
|
||||||
num_actions++;
|
num_actions++;
|
||||||
action_map = HeapReAlloc(GetProcessHeap(), 0, action_map, sizeof(ActionMap)*num_actions);
|
action_map = realloc( action_map, sizeof(ActionMap) * num_actions );
|
||||||
if (!action_map) return FALSE;
|
if (!action_map) return FALSE;
|
||||||
target_map = &action_map[num_actions-1];
|
target_map = &action_map[num_actions-1];
|
||||||
}
|
}
|
||||||
|
@ -921,11 +918,11 @@ HRESULT _set_action_map(LPDIRECTINPUTDEVICE8W iface, LPDIACTIONFORMATW lpdiaf, L
|
||||||
if (num_actions == 0) return DI_NOEFFECT;
|
if (num_actions == 0) return DI_NOEFFECT;
|
||||||
|
|
||||||
/* Construct the dataformat and actionmap */
|
/* Construct the dataformat and actionmap */
|
||||||
obj_df = HeapAlloc(GetProcessHeap(), 0, sizeof(DIOBJECTDATAFORMAT)*num_actions);
|
obj_df = malloc( sizeof(DIOBJECTDATAFORMAT) * num_actions );
|
||||||
data_format.rgodf = (LPDIOBJECTDATAFORMAT)obj_df;
|
data_format.rgodf = (LPDIOBJECTDATAFORMAT)obj_df;
|
||||||
data_format.dwNumObjs = num_actions;
|
data_format.dwNumObjs = num_actions;
|
||||||
|
|
||||||
action_map = HeapAlloc(GetProcessHeap(), 0, sizeof(ActionMap)*num_actions);
|
action_map = malloc( sizeof(ActionMap) * num_actions );
|
||||||
|
|
||||||
for (i = 0; i < lpdiaf->dwNumActions; i++)
|
for (i = 0; i < lpdiaf->dwNumActions; i++)
|
||||||
{
|
{
|
||||||
|
@ -956,7 +953,7 @@ HRESULT _set_action_map(LPDIRECTINPUTDEVICE8W iface, LPDIACTIONFORMATW lpdiaf, L
|
||||||
This->action_map = action_map;
|
This->action_map = action_map;
|
||||||
This->num_actions = num_actions;
|
This->num_actions = num_actions;
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, obj_df);
|
free( obj_df );
|
||||||
|
|
||||||
/* Set the device properties according to the action format */
|
/* Set the device properties according to the action format */
|
||||||
dpr.diph.dwSize = sizeof(DIPROPRANGE);
|
dpr.diph.dwSize = sizeof(DIPROPRANGE);
|
||||||
|
@ -1121,7 +1118,7 @@ HRESULT WINAPI IDirectInputDevice2WImpl_SetDataFormat(LPDIRECTINPUTDEVICE8W ifac
|
||||||
|
|
||||||
EnterCriticalSection(&This->crit);
|
EnterCriticalSection(&This->crit);
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, This->action_map);
|
free( This->action_map );
|
||||||
This->action_map = NULL;
|
This->action_map = NULL;
|
||||||
This->num_actions = 0;
|
This->num_actions = 0;
|
||||||
|
|
||||||
|
@ -1208,21 +1205,21 @@ ULONG WINAPI IDirectInputDevice2WImpl_Release(LPDIRECTINPUTDEVICE8W iface)
|
||||||
/* Reset the FF state, free all effects, etc */
|
/* Reset the FF state, free all effects, etc */
|
||||||
IDirectInputDevice8_SendForceFeedbackCommand(iface, DISFFC_RESET);
|
IDirectInputDevice8_SendForceFeedbackCommand(iface, DISFFC_RESET);
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, This->data_queue);
|
free( This->data_queue );
|
||||||
|
|
||||||
/* Free data format */
|
/* Free data format */
|
||||||
HeapFree(GetProcessHeap(), 0, This->data_format.wine_df->rgodf);
|
free( This->data_format.wine_df->rgodf );
|
||||||
HeapFree(GetProcessHeap(), 0, This->data_format.wine_df);
|
free( This->data_format.wine_df );
|
||||||
release_DataFormat(&This->data_format);
|
release_DataFormat(&This->data_format);
|
||||||
|
|
||||||
/* Free action mapping */
|
/* Free action mapping */
|
||||||
HeapFree(GetProcessHeap(), 0, This->action_map);
|
free( This->action_map );
|
||||||
|
|
||||||
IDirectInput_Release(&This->dinput->IDirectInput7A_iface);
|
IDirectInput_Release(&This->dinput->IDirectInput7A_iface);
|
||||||
This->crit.DebugInfo->Spare[0] = 0;
|
This->crit.DebugInfo->Spare[0] = 0;
|
||||||
DeleteCriticalSection(&This->crit);
|
DeleteCriticalSection(&This->crit);
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, This);
|
free( This );
|
||||||
|
|
||||||
return ref;
|
return ref;
|
||||||
}
|
}
|
||||||
|
@ -1405,10 +1402,9 @@ HRESULT WINAPI IDirectInputDevice2WImpl_SetProperty(
|
||||||
|
|
||||||
This->buffersize = pd->dwData;
|
This->buffersize = pd->dwData;
|
||||||
This->queue_len = min(This->buffersize, 1024);
|
This->queue_len = min(This->buffersize, 1024);
|
||||||
HeapFree(GetProcessHeap(), 0, This->data_queue);
|
free( This->data_queue );
|
||||||
|
|
||||||
This->data_queue = !This->queue_len ? NULL : HeapAlloc(GetProcessHeap(), 0,
|
This->data_queue = This->queue_len ? malloc( This->queue_len * sizeof(DIDEVICEOBJECTDATA) ) : NULL;
|
||||||
This->queue_len * sizeof(DIDEVICEOBJECTDATA));
|
|
||||||
This->queue_head = This->queue_tail = This->overflow = 0;
|
This->queue_head = This->queue_tail = This->overflow = 0;
|
||||||
|
|
||||||
LeaveCriticalSection(&This->crit);
|
LeaveCriticalSection(&This->crit);
|
||||||
|
@ -1431,8 +1427,7 @@ HRESULT WINAPI IDirectInputDevice2WImpl_SetProperty(
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!found && (device_player =
|
if (!found && (device_player = malloc( sizeof(struct DevicePlayer) )))
|
||||||
HeapAlloc(GetProcessHeap(), 0, sizeof(struct DevicePlayer))))
|
|
||||||
{
|
{
|
||||||
list_add_tail(&This->dinput->device_players, &device_player->entry);
|
list_add_tail(&This->dinput->device_players, &device_player->entry);
|
||||||
device_player->instance_guid = This->guid;
|
device_player->instance_guid = This->guid;
|
||||||
|
@ -1734,10 +1729,10 @@ HRESULT direct_input_device_alloc( SIZE_T size, const IDirectInputDevice8WVtbl *
|
||||||
IDirectInputDeviceImpl *This;
|
IDirectInputDeviceImpl *This;
|
||||||
DIDATAFORMAT *format;
|
DIDATAFORMAT *format;
|
||||||
|
|
||||||
if (!(This = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, size ))) return DIERR_OUTOFMEMORY;
|
if (!(This = calloc( 1, size ))) return DIERR_OUTOFMEMORY;
|
||||||
if (!(format = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*format) )))
|
if (!(format = calloc( 1, sizeof(*format) )))
|
||||||
{
|
{
|
||||||
HeapFree( GetProcessHeap(), 0, This );
|
free( This );
|
||||||
return DIERR_OUTOFMEMORY;
|
return DIERR_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -121,7 +121,7 @@ void dinput_hooks_unacquire_device(LPDIRECTINPUTDEVICE8W iface)
|
||||||
|
|
||||||
static HRESULT create_directinput_instance(REFIID riid, LPVOID *ppDI, IDirectInputImpl **out)
|
static HRESULT create_directinput_instance(REFIID riid, LPVOID *ppDI, IDirectInputImpl **out)
|
||||||
{
|
{
|
||||||
IDirectInputImpl *This = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectInputImpl) );
|
IDirectInputImpl *This = calloc( 1, sizeof(IDirectInputImpl) );
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
if (!This)
|
if (!This)
|
||||||
|
@ -136,7 +136,7 @@ static HRESULT create_directinput_instance(REFIID riid, LPVOID *ppDI, IDirectInp
|
||||||
hr = IDirectInput_QueryInterface( &This->IDirectInput7A_iface, riid, ppDI );
|
hr = IDirectInput_QueryInterface( &This->IDirectInput7A_iface, riid, ppDI );
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
{
|
{
|
||||||
HeapFree( GetProcessHeap(), 0, This );
|
free( This );
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -412,7 +412,7 @@ static ULONG WINAPI IDirectInputWImpl_Release( IDirectInput7W *iface )
|
||||||
if (ref == 0)
|
if (ref == 0)
|
||||||
{
|
{
|
||||||
uninitialize_directinput_instance( This );
|
uninitialize_directinput_instance( This );
|
||||||
HeapFree( GetProcessHeap(), 0, This );
|
free( This );
|
||||||
}
|
}
|
||||||
|
|
||||||
return ref;
|
return ref;
|
||||||
|
@ -547,7 +547,7 @@ static void uninitialize_directinput_instance(IDirectInputImpl *This)
|
||||||
|
|
||||||
LIST_FOR_EACH_ENTRY_SAFE( device_player, device_player2,
|
LIST_FOR_EACH_ENTRY_SAFE( device_player, device_player2,
|
||||||
&This->device_players, struct DevicePlayer, entry )
|
&This->device_players, struct DevicePlayer, entry )
|
||||||
HeapFree(GetProcessHeap(), 0, device_player);
|
free( device_player );
|
||||||
|
|
||||||
check_hook_thread();
|
check_hook_thread();
|
||||||
|
|
||||||
|
@ -833,10 +833,7 @@ static HRESULT WINAPI IDirectInput8WImpl_EnumDevicesBySemantics(
|
||||||
if (enumSuccess == S_OK &&
|
if (enumSuccess == S_OK &&
|
||||||
should_enumerate_device(ptszUserName, dwFlags, &This->device_players, &didevi.guidInstance))
|
should_enumerate_device(ptszUserName, dwFlags, &This->device_players, &didevi.guidInstance))
|
||||||
{
|
{
|
||||||
if (device_count++)
|
didevis = realloc( didevis, sizeof(DIDEVICEINSTANCEW) * device_count++ );
|
||||||
didevis = HeapReAlloc(GetProcessHeap(), 0, didevis, sizeof(DIDEVICEINSTANCEW)*device_count);
|
|
||||||
else
|
|
||||||
didevis = HeapAlloc(GetProcessHeap(), 0, sizeof(DIDEVICEINSTANCEW)*device_count);
|
|
||||||
didevis[device_count-1] = didevi;
|
didevis[device_count-1] = didevi;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -860,14 +857,14 @@ static HRESULT WINAPI IDirectInput8WImpl_EnumDevicesBySemantics(
|
||||||
|
|
||||||
if (lpCallback(&didevis[i], lpdid, callbackFlags, --remain, pvRef) == DIENUM_STOP)
|
if (lpCallback(&didevis[i], lpdid, callbackFlags, --remain, pvRef) == DIENUM_STOP)
|
||||||
{
|
{
|
||||||
HeapFree(GetProcessHeap(), 0, didevis);
|
free( didevis );
|
||||||
IDirectInputDevice_Release(lpdid);
|
IDirectInputDevice_Release(lpdid);
|
||||||
return DI_OK;
|
return DI_OK;
|
||||||
}
|
}
|
||||||
IDirectInputDevice_Release(lpdid);
|
IDirectInputDevice_Release(lpdid);
|
||||||
}
|
}
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, didevis);
|
free( didevis );
|
||||||
|
|
||||||
if (dwFlags & DIEDBSFL_FORCEFEEDBACK) return DI_OK;
|
if (dwFlags & DIEDBSFL_FORCEFEEDBACK) return DI_OK;
|
||||||
|
|
||||||
|
|
|
@ -593,10 +593,10 @@ static ULONG hid_joystick_private_decref( struct hid_joystick *impl )
|
||||||
|
|
||||||
if (!(ref = IDirectInputDevice2WImpl_Release( &impl->base.IDirectInputDevice8W_iface )))
|
if (!(ref = IDirectInputDevice2WImpl_Release( &impl->base.IDirectInputDevice8W_iface )))
|
||||||
{
|
{
|
||||||
HeapFree( GetProcessHeap(), 0, tmp.usages_buf );
|
free( tmp.usages_buf );
|
||||||
HeapFree( GetProcessHeap(), 0, tmp.output_report_buf );
|
free( tmp.output_report_buf );
|
||||||
HeapFree( GetProcessHeap(), 0, tmp.input_report_buf );
|
free( tmp.input_report_buf );
|
||||||
HeapFree( GetProcessHeap(), 0, tmp.input_extra_caps );
|
free( tmp.input_extra_caps );
|
||||||
HidD_FreePreparsedData( tmp.preparsed );
|
HidD_FreePreparsedData( tmp.preparsed );
|
||||||
CloseHandle( tmp.base.read_event );
|
CloseHandle( tmp.base.read_event );
|
||||||
CloseHandle( tmp.device );
|
CloseHandle( tmp.device );
|
||||||
|
@ -2287,18 +2287,18 @@ static HRESULT hid_joystick_create_device( IDirectInputImpl *dinput, const GUID
|
||||||
preparsed = (struct hid_preparsed_data *)impl->preparsed;
|
preparsed = (struct hid_preparsed_data *)impl->preparsed;
|
||||||
|
|
||||||
size = preparsed->input_caps_count * sizeof(struct extra_caps);
|
size = preparsed->input_caps_count * sizeof(struct extra_caps);
|
||||||
if (!(extra = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, size ))) goto failed;
|
if (!(extra = calloc( 1, size ))) goto failed;
|
||||||
impl->input_extra_caps = extra;
|
impl->input_extra_caps = extra;
|
||||||
|
|
||||||
size = impl->caps.InputReportByteLength;
|
size = impl->caps.InputReportByteLength;
|
||||||
if (!(buffer = HeapAlloc( GetProcessHeap(), 0, size ))) goto failed;
|
if (!(buffer = malloc( size ))) goto failed;
|
||||||
impl->input_report_buf = buffer;
|
impl->input_report_buf = buffer;
|
||||||
size = impl->caps.OutputReportByteLength;
|
size = impl->caps.OutputReportByteLength;
|
||||||
if (!(buffer = HeapAlloc( GetProcessHeap(), 0, size ))) goto failed;
|
if (!(buffer = malloc( size ))) goto failed;
|
||||||
impl->output_report_buf = buffer;
|
impl->output_report_buf = buffer;
|
||||||
impl->usages_count = HidP_MaxUsageListLength( HidP_Input, 0, impl->preparsed );
|
impl->usages_count = HidP_MaxUsageListLength( HidP_Input, 0, impl->preparsed );
|
||||||
size = impl->usages_count * sizeof(USAGE_AND_PAGE);
|
size = impl->usages_count * sizeof(USAGE_AND_PAGE);
|
||||||
if (!(usages = HeapAlloc( GetProcessHeap(), 0, size ))) goto failed;
|
if (!(usages = malloc( size ))) goto failed;
|
||||||
impl->usages_buf = usages;
|
impl->usages_buf = usages;
|
||||||
|
|
||||||
enum_objects( impl, &filter, DIDFT_ALL, init_objects, NULL );
|
enum_objects( impl, &filter, DIDFT_ALL, init_objects, NULL );
|
||||||
|
@ -2350,7 +2350,7 @@ static HRESULT hid_joystick_create_device( IDirectInputImpl *dinput, const GUID
|
||||||
}
|
}
|
||||||
|
|
||||||
size = format->dwNumObjs * sizeof(*format->rgodf);
|
size = format->dwNumObjs * sizeof(*format->rgodf);
|
||||||
if (!(format->rgodf = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, size ))) goto failed;
|
if (!(format->rgodf = calloc( 1, size ))) goto failed;
|
||||||
format->dwSize = sizeof(*format);
|
format->dwSize = sizeof(*format);
|
||||||
format->dwObjSize = sizeof(*format->rgodf);
|
format->dwObjSize = sizeof(*format->rgodf);
|
||||||
format->dwFlags = DIDF_ABSAXIS;
|
format->dwFlags = DIDF_ABSAXIS;
|
||||||
|
@ -2419,11 +2419,11 @@ static ULONG WINAPI hid_joystick_effect_Release( IDirectInputEffect *iface )
|
||||||
list_remove( &impl->entry );
|
list_remove( &impl->entry );
|
||||||
LeaveCriticalSection( &impl->joystick->base.crit );
|
LeaveCriticalSection( &impl->joystick->base.crit );
|
||||||
hid_joystick_private_decref( impl->joystick );
|
hid_joystick_private_decref( impl->joystick );
|
||||||
HeapFree( GetProcessHeap(), 0, impl->type_specific_buf[1] );
|
free( impl->type_specific_buf[1] );
|
||||||
HeapFree( GetProcessHeap(), 0, impl->type_specific_buf[0] );
|
free( impl->type_specific_buf[0] );
|
||||||
HeapFree( GetProcessHeap(), 0, impl->effect_update_buf );
|
free( impl->effect_update_buf );
|
||||||
HeapFree( GetProcessHeap(), 0, impl->effect_control_buf );
|
free( impl->effect_control_buf );
|
||||||
HeapFree( GetProcessHeap(), 0, impl );
|
free( impl );
|
||||||
}
|
}
|
||||||
return ref;
|
return ref;
|
||||||
}
|
}
|
||||||
|
@ -3251,8 +3251,7 @@ static HRESULT hid_joystick_effect_create( struct hid_joystick *joystick, IDirec
|
||||||
struct hid_joystick_effect *impl;
|
struct hid_joystick_effect *impl;
|
||||||
ULONG report_len;
|
ULONG report_len;
|
||||||
|
|
||||||
if (!(impl = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*impl) )))
|
if (!(impl = calloc( 1, sizeof(*impl) ))) return DIERR_OUTOFMEMORY;
|
||||||
return DIERR_OUTOFMEMORY;
|
|
||||||
impl->IDirectInputEffect_iface.lpVtbl = &hid_joystick_effect_vtbl;
|
impl->IDirectInputEffect_iface.lpVtbl = &hid_joystick_effect_vtbl;
|
||||||
impl->ref = 1;
|
impl->ref = 1;
|
||||||
impl->joystick = joystick;
|
impl->joystick = joystick;
|
||||||
|
@ -3263,10 +3262,10 @@ static HRESULT hid_joystick_effect_create( struct hid_joystick *joystick, IDirec
|
||||||
LeaveCriticalSection( &joystick->base.crit );
|
LeaveCriticalSection( &joystick->base.crit );
|
||||||
|
|
||||||
report_len = joystick->caps.OutputReportByteLength;
|
report_len = joystick->caps.OutputReportByteLength;
|
||||||
if (!(impl->effect_control_buf = HeapAlloc( GetProcessHeap(), 0, report_len ))) goto failed;
|
if (!(impl->effect_control_buf = malloc( report_len ))) goto failed;
|
||||||
if (!(impl->effect_update_buf = HeapAlloc( GetProcessHeap(), 0, report_len ))) goto failed;
|
if (!(impl->effect_update_buf = malloc( report_len ))) goto failed;
|
||||||
if (!(impl->type_specific_buf[0] = HeapAlloc( GetProcessHeap(), 0, report_len ))) goto failed;
|
if (!(impl->type_specific_buf[0] = malloc( report_len ))) goto failed;
|
||||||
if (!(impl->type_specific_buf[1] = HeapAlloc( GetProcessHeap(), 0, report_len ))) goto failed;
|
if (!(impl->type_specific_buf[1] = malloc( report_len ))) goto failed;
|
||||||
|
|
||||||
impl->envelope.dwSize = sizeof(DIENVELOPE);
|
impl->envelope.dwSize = sizeof(DIENVELOPE);
|
||||||
impl->params.dwSize = sizeof(DIEFFECT);
|
impl->params.dwSize = sizeof(DIEFFECT);
|
||||||
|
|
|
@ -207,7 +207,7 @@ static HRESULT alloc_device( REFGUID rguid, IDirectInputImpl *dinput, SysKeyboar
|
||||||
|
|
||||||
/* Create copy of default data format */
|
/* Create copy of default data format */
|
||||||
memcpy(df, &c_dfDIKeyboard, c_dfDIKeyboard.dwSize);
|
memcpy(df, &c_dfDIKeyboard, c_dfDIKeyboard.dwSize);
|
||||||
if (!(df->rgodf = HeapAlloc(GetProcessHeap(), 0, df->dwNumObjs * df->dwObjSize))) goto failed;
|
if (!(df->rgodf = malloc( df->dwNumObjs * df->dwObjSize ))) goto failed;
|
||||||
|
|
||||||
for (i = 0; i < df->dwNumObjs; i++)
|
for (i = 0; i < df->dwNumObjs; i++)
|
||||||
{
|
{
|
||||||
|
@ -227,9 +227,9 @@ static HRESULT alloc_device( REFGUID rguid, IDirectInputImpl *dinput, SysKeyboar
|
||||||
return DI_OK;
|
return DI_OK;
|
||||||
|
|
||||||
failed:
|
failed:
|
||||||
if (df) HeapFree(GetProcessHeap(), 0, df->rgodf);
|
if (df) free( df->rgodf );
|
||||||
HeapFree(GetProcessHeap(), 0, df);
|
free( df );
|
||||||
HeapFree(GetProcessHeap(), 0, newDevice);
|
free( newDevice );
|
||||||
return DIERR_OUTOFMEMORY;
|
return DIERR_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -161,7 +161,7 @@ static HRESULT alloc_device( REFGUID rguid, IDirectInputImpl *dinput, SysMouseIm
|
||||||
|
|
||||||
/* Create copy of default data format */
|
/* Create copy of default data format */
|
||||||
memcpy(df, &c_dfDIMouse2, c_dfDIMouse2.dwSize);
|
memcpy(df, &c_dfDIMouse2, c_dfDIMouse2.dwSize);
|
||||||
if (!(df->rgodf = HeapAlloc(GetProcessHeap(), 0, df->dwNumObjs * df->dwObjSize))) goto failed;
|
if (!(df->rgodf = malloc( df->dwNumObjs * df->dwObjSize ))) goto failed;
|
||||||
memcpy(df->rgodf, c_dfDIMouse2.rgodf, df->dwNumObjs * df->dwObjSize);
|
memcpy(df->rgodf, c_dfDIMouse2.rgodf, df->dwNumObjs * df->dwObjSize);
|
||||||
|
|
||||||
/* Because we don't do any detection yet just modify instance and type */
|
/* Because we don't do any detection yet just modify instance and type */
|
||||||
|
@ -182,9 +182,9 @@ static HRESULT alloc_device( REFGUID rguid, IDirectInputImpl *dinput, SysMouseIm
|
||||||
return DI_OK;
|
return DI_OK;
|
||||||
|
|
||||||
failed:
|
failed:
|
||||||
if (df) HeapFree(GetProcessHeap(), 0, df->rgodf);
|
if (df) free( df->rgodf );
|
||||||
HeapFree(GetProcessHeap(), 0, df);
|
free( df );
|
||||||
HeapFree(GetProcessHeap(), 0, newDevice);
|
free( newDevice );
|
||||||
return DIERR_OUTOFMEMORY;
|
return DIERR_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue