winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
October 2015
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
749 discussions
Start a n
N
ew thread
Michael Müller : ntdll: Implement ThreadGroupInformation class.
by Alexandre Julliard
02 Oct '15
02 Oct '15
Module: wine Branch: master Commit: 55ae09068b2d9039dcff56210389c57e28dbc1b9 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=55ae09068b2d9039dcff56210…
Author: Michael Müller <michael(a)fds-team.de> Date: Wed Sep 23 22:51:14 2015 +0200 ntdll: Implement ThreadGroupInformation class. Signed-off-by: Michael Müller <michael(a)fds-team.de> Signed-off-by: Sebastian Lackner <sebastian(a)fds-team.de> --- dlls/ntdll/thread.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ include/winternl.h | 16 ++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c index b8109e1..9f49cd4 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c @@ -1103,6 +1103,29 @@ NTSTATUS WINAPI NtQueryInformationThread( HANDLE handle, THREADINFOCLASS class, SERVER_END_REQ; return status; } + case ThreadGroupInformation: + { + const ULONG_PTR affinity_mask = get_system_affinity_mask(); + GROUP_AFFINITY affinity; + + memset(&affinity, 0, sizeof(affinity)); + affinity.Group = 0; /* Wine only supports max 64 processors */ + + SERVER_START_REQ( get_thread_info ) + { + req->handle = wine_server_obj_handle( handle ); + req->tid_in = 0; + if (!(status = wine_server_call( req ))) + affinity.Mask = reply->affinity & affinity_mask; + } + SERVER_END_REQ; + if (status == STATUS_SUCCESS) + { + if (data) memcpy( data, &affinity, min( length, sizeof(affinity) )); + if (ret_len) *ret_len = min( length, sizeof(affinity) ); + } + } + return status; case ThreadPriority: case ThreadBasePriority: case ThreadImpersonationToken: @@ -1233,6 +1256,33 @@ NTSTATUS WINAPI NtSetInformationThread( HANDLE handle, THREADINFOCLASS class, SERVER_END_REQ; } return status; + case ThreadGroupInformation: + { + const ULONG_PTR affinity_mask = get_system_affinity_mask(); + const GROUP_AFFINITY *req_aff; + + if (length != sizeof(*req_aff)) return STATUS_INVALID_PARAMETER; + if (!data) return STATUS_ACCESS_VIOLATION; + req_aff = data; + + /* On Windows the request fails if the reserved fields are set */ + if (req_aff->Reserved[0] || req_aff->Reserved[1] || req_aff->Reserved[2]) + return STATUS_INVALID_PARAMETER; + + /* Wine only supports max 64 processors */ + if (req_aff->Group) return STATUS_INVALID_PARAMETER; + if (req_aff->Mask & ~affinity_mask) return STATUS_INVALID_PARAMETER; + if (!req_aff->Mask) return STATUS_INVALID_PARAMETER; + SERVER_START_REQ( set_thread_info ) + { + req->handle = wine_server_obj_handle( handle ); + req->affinity = req_aff->Mask; + req->mask = SET_THREAD_INFO_AFFINITY; + status = wine_server_call( req ); + } + SERVER_END_REQ; + } + return status; case ThreadBasicInformation: case ThreadTimes: case ThreadPriority: diff --git a/include/winternl.h b/include/winternl.h index 2b10f8d..3e64b4d 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -859,6 +859,22 @@ typedef enum _THREADINFOCLASS { ThreadSetTlsArrayAddress, ThreadIsIoPending, ThreadHideFromDebugger, + ThreadBreakOnTermination, + ThreadSwitchLegacyState, + ThreadIsTerminated, + ThreadLastSystemCall, + ThreadIoPriority, + ThreadCycleTime, + ThreadPagePriority, + ThreadActualBasePriority, + ThreadTebInformation, + ThreadCSwitchMon, + ThreadCSwitchPmu, + ThreadWow64Context, + ThreadGroupInformation, + ThreadUmsInformation, + ThreadCounterProfiling, + ThreadIdealProcessorEx, MaxThreadInfoClass } THREADINFOCLASS;
1
0
0
0
André Hentschel : rsaenh/tests: Adjust length value to pass on Win 10.
by Alexandre Julliard
02 Oct '15
02 Oct '15
Module: wine Branch: master Commit: 86b1e74f5c2aabc5d4ed004737d9c2c45af9e3b9 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=86b1e74f5c2aabc5d4ed00473…
Author: André Hentschel <nerv(a)dawncrow.de> Date: Thu Oct 1 00:04:20 2015 +0200 rsaenh/tests: Adjust length value to pass on Win 10. Signed-off-by: André Hentschel <nerv(a)dawncrow.de> --- dlls/rsaenh/tests/rsaenh.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dlls/rsaenh/tests/rsaenh.c b/dlls/rsaenh/tests/rsaenh.c index da74ffb..439d253 100644 --- a/dlls/rsaenh/tests/rsaenh.c +++ b/dlls/rsaenh/tests/rsaenh.c @@ -1971,8 +1971,7 @@ static void test_import_private(void) * actual buffer. The private exponent can be omitted, its length is * inferred from the passed-in length parameter. */ - dwLen = sizeof(BLOBHEADER) + sizeof(RSAPUBKEY) + - rsaPubKey->bitlen / 8 + 5 * rsaPubKey->bitlen / 16; + dwLen = sizeof(BLOBHEADER) + sizeof(RSAPUBKEY) + rsaPubKey->bitlen / 2; for (; dwLen < sizeof(abPlainPrivateKey); dwLen++) { result = CryptImportKey(hProv, abPlainPrivateKey, dwLen, 0, 0, &hKeyExchangeKey);
1
0
0
0
Alex Henrie : user32: Remove unused variable ani_icon_data from release_icon_frame.
by Alexandre Julliard
02 Oct '15
02 Oct '15
Module: wine Branch: master Commit: a66f4e521c766edf78074dbff6c7ed4488d85007 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=a66f4e521c766edf78074dbff…
Author: Alex Henrie <alexhenrie24(a)gmail.com> Date: Thu Oct 1 21:58:06 2015 -0600 user32: Remove unused variable ani_icon_data from release_icon_frame. Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com> --- dlls/user32/cursoricon.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/dlls/user32/cursoricon.c b/dlls/user32/cursoricon.c index b5ddfcd..5594909 100644 --- a/dlls/user32/cursoricon.c +++ b/dlls/user32/cursoricon.c @@ -182,10 +182,8 @@ static void release_icon_frame( struct cursoricon_object *obj, int istep, struct { if (obj->is_ani) { - struct animated_cursoricon_object *ani_icon_data; struct cursoricon_object *frameobj; - ani_icon_data = (struct animated_cursoricon_object *) obj; frameobj = (struct cursoricon_object *) (((char *)frame) - FIELD_OFFSET(struct static_cursoricon_object, frame)); release_user_handle_ptr( frameobj ); }
1
0
0
0
Alex Henrie : user32: Replace release_icon_ptr with release_user_handle_ptr.
by Alexandre Julliard
02 Oct '15
02 Oct '15
Module: wine Branch: master Commit: 50403fec1e93fa4053d15e79b94b671bb5d01b6d URL:
http://source.winehq.org/git/wine.git/?a=commit;h=50403fec1e93fa4053d15e79b…
Author: Alex Henrie <alexhenrie24(a)gmail.com> Date: Thu Oct 1 21:58:05 2015 -0600 user32: Replace release_icon_ptr with release_user_handle_ptr. Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com> --- dlls/user32/cursoricon.c | 45 ++++++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/dlls/user32/cursoricon.c b/dlls/user32/cursoricon.c index f7b6bca..b5ddfcd 100644 --- a/dlls/user32/cursoricon.c +++ b/dlls/user32/cursoricon.c @@ -158,11 +158,6 @@ static struct cursoricon_object *get_icon_ptr( HICON handle ) return obj; } -static void release_icon_ptr( HICON handle, struct cursoricon_object *ptr ) -{ - release_user_handle_ptr( ptr ); -} - static struct cursoricon_frame *get_icon_frame( struct cursoricon_object *obj, int istep ) { struct static_cursoricon_object *req_frame; @@ -192,7 +187,7 @@ static void release_icon_frame( struct cursoricon_object *obj, int istep, struct ani_icon_data = (struct animated_cursoricon_object *) obj; frameobj = (struct cursoricon_object *) (((char *)frame) - FIELD_OFFSET(struct static_cursoricon_object, frame)); - release_icon_ptr( ani_icon_data->frames[istep], frameobj ); + release_user_handle_ptr( frameobj ); } } @@ -484,7 +479,7 @@ BOOL get_icon_size( HICON handle, SIZE *size ) size->cx = frame->width; size->cy = frame->height; release_icon_frame( info, 0, frame); - release_icon_ptr( handle, info ); + release_user_handle_ptr( info ); return TRUE; } @@ -976,7 +971,7 @@ done: info->rsrc = rsrc; list_add_head( &icon_cache, &info->entry ); } - release_icon_ptr( hObj, info ); + release_user_handle_ptr( info ); } else { @@ -1229,7 +1224,7 @@ static HCURSOR CURSORICON_CreateIconFromANI( const BYTE *bits, DWORD bits_size, { FIXME_(cursor)("Completely failed to create animated cursor!\n"); ani_icon_data->num_frames = 0; - release_icon_ptr( cursor, info ); + release_user_handle_ptr( info ); free_icon_handle( cursor ); HeapFree( GetProcessHeap(), 0, frames ); return 0; @@ -1275,7 +1270,7 @@ static HCURSOR CURSORICON_CreateIconFromANI( const BYTE *bits, DWORD bits_size, } HeapFree( GetProcessHeap(), 0, frames ); - release_icon_ptr( cursor, info ); + release_user_handle_ptr( info ); return cursor; } @@ -1592,14 +1587,14 @@ HICON WINAPI CopyIcon( HICON hIcon ) ptrNew->hotspot = ptrOld->hotspot; if (!(frameOld = get_icon_frame( ptrOld, 0 ))) { - release_icon_ptr( hIcon, ptrOld ); + release_user_handle_ptr( ptrOld ); SetLastError( ERROR_INVALID_CURSOR_HANDLE ); return 0; } if (!(frameNew = get_icon_frame( ptrNew, 0 ))) { release_icon_frame( ptrOld, 0, frameOld ); - release_icon_ptr( hIcon, ptrOld ); + release_user_handle_ptr( ptrOld ); SetLastError( ERROR_INVALID_CURSOR_HANDLE ); return 0; } @@ -1611,9 +1606,9 @@ HICON WINAPI CopyIcon( HICON hIcon ) frameNew->alpha = copy_bitmap( frameOld->alpha ); release_icon_frame( ptrOld, 0, frameOld ); release_icon_frame( ptrNew, 0, frameNew ); - release_icon_ptr( hNew, ptrNew ); + release_user_handle_ptr( ptrNew ); } - release_icon_ptr( hIcon, ptrOld ); + release_user_handle_ptr( ptrOld ); return hNew; } @@ -1631,7 +1626,7 @@ BOOL WINAPI DestroyIcon( HICON hIcon ) if (obj) { BOOL shared = (obj->rsrc != NULL); - release_icon_ptr( hIcon, obj ); + release_user_handle_ptr( obj ); ret = (GetCursor() != hIcon); if (!shared) free_icon_handle( hIcon ); } @@ -1688,7 +1683,7 @@ HCURSOR WINAPI DECLSPEC_HOTPATCH SetCursor( HCURSOR hCursor /* [in] Handle of cu USER_Driver->pSetCursor( show_count >= 0 ? hCursor : 0 ); if (!(obj = get_icon_ptr( hOldCursor ))) return 0; - release_icon_ptr( hOldCursor, obj ); + release_user_handle_ptr( obj ); return hOldCursor; } @@ -1986,7 +1981,7 @@ HCURSOR WINAPI GetCursorFrameInfo(HCURSOR hCursor, DWORD reserved, DWORD istep, } } - release_icon_ptr( hCursor, ptr ); + release_user_handle_ptr( ptr ); return ret; } @@ -2057,7 +2052,7 @@ BOOL WINAPI GetIconInfoExW( HICON icon, ICONINFOEXW *info ) frame = get_icon_frame( ptr, 0 ); if (!frame) { - release_icon_ptr( icon, ptr ); + release_user_handle_ptr( ptr ); SetLastError( ERROR_INVALID_CURSOR_HANDLE ); return FALSE; } @@ -2085,7 +2080,7 @@ BOOL WINAPI GetIconInfoExW( HICON icon, ICONINFOEXW *info ) } module = ptr->module; release_icon_frame( ptr, 0, frame ); - release_icon_ptr( icon, ptr ); + release_user_handle_ptr( ptr ); if (ret && module) GetModuleFileNameW( module, info->szModName, MAX_PATH ); return ret; } @@ -2215,7 +2210,7 @@ HICON WINAPI CreateIconIndirect(PICONINFO iconinfo) info->hotspot.y = iconinfo->yHotspot; } - release_icon_ptr( hObj, info ); + release_user_handle_ptr( info ); } return hObj; } @@ -2260,19 +2255,19 @@ BOOL WINAPI DrawIconEx( HDC hdc, INT x0, INT y0, HICON hIcon, if (istep >= get_icon_steps( ptr )) { TRACE_(icon)("Stepped past end of animated frames=%d\n", istep); - release_icon_ptr( hIcon, ptr ); + release_user_handle_ptr( ptr ); return FALSE; } if (!(frame = get_icon_frame( ptr, istep ))) { FIXME_(icon)("Error retrieving icon frame %d\n", istep); - release_icon_ptr( hIcon, ptr ); + release_user_handle_ptr( ptr ); return FALSE; } if (!(hMemDC = CreateCompatibleDC( hdc ))) { release_icon_frame( ptr, istep, frame ); - release_icon_ptr( hIcon, ptr ); + release_user_handle_ptr( ptr ); return FALSE; } @@ -2386,7 +2381,7 @@ done: failed: DeleteDC( hMemDC ); release_icon_frame( ptr, istep, frame ); - release_icon_ptr( hIcon, ptr ); + release_user_handle_ptr( ptr ); return result; } @@ -2908,7 +2903,7 @@ HANDLE WINAPI CopyImage( HANDLE hnd, UINT type, INT desiredx, !icon->is_icon, flags ); else res = CopyIcon( hnd ); /* FIXME: change size if necessary */ - release_icon_ptr( hnd, icon ); + release_user_handle_ptr( icon ); if (res && (flags & LR_COPYDELETEORG)) DeleteObject( hnd ); return res;
1
0
0
0
Dmitry Timoshkov : winhttp/tests: Add another test for IWinHttpRequest_Invoke.
by Alexandre Julliard
02 Oct '15
02 Oct '15
Module: wine Branch: master Commit: 6f97e1a30ce18fe874a3369b852e648118e9916e URL:
http://source.winehq.org/git/wine.git/?a=commit;h=6f97e1a30ce18fe874a3369b8…
Author: Dmitry Timoshkov <dmitry(a)baikal.ru> Date: Fri Oct 2 10:24:58 2015 +0800 winhttp/tests: Add another test for IWinHttpRequest_Invoke. This test intentionally uses fallback path of IWinHttpRequest_Invoke implementation that passes the call to typelib marshaller. Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> --- dlls/winhttp/tests/winhttp.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dlls/winhttp/tests/winhttp.c b/dlls/winhttp/tests/winhttp.c index 381a9c4..e221809 100644 --- a/dlls/winhttp/tests/winhttp.c +++ b/dlls/winhttp/tests/winhttp.c @@ -3773,6 +3773,16 @@ todo_wine ok(hr == DISP_E_PARAMNOTFOUND, "error %#x\n", hr); SysFreeString(utf8); + + params.cArgs = 1; + V_VT(&arg[0]) = VT_I4; + V_I4(&arg[0]) = AutoLogonPolicy_Never; + VariantInit(&ret); + hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_SETAUTOLOGONPOLICY, &IID_NULL, 0, + DISPATCH_METHOD, ¶ms, &ret, NULL, NULL); +todo_wine + ok(hr == S_OK, "error %#x\n", hr); + IWinHttpRequest_Release(request); CoUninitialize();
1
0
0
0
Piotr Caban : msvcp: Add _Exp implementation.
by Alexandre Julliard
02 Oct '15
02 Oct '15
Module: wine Branch: master Commit: ce24b284eeabba8c7b0c8e9b6163f770e9207da9 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=ce24b284eeabba8c7b0c8e9b6…
Author: Piotr Caban <piotr(a)codeweavers.com> Date: Thu Oct 1 18:43:18 2015 +0200 msvcp: Add _Exp implementation. Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> --- dlls/msvcp100/msvcp100.spec | 4 +- dlls/msvcp110/msvcp110.spec | 4 +- dlls/msvcp120/msvcp120.spec | 4 +- dlls/msvcp120/tests/msvcp120.c | 76 +++++++++++++++++++++++++++++++++++++ dlls/msvcp120_app/msvcp120_app.spec | 4 +- dlls/msvcp60/msvcp60.spec | 4 +- dlls/msvcp70/msvcp70.spec | 4 +- dlls/msvcp71/msvcp71.spec | 4 +- dlls/msvcp80/msvcp80.spec | 4 +- dlls/msvcp90/math.c | 42 ++++++++++++++++++++ dlls/msvcp90/msvcp90.spec | 4 +- 11 files changed, 136 insertions(+), 18 deletions(-) diff --git a/dlls/msvcp100/msvcp100.spec b/dlls/msvcp100/msvcp100.spec index c5d8fcc..d2b75f4 100644 --- a/dlls/msvcp100/msvcp100.spec +++ b/dlls/msvcp100/msvcp100.spec @@ -2894,14 +2894,14 @@ @ cdecl _Dscale(ptr long) @ cdecl _Dtest(ptr) @ extern _Eps -@ stub _Exp +@ cdecl _Exp(ptr double long) @ stub _FCosh @ extern _FDenorm @ stub _FDnorm @ cdecl _FDscale(ptr long) @ cdecl _FDtest(ptr) @ extern _FEps -@ stub _FExp +@ cdecl _FExp(ptr float long) @ extern _FInf @ extern _FNan # extern _FRteps diff --git a/dlls/msvcp110/msvcp110.spec b/dlls/msvcp110/msvcp110.spec index a3776cf..b8d21eb 100644 --- a/dlls/msvcp110/msvcp110.spec +++ b/dlls/msvcp110/msvcp110.spec @@ -3748,7 +3748,7 @@ @ cdecl _Dtest(ptr) @ stub _Dunscale @ extern _Eps -@ stub _Exp +@ cdecl _Exp(ptr double long) @ stub _FCosh @ extern _FDenorm @ stub _FDint @@ -3758,7 +3758,7 @@ @ cdecl _FDtest(ptr) @ stub _FDunscale @ extern _FEps -@ stub _FExp +@ cdecl _FExp(ptr float long) @ extern _FInf @ extern _FNan # extern _FRteps diff --git a/dlls/msvcp120/msvcp120.spec b/dlls/msvcp120/msvcp120.spec index 2b07f13..0458b01 100644 --- a/dlls/msvcp120/msvcp120.spec +++ b/dlls/msvcp120/msvcp120.spec @@ -3689,7 +3689,7 @@ @ cdecl _Dtest(ptr) @ stub _Dunscale @ extern _Eps -@ stub _Exp +@ cdecl _Exp(ptr double long) @ stub _FCosh @ extern _FDenorm @ stub _FDint @@ -3699,7 +3699,7 @@ @ cdecl _FDtest(ptr) @ stub _FDunscale @ extern _FEps -@ stub _FExp +@ cdecl _FExp(ptr float long) @ extern _FInf @ extern _FNan @ stub _FPlsw diff --git a/dlls/msvcp120/tests/msvcp120.c b/dlls/msvcp120/tests/msvcp120.c index 358c408..d754191 100644 --- a/dlls/msvcp120/tests/msvcp120.c +++ b/dlls/msvcp120/tests/msvcp120.c @@ -19,6 +19,7 @@ #include <locale.h> #include <stdio.h> #include <math.h> +#include <limits.h> #include "wine/test.h" #include "winbase.h" @@ -65,6 +66,22 @@ enum file_type { type_unknown }; +static BOOL compare_float(float f, float g, unsigned int ulps) +{ + int x = *(int *)&f; + int y = *(int *)&g; + + if (x < 0) + x = INT_MIN - x; + if (y < 0) + y = INT_MIN - y; + + if (abs(x - y) > ulps) + return FALSE; + + return TRUE; +} + static inline const char* debugstr_longlong(ULONGLONG ll) { static char string[17]; @@ -87,6 +104,7 @@ static void (CDECL *p__Call_onceEx)(int *once, void (CDECL *func)(void*), void * static void (CDECL *p__Do_call)(void *this); static short (__cdecl *p__Dtest)(double *d); static short (__cdecl *p__Dscale)(double *d, int exp); +static short (__cdecl *p__FExp)(float *x, float y, int exp); /* filesystem */ static ULONGLONG(__cdecl *p_tr2_sys__File_size)(char const*); @@ -142,6 +160,8 @@ static BOOL init(void) "_Dtest"); SET(p__Dscale, "_Dscale"); + SET(p__FExp, + "_FExp"); if(sizeof(void*) == 8) { /* 64-bit initialization */ SET(p_tr2_sys__File_size, "?_File_size@sys@tr2@std@@YA_KPEBD@Z"); @@ -514,6 +534,61 @@ static void test__Dscale(void) ok(ret == FP_NAN, "ret = %x\n", ret); } +static void test__FExp(void) +{ + float d; + short ret; + + d = 0; + ret = p__FExp(&d, 0, 0); + ok(d == 0, "d = %f\n", d); + ok(ret == FP_ZERO, "ret = %x\n", ret); + + d = 0; + ret = p__FExp(&d, 1, 0); + ok(d == 1.0, "d = %f\n", d); + ok(ret == FP_NORMAL, "ret = %x\n", ret); + + d = 0; + ret = p__FExp(&d, 1, 1); + ok(d == 2.0, "d = %f\n", d); + ok(ret == FP_NORMAL, "ret = %x\n", ret); + + d = 0; + ret = p__FExp(&d, 1, 2); + ok(d == 4.0, "d = %f\n", d); + ok(ret == FP_NORMAL, "ret = %x\n", ret); + + d = 0; + ret = p__FExp(&d, 10, 0); + ok(d == 10.0, "d = %f\n", d); + ok(ret == FP_NORMAL, "ret = %x\n", ret); + + d = 1; + ret = p__FExp(&d, 0, 0); + ok(d == 0, "d = %f\n", d); + ok(ret == FP_ZERO, "ret = %x\n", ret); + + d = 1; + ret = p__FExp(&d, 1, 0); + ok(compare_float(d, 2.7182817, 4), "d = %f\n", d); + ok(ret == FP_NORMAL, "ret = %x\n", ret); + + d = 9e20; + ret = p__FExp(&d, 0, 0); + ok(d == 0, "d = %f\n", d); + ok(ret == FP_ZERO, "ret = %x\n", ret); + + d = 90; + ret = p__FExp(&d, 1, 0); + ok(ret == FP_INFINITE, "ret = %x\n", ret); + + d = 90; + ret = p__FExp(&d, 1, -50); + ok(compare_float(d, 1.0839359e+024, 4), "d = %g\n", d); + ok(ret == FP_NORMAL, "ret = %x\n", ret); +} + static void test_tr2_sys__File_size(void) { ULONGLONG val; @@ -1055,6 +1130,7 @@ START_TEST(msvcp120) test__Do_call(); test__Dtest(); test__Dscale(); + test__FExp(); test_tr2_sys__File_size(); test_tr2_sys__Equivalent(); diff --git a/dlls/msvcp120_app/msvcp120_app.spec b/dlls/msvcp120_app/msvcp120_app.spec index 1470b3c..2598904 100644 --- a/dlls/msvcp120_app/msvcp120_app.spec +++ b/dlls/msvcp120_app/msvcp120_app.spec @@ -3689,7 +3689,7 @@ @ cdecl _Dtest(ptr) msvcp120._Dtest @ stub _Dunscale @ extern _Eps msvcp120._Eps -@ stub _Exp +@ cdecl _Exp(ptr double long) msvcp120._Exp @ stub _FCosh @ extern _FDenorm msvcp120._FDenorm @ stub _FDint @@ -3699,7 +3699,7 @@ @ cdecl _FDtest(ptr) msvcp120._FDtest @ stub _FDunscale @ extern _FEps msvcp120._FEps -@ stub _FExp +@ cdecl _FExp(ptr float long) msvcp120._FExp @ extern _FInf msvcp120._FInf @ extern _FNan msvcp120._FNan @ stub _FPlsw diff --git a/dlls/msvcp60/msvcp60.spec b/dlls/msvcp60/msvcp60.spec index 05d0435..48f1add 100644 --- a/dlls/msvcp60/msvcp60.spec +++ b/dlls/msvcp60/msvcp60.spec @@ -4260,14 +4260,14 @@ @ cdecl _Dscale(ptr long) @ cdecl _Dtest(ptr) @ extern _Eps _Eps -@ stub _Exp +@ cdecl _Exp(ptr double long) @ stub _FCosh @ extern _FDenorm _FDenorm @ stub _FDnorm @ cdecl _FDscale(ptr long) @ cdecl _FDtest(ptr) @ extern _FEps _FEps -@ stub _FExp +@ cdecl _FExp(ptr float long) @ extern _FInf _FInf @ extern _FNan _FNan # extern _FRteps diff --git a/dlls/msvcp70/msvcp70.spec b/dlls/msvcp70/msvcp70.spec index a6f5ef3..f97c87c 100644 --- a/dlls/msvcp70/msvcp70.spec +++ b/dlls/msvcp70/msvcp70.spec @@ -5046,14 +5046,14 @@ @ cdecl _Dscale(ptr long) @ cdecl _Dtest(ptr) @ extern _Eps -@ stub _Exp +@ cdecl _Exp(ptr double long) @ stub _FCosh @ extern _FDenorm @ stub _FDnorm @ cdecl _FDscale(ptr long) @ cdecl _FDtest(ptr) @ extern _FEps -@ stub _FExp +@ cdecl _FExp(ptr float long) @ extern _FInf @ extern _FNan # extern _FRteps diff --git a/dlls/msvcp71/msvcp71.spec b/dlls/msvcp71/msvcp71.spec index ba2fcaf..46e5213 100644 --- a/dlls/msvcp71/msvcp71.spec +++ b/dlls/msvcp71/msvcp71.spec @@ -5100,14 +5100,14 @@ @ cdecl _Dscale(ptr long) @ cdecl _Dtest(ptr) @ extern _Eps -@ stub _Exp +@ cdecl _Exp(ptr double long) @ stub _FCosh @ extern _FDenorm @ stub _FDnorm @ cdecl _FDscale(ptr long) @ cdecl _FDtest(ptr) @ extern _FEps -@ stub _FExp +@ cdecl _FExp(ptr float long) @ extern _FInf @ extern _FNan # extern _FRteps diff --git a/dlls/msvcp80/msvcp80.spec b/dlls/msvcp80/msvcp80.spec index d801608..f6bec69 100644 --- a/dlls/msvcp80/msvcp80.spec +++ b/dlls/msvcp80/msvcp80.spec @@ -5708,7 +5708,7 @@ @ cdecl _Dtest(ptr) @ stub _Dunscale @ extern _Eps -@ stub _Exp +@ cdecl _Exp(ptr double long) @ stub _FCosh @ extern _FDenorm @ stub _FDnorm @@ -5717,7 +5717,7 @@ @ cdecl _FDtest(ptr) @ stub _FDunscale @ extern _FEps -@ stub _FExp +@ cdecl _FExp(ptr float long) @ extern _FInf @ extern _FNan # extern _FRteps diff --git a/dlls/msvcp90/math.c b/dlls/msvcp90/math.c index 2d9996db..6c3a33a 100644 --- a/dlls/msvcp90/math.c +++ b/dlls/msvcp90/math.c @@ -2274,3 +2274,45 @@ short __cdecl _FDscale(float *x, int exp) *x *= pow(2, exp); return dclass(*x); } + +/* _Exp */ +/* computes y * e^(*x) * 2^scale */ +short __cdecl _Exp(double *x, double y, int scale) +{ + double ed; + int e; + + if(y == 0) { + *x = 0; + return FP_ZERO; + } + + *x /= M_LN2; + ed = floor(*x); + *x -= ed; + e = ed; + + if(ed!=e && ed>0) + scale = INT_MAX; + else if(ed!=e && ed<0) + scale = INT_MIN; + else if(scale>0 && e>0 && scale+e<=0) + scale = INT_MAX; + else if(scale<0 && e<0 && scale+e>=0) + scale = INT_MIN; + else + scale += e; + + *x = y * pow(2.0, *x); + return _Dscale(x, scale); +} + +/* _FExp */ +short __cdecl _FExp(float *x, float y, short scale) +{ + double d = *x; + _Exp(&d, y, scale); + *x = d; + + return dclass(*x); +} diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec index f2e3a5b..a0ba849 100644 --- a/dlls/msvcp90/msvcp90.spec +++ b/dlls/msvcp90/msvcp90.spec @@ -6482,14 +6482,14 @@ @ cdecl _Dscale(ptr long) @ cdecl _Dtest(ptr) @ extern _Eps -@ stub _Exp +@ cdecl _Exp(ptr double long) @ stub _FCosh @ extern _FDenorm @ stub _FDnorm @ cdecl _FDscale(ptr long) @ cdecl _FDtest(ptr) @ extern _FEps -@ stub _FExp +@ cdecl _FExp(ptr float long) @ extern _FInf @ extern _FNan # extern _FRteps
1
0
0
0
Piotr Caban : msvcp: Add _Dscale implementation.
by Alexandre Julliard
02 Oct '15
02 Oct '15
Module: wine Branch: master Commit: 643ff988c43e4cb40387a71086f6ad81953491bb URL:
http://source.winehq.org/git/wine.git/?a=commit;h=643ff988c43e4cb40387a7108…
Author: Piotr Caban <piotr(a)codeweavers.com> Date: Thu Oct 1 18:42:29 2015 +0200 msvcp: Add _Dscale implementation. Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> --- dlls/msvcp100/msvcp100.spec | 6 ++--- dlls/msvcp110/msvcp110.spec | 6 ++--- dlls/msvcp120/msvcp120.spec | 6 ++--- dlls/msvcp120/tests/msvcp120.c | 54 +++++++++++++++++++++++++++++++++++++ dlls/msvcp120_app/msvcp120_app.spec | 6 ++--- dlls/msvcp60/msvcp60.spec | 6 ++--- dlls/msvcp70/msvcp70.spec | 6 ++--- dlls/msvcp71/msvcp71.spec | 6 ++--- dlls/msvcp80/msvcp80.spec | 6 ++--- dlls/msvcp90/math.c | 14 ++++++++++ dlls/msvcp90/msvcp90.spec | 6 ++--- 11 files changed, 95 insertions(+), 27 deletions(-) diff --git a/dlls/msvcp100/msvcp100.spec b/dlls/msvcp100/msvcp100.spec index 6738979..c5d8fcc 100644 --- a/dlls/msvcp100/msvcp100.spec +++ b/dlls/msvcp100/msvcp100.spec @@ -2891,14 +2891,14 @@ @ stub _Cosh @ extern _Denorm @ stub _Dnorm -@ stub _Dscale +@ cdecl _Dscale(ptr long) @ cdecl _Dtest(ptr) @ extern _Eps @ stub _Exp @ stub _FCosh @ extern _FDenorm @ stub _FDnorm -@ stub _FDscale +@ cdecl _FDscale(ptr long) @ cdecl _FDtest(ptr) @ extern _FEps @ stub _FExp @@ -2919,7 +2919,7 @@ @ extern _Inf @ stub _LCosh @ extern _LDenorm -@ stub _LDscale +@ cdecl _LDscale(ptr long) _Dscale @ cdecl _LDtest(ptr) _Dtest @ extern _LEps @ stub _LExp diff --git a/dlls/msvcp110/msvcp110.spec b/dlls/msvcp110/msvcp110.spec index f571a55..a3776cf 100644 --- a/dlls/msvcp110/msvcp110.spec +++ b/dlls/msvcp110/msvcp110.spec @@ -3743,7 +3743,7 @@ @ stub _Dint @ stub _Dnorm @ cdecl _Do_call(ptr) -@ stub _Dscale +@ cdecl _Dscale(ptr long) @ stub _Dtento @ cdecl _Dtest(ptr) @ stub _Dunscale @@ -3753,7 +3753,7 @@ @ extern _FDenorm @ stub _FDint @ stub _FDnorm -@ stub _FDscale +@ cdecl _FDscale(ptr long) @ stub _FDtento @ cdecl _FDtest(ptr) @ stub _FDunscale @@ -3789,7 +3789,7 @@ @ stub _LCosh @ extern _LDenorm @ stub _LDint -@ stub _LDscale +@ cdecl _LDscale(ptr long) _Dscale @ stub _LDtento @ cdecl _LDtest(ptr) _Dtest @ stub _LDunscale diff --git a/dlls/msvcp120/msvcp120.spec b/dlls/msvcp120/msvcp120.spec index 8da3cc7..2b07f13 100644 --- a/dlls/msvcp120/msvcp120.spec +++ b/dlls/msvcp120/msvcp120.spec @@ -3684,7 +3684,7 @@ @ stub _Dint @ stub _Dnorm @ cdecl _Do_call(ptr) -@ stub _Dscale +@ cdecl _Dscale(ptr long) @ stub _Dtento @ cdecl _Dtest(ptr) @ stub _Dunscale @@ -3694,7 +3694,7 @@ @ extern _FDenorm @ stub _FDint @ stub _FDnorm -@ stub _FDscale +@ cdecl _FDscale(ptr long) @ stub _FDtento @ cdecl _FDtest(ptr) @ stub _FDunscale @@ -3732,7 +3732,7 @@ @ stub _LCosh @ extern _LDenorm @ stub _LDint -@ stub _LDscale +@ cdecl _LDscale(ptr long) _Dscale @ stub _LDtento @ cdecl _LDtest(ptr) _Dtest @ stub _LDunscale diff --git a/dlls/msvcp120/tests/msvcp120.c b/dlls/msvcp120/tests/msvcp120.c index bf7ed8f..358c408 100644 --- a/dlls/msvcp120/tests/msvcp120.c +++ b/dlls/msvcp120/tests/msvcp120.c @@ -86,6 +86,7 @@ static void (CDECL *p__Call_once)(int *once, void (CDECL *func)(void)); static void (CDECL *p__Call_onceEx)(int *once, void (CDECL *func)(void*), void *argv); static void (CDECL *p__Do_call)(void *this); static short (__cdecl *p__Dtest)(double *d); +static short (__cdecl *p__Dscale)(double *d, int exp); /* filesystem */ static ULONGLONG(__cdecl *p_tr2_sys__File_size)(char const*); @@ -139,6 +140,8 @@ static BOOL init(void) "_Do_call"); SET(p__Dtest, "_Dtest"); + SET(p__Dscale, + "_Dscale"); if(sizeof(void*) == 8) { /* 64-bit initialization */ SET(p_tr2_sys__File_size, "?_File_size@sys@tr2@std@@YA_KPEBD@Z"); @@ -461,6 +464,56 @@ static void test__Dtest(void) ok(ret == FP_NAN, "_Dtest(NAN) returned %x\n", ret); } +static void test__Dscale(void) +{ + double d; + short ret; + + d = 0; + ret = p__Dscale(&d, 0); + ok(d == 0, "d = %f\n", d); + ok(ret == FP_ZERO, "ret = %x\n", ret); + + d = 0; + ret = p__Dscale(&d, 1); + ok(d == 0, "d = %f\n", d); + ok(ret == FP_ZERO, "ret = %x\n", ret); + + d = 0; + ret = p__Dscale(&d, -1); + ok(d == 0, "d = %f\n", d); + ok(ret == FP_ZERO, "ret = %x\n", ret); + + d = 1; + ret = p__Dscale(&d, 0); + ok(d == 1, "d = %f\n", d); + ok(ret == FP_NORMAL, "ret = %x\n", ret); + + d = 1; + ret = p__Dscale(&d, 1); + ok(d == 2, "d = %f\n", d); + ok(ret == FP_NORMAL, "ret = %x\n", ret); + + d = 1; + ret = p__Dscale(&d, -1); + ok(d == 0.5, "d = %f\n", d); + ok(ret == FP_NORMAL, "ret = %x\n", ret); + + d = 1; + ret = p__Dscale(&d, -99999); + ok(d == 0, "d = %f\n", d); + ok(ret == FP_ZERO, "ret = %x\n", ret); + + d = 1; + ret = p__Dscale(&d, 999999); + ok(d == INFINITY, "d = %f\n", d); + ok(ret == FP_INFINITE, "ret = %x\n", ret); + + d = NAN; + ret = p__Dscale(&d, 1); + ok(ret == FP_NAN, "ret = %x\n", ret); +} + static void test_tr2_sys__File_size(void) { ULONGLONG val; @@ -1001,6 +1054,7 @@ START_TEST(msvcp120) test__Call_once(); test__Do_call(); test__Dtest(); + test__Dscale(); test_tr2_sys__File_size(); test_tr2_sys__Equivalent(); diff --git a/dlls/msvcp120_app/msvcp120_app.spec b/dlls/msvcp120_app/msvcp120_app.spec index bf7b542..1470b3c 100644 --- a/dlls/msvcp120_app/msvcp120_app.spec +++ b/dlls/msvcp120_app/msvcp120_app.spec @@ -3684,7 +3684,7 @@ @ stub _Dint @ stub _Dnorm @ cdecl _Do_call(ptr) msvcp120._Do_call -@ stub _Dscale +@ cdecl _Dscale(ptr long) msvcp120._Dscale @ stub _Dtento @ cdecl _Dtest(ptr) msvcp120._Dtest @ stub _Dunscale @@ -3694,7 +3694,7 @@ @ extern _FDenorm msvcp120._FDenorm @ stub _FDint @ stub _FDnorm -@ stub _FDscale +@ cdecl _FDscale(ptr long) msvcp120._FDscale @ stub _FDtento @ cdecl _FDtest(ptr) msvcp120._FDtest @ stub _FDunscale @@ -3732,7 +3732,7 @@ @ stub _LCosh @ extern _LDenorm msvcp120._LDenorm @ stub _LDint -@ stub _LDscale +@ cdecl _LDscale(ptr long) msvcp120._LDscale @ stub _LDtento @ cdecl _LDtest(ptr) msvcp120._LDtest @ stub _LDunscale diff --git a/dlls/msvcp60/msvcp60.spec b/dlls/msvcp60/msvcp60.spec index 10d04e5..05d0435 100644 --- a/dlls/msvcp60/msvcp60.spec +++ b/dlls/msvcp60/msvcp60.spec @@ -4257,14 +4257,14 @@ @ stub _Cosh @ extern _Denorm _Denorm @ stub _Dnorm -@ stub _Dscale +@ cdecl _Dscale(ptr long) @ cdecl _Dtest(ptr) @ extern _Eps _Eps @ stub _Exp @ stub _FCosh @ extern _FDenorm _FDenorm @ stub _FDnorm -@ stub _FDscale +@ cdecl _FDscale(ptr long) @ cdecl _FDtest(ptr) @ extern _FEps _FEps @ stub _FExp @@ -4281,7 +4281,7 @@ @ extern _Inf _Inf @ stub _LCosh @ extern _LDenorm _LDenorm -@ stub _LDscale +@ cdecl _LDscale(ptr long) _Dscale @ cdecl _LDtest(ptr) _Dtest @ extern _LEps _LEps @ stub _LExp diff --git a/dlls/msvcp70/msvcp70.spec b/dlls/msvcp70/msvcp70.spec index f390d8a..a6f5ef3 100644 --- a/dlls/msvcp70/msvcp70.spec +++ b/dlls/msvcp70/msvcp70.spec @@ -5043,14 +5043,14 @@ @ stub _Cosh @ extern _Denorm @ stub _Dnorm -@ stub _Dscale +@ cdecl _Dscale(ptr long) @ cdecl _Dtest(ptr) @ extern _Eps @ stub _Exp @ stub _FCosh @ extern _FDenorm @ stub _FDnorm -@ stub _FDscale +@ cdecl _FDscale(ptr long) @ cdecl _FDtest(ptr) @ extern _FEps @ stub _FExp @@ -5068,7 +5068,7 @@ @ extern _Inf @ stub _LCosh @ extern _LDenorm -@ stub _LDscale +@ cdecl _LDscale(ptr long) _Dscale @ cdecl _LDtest(ptr) _Dtest @ extern _LEps @ stub _LExp diff --git a/dlls/msvcp71/msvcp71.spec b/dlls/msvcp71/msvcp71.spec index 2675c9a..ba2fcaf 100644 --- a/dlls/msvcp71/msvcp71.spec +++ b/dlls/msvcp71/msvcp71.spec @@ -5097,14 +5097,14 @@ @ stub _Cosh @ extern _Denorm @ stub _Dnorm -@ stub _Dscale +@ cdecl _Dscale(ptr long) @ cdecl _Dtest(ptr) @ extern _Eps @ stub _Exp @ stub _FCosh @ extern _FDenorm @ stub _FDnorm -@ stub _FDscale +@ cdecl _FDscale(ptr long) @ cdecl _FDtest(ptr) @ extern _FEps @ stub _FExp @@ -5124,7 +5124,7 @@ @ extern _Inf @ stub _LCosh @ extern _LDenorm -@ stub _LDscale +@ cdecl _LDscale(ptr long) _Dscale @ cdecl _LDtest(ptr) _Dtest @ extern _LEps @ stub _LExp diff --git a/dlls/msvcp80/msvcp80.spec b/dlls/msvcp80/msvcp80.spec index ed04def..d801608 100644 --- a/dlls/msvcp80/msvcp80.spec +++ b/dlls/msvcp80/msvcp80.spec @@ -5703,7 +5703,7 @@ @ stub _Cosh @ extern _Denorm @ stub _Dnorm -@ stub _Dscale +@ cdecl _Dscale(ptr long) @ stub _Dtentox @ cdecl _Dtest(ptr) @ stub _Dunscale @@ -5712,7 +5712,7 @@ @ stub _FCosh @ extern _FDenorm @ stub _FDnorm -@ stub _FDscale +@ cdecl _FDscale(ptr long) @ stub _FDtentox @ cdecl _FDtest(ptr) @ stub _FDunscale @@ -5734,7 +5734,7 @@ @ extern _Inf @ stub _LCosh @ extern _LDenorm -@ stub _LDscale +@ cdecl _LDscale(ptr long) _Dscale @ stub _LDtentox @ cdecl _LDtest(ptr) _Dtest @ stub _LDunscale diff --git a/dlls/msvcp90/math.c b/dlls/msvcp90/math.c index 9b827f3..2d9996db 100644 --- a/dlls/msvcp90/math.c +++ b/dlls/msvcp90/math.c @@ -2260,3 +2260,17 @@ short __cdecl _FDtest(float *x) { return dclass(*x); } + +/* _Dscale */ +short __cdecl _Dscale(double *x, int exp) +{ + *x *= pow(2, exp); + return dclass(*x); +} + +/* _FDscale */ +short __cdecl _FDscale(float *x, int exp) +{ + *x *= pow(2, exp); + return dclass(*x); +} diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec index d3a314b..f2e3a5b 100644 --- a/dlls/msvcp90/msvcp90.spec +++ b/dlls/msvcp90/msvcp90.spec @@ -6479,14 +6479,14 @@ @ stub _Cosh @ extern _Denorm @ stub _Dnorm -@ stub _Dscale +@ cdecl _Dscale(ptr long) @ cdecl _Dtest(ptr) @ extern _Eps @ stub _Exp @ stub _FCosh @ extern _FDenorm @ stub _FDnorm -@ stub _FDscale +@ cdecl _FDscale(ptr long) @ cdecl _FDtest(ptr) @ extern _FEps @ stub _FExp @@ -6506,7 +6506,7 @@ @ extern _Inf @ stub _LCosh @ extern _LDenorm -@ stub _LDscale +@ cdecl _LDscale(ptr long) _Dscale @ cdecl _LDtest(ptr) _Dtest @ extern _LEps @ stub _LExp
1
0
0
0
Piotr Caban : msvcr60: Fix _mbscoll implementation.
by Alexandre Julliard
02 Oct '15
02 Oct '15
Module: wine Branch: master Commit: aa612612b759e9041b9c7059a640b02c1cb57de6 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=aa612612b759e9041b9c7059a…
Author: Piotr Caban <piotr(a)codeweavers.com> Date: Thu Oct 1 18:29:10 2015 +0200 msvcr60: Fix _mbscoll implementation. Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> --- dlls/msvcrt/mbcs.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index ea650f4..e7adaad 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -829,7 +829,12 @@ int CDECL _mbsnbicoll(const unsigned char *str1, const unsigned char *str2, MSVC */ int CDECL _mbsicoll(const unsigned char* str, const unsigned char* cmp) { +#if _MSVCR_VER>=60 && _MSVCR_VER<=71 + return CompareStringA(get_mbcinfo()->mblcid, NORM_IGNORECASE, + (const char*)str, -1, (const char*)cmp, -1)-CSTR_EQUAL; +#else return _mbsnbicoll_l(str, cmp, -1, NULL); +#endif } /********************************************************************* @@ -870,7 +875,12 @@ int CDECL _mbsnbcoll(const unsigned char *str1, const unsigned char *str2, MSVCR */ int CDECL _mbscoll(const unsigned char* str, const unsigned char* cmp) { +#if _MSVCR_VER>=60 && _MSVCR_VER<=71 + return CompareStringA(get_mbcinfo()->mblcid, 0, + (const char*)str, -1, (const char*)cmp, -1)-CSTR_EQUAL; +#else return _mbsnbcoll_l(str, cmp, -1, NULL); +#endif } /*********************************************************************
1
0
0
0
Stefan Dösinger : wined3d: WINED3DFMT_B5G5R5X1_UNORM doesn't have an alpha channel.
by Alexandre Julliard
02 Oct '15
02 Oct '15
Module: wine Branch: master Commit: a887a87a90cefcd3390e96b9f2d569cdd5def23a URL:
http://source.winehq.org/git/wine.git/?a=commit;h=a887a87a90cefcd3390e96b9f…
Author: Stefan Dösinger <stefan(a)codeweavers.com> Date: Wed Sep 30 15:31:14 2015 +0200 wined3d: WINED3DFMT_B5G5R5X1_UNORM doesn't have an alpha channel. Signed-off-by: Stefan Dösinger <stefan(a)codeweavers.com> --- dlls/wined3d/utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index d31c285..aa6eb62 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -1024,7 +1024,7 @@ static const struct wined3d_format_texture_info format_texture_info[] = WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING | WINED3DFMT_FLAG_RENDERTARGET, ARB_ES2_COMPATIBILITY, NULL}, - {WINED3DFMT_B5G5R5X1_UNORM, GL_RGB5, GL_RGB5_A1, 0, + {WINED3DFMT_B5G5R5X1_UNORM, GL_RGB5, GL_RGB5, 0, GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, 0, WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING | WINED3DFMT_FLAG_FILTERING, WINED3D_GL_EXT_NONE, NULL},
1
0
0
0
Stefan Dösinger : include: Fix two IDirect3DSwapChain9Ex COM Macro names.
by Alexandre Julliard
02 Oct '15
02 Oct '15
Module: wine Branch: master Commit: 20b552b9084ac727817e4073d9adc3f156549f1e URL:
http://source.winehq.org/git/wine.git/?a=commit;h=20b552b9084ac727817e4073d…
Author: Stefan Dösinger <stefan(a)codeweavers.com> Date: Mon Sep 28 21:02:11 2015 +0200 include: Fix two IDirect3DSwapChain9Ex COM Macro names. Signed-off-by: Stefan Dösinger <stefan(a)codeweavers.com> --- include/d3d9.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/d3d9.h b/include/d3d9.h index 712104b..24d2968 100644 --- a/include/d3d9.h +++ b/include/d3d9.h @@ -494,8 +494,8 @@ __CRT_UUID_DECL(IDirect3DSwapChain9Ex, 0x91886caf, 0x1c3d, 0x4d2e, 0xa0, /*** IDirect3DSwapChain9 methods ***/ #define IDirect3DSwapChain9Ex_Present(p,a,b,c,d,e) (p)->lpVtbl->Present(p,a,b,c,d,e) #define IDirect3DSwapChain9Ex_GetFrontBufferData(p,a) (p)->lpVtbl->GetFrontBufferData(p,a) -#define IDirect3DSwapChain9EX_GetBackBuffer(p,a,b,c) (p)->lpVtbl->GetBackBuffer(p,a,b,c) -#define IDirect3DSwapChain9EX_GetRasterStatus(p,a) (p)->lpVtbl->GetRasterStatus(p,a) +#define IDirect3DSwapChain9Ex_GetBackBuffer(p,a,b,c) (p)->lpVtbl->GetBackBuffer(p,a,b,c) +#define IDirect3DSwapChain9Ex_GetRasterStatus(p,a) (p)->lpVtbl->GetRasterStatus(p,a) #define IDirect3DSwapChain9Ex_GetDisplayMode(p,a) (p)->lpVtbl->GetDisplayMode(p,a) #define IDirect3DSwapChain9Ex_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a) #define IDirect3DSwapChain9Ex_GetPresentParameters(p,a) (p)->lpVtbl->GetPresentParameters(p,a)
1
0
0
0
← Newer
1
...
67
68
69
70
71
72
73
74
75
Older →
Jump to page:
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
Results per page:
10
25
50
100
200