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
April 2023
----- 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
1 participants
817 discussions
Start a n
N
ew thread
Stefan Dösinger : include: X86 msvc has _InterlockedExchangePointer and _InterlockedCompareExchangePointer.
by Alexandre Julliard
11 Apr '23
11 Apr '23
Module: wine Branch: master Commit: 64eed89a537faaf57da3cad0cd4681b8e0128c13 URL:
https://gitlab.winehq.org/wine/wine/-/commit/64eed89a537faaf57da3cad0cd4681…
Author: Stefan Dösinger <stefan(a)codeweavers.com> Date: Tue Mar 28 16:27:15 2023 +0300 include: X86 msvc has _InterlockedExchangePointer and _InterlockedCompareExchangePointer. I fixed this issue in ad05f33d67, but a40973f20 regressed this again. I was carrying a patch for quite a while, feeling dejavu. According to boost they are available since MSVC 2015. I don't have old versions of msvc hanging around, and we don't put much value in keeping old versions working, so just use them unconditionally. --- include/winnt.h | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/include/winnt.h b/include/winnt.h index e15ac364ef2..15c254fbcff 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -6541,8 +6541,10 @@ typedef enum _FIRMWARE_TYPE #pragma intrinsic(_InterlockedAnd) #pragma intrinsic(_InterlockedCompareExchange) #pragma intrinsic(_InterlockedCompareExchange64) +#pragma intrinsic(_InterlockedCompareExchangePointer) #pragma intrinsic(_InterlockedExchange) #pragma intrinsic(_InterlockedExchangeAdd) +#pragma intrinsic(_InterlockedExchangePointer) #pragma intrinsic(_InterlockedIncrement) #pragma intrinsic(_InterlockedIncrement16) #pragma intrinsic(_InterlockedDecrement) @@ -6556,10 +6558,12 @@ BOOLEAN _BitScanReverse(unsigned long*,unsigned long); long _InterlockedAnd(long volatile *,long); long _InterlockedCompareExchange(long volatile*,long,long); long long _InterlockedCompareExchange64(long long volatile*,long long,long long); +void * _InterlockedCompareExchangePointer(void *volatile*,void*,void*); long _InterlockedDecrement(long volatile*); short _InterlockedDecrement16(short volatile*); long _InterlockedExchange(long volatile*,long); long _InterlockedExchangeAdd(long volatile*,long); +void * _InterlockedExchangePointer(void *volatile*,void*); long _InterlockedIncrement(long volatile*); short _InterlockedIncrement16(short volatile*); long _InterlockedOr(long volatile *,long); @@ -6569,19 +6573,15 @@ DECLSPEC_NORETURN void __fastfail(unsigned int); #ifndef __i386__ #pragma intrinsic(_InterlockedAnd64) -#pragma intrinsic(_InterlockedCompareExchangePointer) #pragma intrinsic(_InterlockedDecrement64) #pragma intrinsic(_InterlockedExchangeAdd64) -#pragma intrinsic(_InterlockedExchangePointer) #pragma intrinsic(_InterlockedIncrement64) #pragma intrinsic(_InterlockedOr64) #pragma intrinsic(_InterlockedXor64) __int64 _InterlockedAnd64(__int64 volatile *, __int64); -void * _InterlockedCompareExchangePointer(void *volatile*,void*,void*); __int64 _InterlockedDecrement64(__int64 volatile *); __int64 _InterlockedExchangeAdd64(__int64 volatile *, __int64); -void * _InterlockedExchangePointer(void *volatile*,void*); __int64 _InterlockedIncrement64(__int64 volatile *); __int64 _InterlockedOr64(__int64 volatile *, __int64); __int64 _InterlockedXor64(__int64 volatile *, __int64); @@ -6595,11 +6595,6 @@ static FORCEINLINE __int64 InterlockedAnd64( __int64 volatile *dest, __int64 val return prev; } -static FORCEINLINE void * WINAPI InterlockedCompareExchangePointer( void *volatile *dest, void *xchg, void *compare ) -{ - return (void *)_InterlockedCompareExchange( (long volatile*)dest, (long)xchg, (long)compare ); -} - static FORCEINLINE __int64 InterlockedExchangeAdd64( __int64 volatile *dest, __int64 val ) { __int64 prev; @@ -6607,11 +6602,6 @@ static FORCEINLINE __int64 InterlockedExchangeAdd64( __int64 volatile *dest, __i return prev; } -static FORCEINLINE void * WINAPI InterlockedExchangePointer( void *volatile *dest, void *val ) -{ - return (void *)_InterlockedExchange( (long volatile*)dest, (long)val ); -} - static FORCEINLINE __int64 InterlockedIncrement64( __int64 volatile *dest ) { return InterlockedExchangeAdd64( dest, 1 ) + 1;
1
0
0
0
Alex Henrie : winex11: Allow replacing either context in wglShareLists.
by Alexandre Julliard
11 Apr '23
11 Apr '23
Module: wine Branch: master Commit: 28233dd3bc4963e6205d33aedb665bfdb995c9c6 URL:
https://gitlab.winehq.org/wine/wine/-/commit/28233dd3bc4963e6205d33aedb665b…
Author: Alex Henrie <alexhenrie24(a)gmail.com> Date: Sun Apr 9 22:32:57 2023 -0600 winex11: Allow replacing either context in wglShareLists. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=11436
--- dlls/opengl32/tests/opengl.c | 5 ++--- dlls/winex11.drv/opengl.c | 41 ++++++++++++++++++++++------------------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/dlls/opengl32/tests/opengl.c b/dlls/opengl32/tests/opengl.c index d7a28339916..fca0aea73e7 100644 --- a/dlls/opengl32/tests/opengl.c +++ b/dlls/opengl32/tests/opengl.c @@ -577,7 +577,6 @@ static void test_sharelists(HDC winhdc) if (source_sharing) { res = wglShareLists(other, source); - todo_wine_if(source_current) ok(res, "Sharing of display lists from other to source failed\n"); } if (dest_current) @@ -588,12 +587,12 @@ static void test_sharelists(HDC winhdc) if (dest_sharing) { res = wglShareLists(other, dest); - todo_wine_if(dest_current) + todo_wine_if(source_sharing && dest_current) ok(res, "Sharing of display lists from other to dest failed\n"); } res = wglShareLists(source, dest); - todo_wine_if(dest_current || dest_sharing) + todo_wine_if((source_current || source_sharing) && (dest_current || dest_sharing)) ok(res || broken(nvidia && !source_sharing && dest_sharing), "Sharing of display lists from source to dest failed\n"); diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c index 565df8bb4c6..8c1ab90595a 100644 --- a/dlls/winex11.drv/opengl.c +++ b/dlls/winex11.drv/opengl.c @@ -1916,6 +1916,8 @@ done: */ static BOOL glxdrv_wglShareLists(struct wgl_context *org, struct wgl_context *dest) { + struct wgl_context *keep, *clobber; + TRACE("(%p, %p)\n", org, dest); /* Sharing of display lists works differently in GLX and WGL. In case of GLX it is done @@ -1926,34 +1928,35 @@ static BOOL glxdrv_wglShareLists(struct wgl_context *org, struct wgl_context *de * so there delaying context creation doesn't work. * * The new approach is to create a GLX context in wglCreateContext / wglCreateContextAttribsARB - * and when a program requests sharing we recreate the destination context if it hasn't been made - * current or when it hasn't shared display lists before. + * and when a program requests sharing we recreate the destination or source context if it + * hasn't been made current and it hasn't shared display lists before. */ - if(dest->has_been_current) + if (!dest->has_been_current && !dest->sharing) { - ERR("Could not share display lists because the destination context has already been current\n"); - return FALSE; + keep = org; + clobber = dest; } - else if(dest->sharing) + else if (!org->has_been_current && !org->sharing) { - ERR("Could not share display lists because the destination context has already shared lists\n"); - return FALSE; + keep = dest; + clobber = org; } else { - /* Re-create the GLX context and share display lists */ - pglXDestroyContext(gdi_display, dest->ctx); - dest->ctx = create_glxcontext(gdi_display, dest, org->ctx); - TRACE(" re-created context (%p) for Wine context %p (%s) sharing lists with ctx %p (%s)\n", - dest->ctx, dest, debugstr_fbconfig(dest->fmt->fbconfig), - org->ctx, debugstr_fbconfig( org->fmt->fbconfig)); - - org->sharing = TRUE; - dest->sharing = TRUE; - return TRUE; + ERR("Could not share display lists because both of the contexts have already been current or shared\n"); + return FALSE; } - return FALSE; + + pglXDestroyContext(gdi_display, clobber->ctx); + clobber->ctx = create_glxcontext(gdi_display, clobber, keep->ctx); + TRACE("re-created context (%p) for Wine context %p (%s) sharing lists with ctx %p (%s)\n", + clobber->ctx, clobber, debugstr_fbconfig(clobber->fmt->fbconfig), + keep->ctx, debugstr_fbconfig(keep->fmt->fbconfig)); + + org->sharing = TRUE; + dest->sharing = TRUE; + return TRUE; } static void wglFinish(void)
1
0
0
0
Alex Henrie : opengl32/tests: Make the wglShareLists tests comprehensive.
by Alexandre Julliard
11 Apr '23
11 Apr '23
Module: wine Branch: master Commit: c3eca06a2aa5d7fc791f32a89a59d0a239b37bb1 URL:
https://gitlab.winehq.org/wine/wine/-/commit/c3eca06a2aa5d7fc791f32a89a59d0…
Author: Alex Henrie <alexhenrie24(a)gmail.com> Date: Sun Apr 9 22:32:57 2023 -0600 opengl32/tests: Make the wglShareLists tests comprehensive. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=51311
--- dlls/opengl32/tests/opengl.c | 118 +++++++++++++++++++++++++++---------------- 1 file changed, 74 insertions(+), 44 deletions(-) diff --git a/dlls/opengl32/tests/opengl.c b/dlls/opengl32/tests/opengl.c index 6979e00792e..d7a28339916 100644 --- a/dlls/opengl32/tests/opengl.c +++ b/dlls/opengl32/tests/opengl.c @@ -541,54 +541,84 @@ static void test_setpixelformat(HDC winhdc) static void test_sharelists(HDC winhdc) { - HGLRC hglrc1, hglrc2, hglrc3; - BOOL res; - - hglrc1 = wglCreateContext(winhdc); - res = wglShareLists(0, 0); - ok(res == FALSE, "Sharing display lists for no contexts passed!\n"); + BOOL res, nvidia, amd, source_current, source_sharing, dest_current, dest_sharing; + HGLRC source, dest, other; - /* Test 1: Create a context and just share lists without doing anything special */ - hglrc2 = wglCreateContext(winhdc); - if(hglrc2) - { - res = wglShareLists(hglrc1, hglrc2); - ok(res, "Sharing of display lists failed\n"); - wglDeleteContext(hglrc2); - } + res = wglShareLists(NULL, NULL); + ok(!res, "Sharing display lists for no contexts passed!\n"); - /* Test 2: Share display lists with a 'destination' context which has been made current */ - hglrc2 = wglCreateContext(winhdc); - if(hglrc2) - { - res = wglMakeCurrent(winhdc, hglrc2); - ok(res, "Make current failed\n"); - res = wglShareLists(hglrc1, hglrc2); - todo_wine ok(res, "Sharing display lists with a destination context which has been made current failed\n"); - wglMakeCurrent(0, 0); - wglDeleteContext(hglrc2); - } + nvidia = !!strstr((const char*)glGetString(GL_VENDOR), "NVIDIA"); + amd = strstr((const char*)glGetString(GL_VENDOR), "AMD") || + strstr((const char*)glGetString(GL_VENDOR), "ATI"); - /* Test 3: Share display lists with a context which already shares display lists with another context. - * According to MSDN the second parameter cannot share any display lists but some buggy drivers might allow it */ - hglrc3 = wglCreateContext(winhdc); - if(hglrc3) + for (source_current = FALSE; source_current <= TRUE; source_current++) { - res = wglShareLists(hglrc3, hglrc1); - ok(res == FALSE, "Sharing of display lists passed for a context which already shared lists before\n"); - wglDeleteContext(hglrc3); - } - - /* Test 4: Share display lists with a 'source' context which has been made current */ - hglrc2 = wglCreateContext(winhdc); - if(hglrc2) - { - res = wglMakeCurrent(winhdc, hglrc1); - ok(res, "Make current failed\n"); - res = wglShareLists(hglrc1, hglrc2); - ok(res, "Sharing display lists with a source context which has been made current failed\n"); - wglMakeCurrent(0, 0); - wglDeleteContext(hglrc2); + for (source_sharing = FALSE; source_sharing <= TRUE; source_sharing++) + { + for (dest_current = FALSE; dest_current <= TRUE; dest_current++) + { + for (dest_sharing = FALSE; dest_sharing <= TRUE; dest_sharing++) + { + winetest_push_context("source_current=%d source_sharing=%d dest_current=%d dest_sharing=%d", + source_current, source_sharing, dest_current, dest_sharing); + + source = wglCreateContext(winhdc); + ok(!!source, "Create source context failed\n"); + dest = wglCreateContext(winhdc); + ok(!!dest, "Create dest context failed\n"); + other = wglCreateContext(winhdc); + ok(!!other, "Create other context failed\n"); + + if (source_current) + { + res = wglMakeCurrent(winhdc, source); + ok(res, "Make source current failed\n"); + } + if (source_sharing) + { + res = wglShareLists(other, source); + todo_wine_if(source_current) + ok(res, "Sharing of display lists from other to source failed\n"); + } + if (dest_current) + { + res = wglMakeCurrent(winhdc, dest); + ok(res, "Make dest current failed\n"); + } + if (dest_sharing) + { + res = wglShareLists(other, dest); + todo_wine_if(dest_current) + ok(res, "Sharing of display lists from other to dest failed\n"); + } + + res = wglShareLists(source, dest); + todo_wine_if(dest_current || dest_sharing) + ok(res || broken(nvidia && !source_sharing && dest_sharing), + "Sharing of display lists from source to dest failed\n"); + + if (source_current || dest_current) + { + res = wglMakeCurrent(NULL, NULL); + ok(res, "Make none current failed\n"); + } + res = wglDeleteContext(source); + ok(res, "Delete source context failed\n"); + res = wglDeleteContext(dest); + ok(res, "Delete dest context failed\n"); + if (!strcmp(winetest_platform, "wine") || !amd || source_sharing || !dest_sharing) + { + /* If source_sharing=FALSE and dest_sharing=TRUE, wglShareLists succeeds on AMD, but + * sometimes wglDeleteContext crashes afterwards. On Wine, both functions should always + * succeed in this case. */ + res = wglDeleteContext(other); + ok(res, "Delete other context failed\n"); + } + + winetest_pop_context(); + } + } + } } }
1
0
0
0
Biswapriyo Nath : include: Fix IDirectXVideoDecoderService declaration in dxva2api.idl.
by Alexandre Julliard
10 Apr '23
10 Apr '23
Module: wine Branch: master Commit: 467604c6613e7a41201e0af34f009700bc8ac392 URL:
https://gitlab.winehq.org/wine/wine/-/commit/467604c6613e7a41201e0af34f0097…
Author: Biswapriyo Nath <nathbappai(a)gmail.com> Date: Tue Apr 11 01:07:00 2023 +0530 include: Fix IDirectXVideoDecoderService declaration in dxva2api.idl. This matches the declaration with official documentation and fixes the following two compiler errors in apitrace project. d3d9trace.cpp:28469:59: error: invalid conversion from 'const DXVA2_ConfigPictureDecode*' to 'DXVA2_ConfigPictureDecode*' [-fpermissive] d3d9trace.cpp:28194:65: error: invalid conversion from 'void*' to 'IUnknown*' [-fpermissive] Signed-off-by: Biswapriyo Nath <nathbappai(a)gmail.com> --- dlls/dxva2/main.c | 4 ++-- include/dxva2api.idl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dlls/dxva2/main.c b/dlls/dxva2/main.c index c5ca3439a68..d48cf8de230 100644 --- a/dlls/dxva2/main.c +++ b/dlls/dxva2/main.c @@ -701,7 +701,7 @@ static HRESULT WINAPI device_manager_decoder_service_GetDecoderRenderTargets(IDi } static HRESULT WINAPI device_manager_decoder_service_GetDecoderConfigurations(IDirectXVideoDecoderService *iface, - REFGUID guid, const DXVA2_VideoDesc *video_desc, IUnknown *reserved, UINT *count, DXVA2_ConfigPictureDecode **configs) + REFGUID guid, const DXVA2_VideoDesc *video_desc, void *reserved, UINT *count, DXVA2_ConfigPictureDecode **configs) { FIXME("%p, %s, %p, %p, %p, %p.\n", iface, debugstr_guid(guid), video_desc, reserved, count, configs); @@ -709,7 +709,7 @@ static HRESULT WINAPI device_manager_decoder_service_GetDecoderConfigurations(ID } static HRESULT WINAPI device_manager_decoder_service_CreateVideoDecoder(IDirectXVideoDecoderService *iface, - REFGUID guid, const DXVA2_VideoDesc *video_desc, DXVA2_ConfigPictureDecode *config, IDirect3DSurface9 **rts, + REFGUID guid, const DXVA2_VideoDesc *video_desc, const DXVA2_ConfigPictureDecode *config, IDirect3DSurface9 **rts, UINT num_surfaces, IDirectXVideoDecoder **decoder) { FIXME("%p, %s, %p, %p, %p, %u, %p.\n", iface, debugstr_guid(guid), video_desc, config, rts, num_surfaces, diff --git a/include/dxva2api.idl b/include/dxva2api.idl index 63de780f0df..205491e3790 100644 --- a/include/dxva2api.idl +++ b/include/dxva2api.idl @@ -631,14 +631,14 @@ interface IDirectXVideoDecoderService : IDirectXVideoAccelerationService HRESULT GetDecoderConfigurations( [in] REFGUID guid, [in] const DXVA2_VideoDesc *pVideoDesc, - [in] IUnknown *pReserved, + [in] void *pReserved, [out] UINT *pCount, [out] DXVA2_ConfigPictureDecode **ppConfigs); HRESULT CreateVideoDecoder( [in] REFGUID guid, [in] const DXVA2_VideoDesc *pVideoDesc, - [in] DXVA2_ConfigPictureDecode *pConfig, + [in] const DXVA2_ConfigPictureDecode *pConfig, [in] IDirect3DSurface9 **ppDecoderRenderTargets, [in] UINT NumSurfaces, [out] IDirectXVideoDecoder **ppDecode);
1
0
0
0
Jacek Caban : mshtml: Wine Gecko 2.47.4 release.
by Alexandre Julliard
10 Apr '23
10 Apr '23
Module: wine Branch: master Commit: 84f1f36686dc456abcd27164429235bd64462e60 URL:
https://gitlab.winehq.org/wine/wine/-/commit/84f1f36686dc456abcd27164429235…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Apr 3 16:55:12 2023 +0200 mshtml: Wine Gecko 2.47.4 release. --- dlls/appwiz.cpl/addons.c | 6 +++--- dlls/mshtml/nsiface.idl | 7 ++++++- tools/gitlab/test.yml | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/dlls/appwiz.cpl/addons.c b/dlls/appwiz.cpl/addons.c index a5fdda3e81f..57855648ff1 100644 --- a/dlls/appwiz.cpl/addons.c +++ b/dlls/appwiz.cpl/addons.c @@ -46,13 +46,13 @@ WINE_DEFAULT_DEBUG_CHANNEL(appwizcpl); -#define GECKO_VERSION "2.47.3" +#define GECKO_VERSION "2.47.4" #ifdef __i386__ #define GECKO_ARCH "x86" -#define GECKO_SHA "e5b9b06d3ce355646a8d2e72e044e37e1e0c8d18464eb1985adcd187a7f48e01" +#define GECKO_SHA "26cecc47706b091908f7f814bddb074c61beb8063318e9efc5a7f789857793d6" #elif defined(__x86_64__) #define GECKO_ARCH "x86_64" -#define GECKO_SHA "a53ee954392b6d1fe3d68545f6e4e2a97afbc8dc8b03a8b443349545ce139675" +#define GECKO_SHA "e590b7d988a32d6aa4cf1d8aa3aa3d33766fdd4cf4c89c2dcc2095ecb28d066f" #else #define GECKO_ARCH "" #define GECKO_SHA "???" diff --git a/dlls/mshtml/nsiface.idl b/dlls/mshtml/nsiface.idl index 1e97f1fc63b..8ad5e871e21 100644 --- a/dlls/mshtml/nsiface.idl +++ b/dlls/mshtml/nsiface.idl @@ -25,7 +25,7 @@ #pragma makedep header -cpp_quote("#define GECKO_VERSION \"2.47.3\"") +cpp_quote("#define GECKO_VERSION \"2.47.4\"") cpp_quote("#define GECKO_VERSION_STRING \"Wine Gecko \" GECKO_VERSION") import "wtypes.idl"; @@ -114,6 +114,7 @@ interface nsIDOMHTMLSelectElement; interface nsIFile; interface nsIDocShell; interface mozIDOMWindowProxy; +interface nsIDOMMediaQueryListListener; interface IMoniker; @@ -919,6 +920,7 @@ interface nsIDOMMediaQueryList : nsISupports { nsresult GetMedia(nsAString *aMedia); nsresult GetMatches(bool *_retval); + nsresult SetListener(nsIDOMMediaQueryListListener *listener); } [ @@ -1445,6 +1447,8 @@ interface nsIDOMHTMLDocument : nsIDOMDocument nsresult GetSelection(nsISelection **_retval); nsresult CaptureEvents(); nsresult ReleaseEvents(); + nsresult GetIECompatMode(uint32_t *aIECompatMode); + nsresult SetIECompatMode(uint32_t aIECompatMode); } [ @@ -1777,6 +1781,7 @@ interface nsIDOMHTMLInputElement : nsISupports nsresult MozGetFileNameArray(uint32_t *aLength, PRUnichar ***aFileNames); nsresult MozSetFileNameArray(const PRUnichar **aFileNames, uint32_t aLength); nsresult MozIsTextField(bool aExcludePassword, bool *_retval); + nsresult GetComplete(bool *aComplete); } [ diff --git a/tools/gitlab/test.yml b/tools/gitlab/test.yml index 78c462c3e20..490ca3b5b84 100644 --- a/tools/gitlab/test.yml +++ b/tools/gitlab/test.yml @@ -6,7 +6,7 @@ interruptible: true variables: GIT_STRATEGY: none - GECKO_VER: 2.47.3 + GECKO_VER: 2.47.4 MONO_VER: 7.4.0 cache: - key: wine-gecko-$GECKO_VER
1
0
0
0
Alexandre Julliard : msvcrt: Use the tanh()/tanhf() implementation from the bundled musl library.
by Alexandre Julliard
10 Apr '23
10 Apr '23
Module: wine Branch: master Commit: 5c00be28fc747c51375c9999ec1b622549197abe URL:
https://gitlab.winehq.org/wine/wine/-/commit/5c00be28fc747c51375c9999ec1b62…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Apr 5 14:29:41 2023 +0200 msvcrt: Use the tanh()/tanhf() implementation from the bundled musl library. --- dlls/crtdll/crtdll.spec | 2 +- dlls/msvcr100/msvcr100.spec | 4 +- dlls/msvcr110/msvcr110.spec | 4 +- dlls/msvcr120/msvcr120.spec | 4 +- dlls/msvcr70/msvcr70.spec | 2 +- dlls/msvcr71/msvcr71.spec | 2 +- dlls/msvcr80/msvcr80.spec | 4 +- dlls/msvcr90/msvcr90.spec | 4 +- dlls/msvcrt/math.c | 117 ++++++++------------------------------------ dlls/msvcrt/msvcrt.spec | 4 +- dlls/msvcrtd/msvcrtd.spec | 2 +- libs/musl/src/math/tanh.c | 9 +++- libs/musl/src/math/tanhf.c | 9 +++- 13 files changed, 51 insertions(+), 116 deletions(-)
1
0
0
0
Alexandre Julliard : msvcrt: Use the atanh()/atanhf() implementation from the bundled musl library.
by Alexandre Julliard
10 Apr '23
10 Apr '23
Module: wine Branch: master Commit: 4ffb1199e37ddb96c7b361bb97767a74ef5e2902 URL:
https://gitlab.winehq.org/wine/wine/-/commit/4ffb1199e37ddb96c7b361bb97767a…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri Mar 31 16:53:49 2023 +0200 msvcrt: Use the atanh()/atanhf() implementation from the bundled musl library. --- dlls/msvcr120/msvcr120.spec | 6 ++--- dlls/msvcrt/math.c | 61 +++++++-------------------------------------- dlls/ucrtbase/ucrtbase.spec | 12 ++++----- libs/musl/src/math/atanh.c | 2 ++ libs/musl/src/math/atanhf.c | 2 ++ 5 files changed, 22 insertions(+), 61 deletions(-) diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index f536aba9ba3..cfc81d75804 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -2026,9 +2026,9 @@ @ cdecl -arch=!i386 atanf(float) @ cdecl atan2(double double) @ cdecl -arch=!i386 atan2f(float float) -@ cdecl atanh(double) -@ cdecl atanhf(float) -@ cdecl atanhl(double) atanh +@ cdecl atanh(double) MSVCRT_atanh +@ cdecl atanhf(float) MSVCRT_atanhf +@ cdecl atanhl(double) MSVCRT_atanh @ cdecl -private atexit(ptr) MSVCRT_atexit # not imported to avoid conflicts with Mingw @ cdecl atof(str) @ cdecl atoi(str) diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c index 4f95a4747a9..bc138845dce 100644 --- a/dlls/msvcrt/math.c +++ b/dlls/msvcrt/math.c @@ -78,7 +78,7 @@ void msvcrt_init_math( void *module ) } /* Copied from musl: src/internal/libm.h */ -#if !defined(__i386__) || _MSVCR_VER>=120 +#ifndef __i386__ static inline float fp_barrierf(float x) { volatile float y = x; @@ -3377,73 +3377,30 @@ float CDECL MSVCRT_acoshf(float x) /********************************************************************* * atanh (MSVCR120.@) - * - * Copied from musl: src/math/atanh.c */ -double CDECL atanh(double x) +double CDECL MSVCRT_atanh(double x) { - UINT64 ux = *(UINT64*)&x; - int e = ux >> 52 & 0x7ff; - int s = ux >> 63; - - /* |x| */ - ux &= (UINT64)-1 / 2; - x = *(double*)&ux; - - if (x > 1) { + if (fabs(x) > 1) + { *_errno() = EDOM; feraiseexcept(FE_INVALID); return NAN; } - - if (e < 0x3ff - 1) { - if (e < 0x3ff - 32) { - fp_barrier(x + 0x1p120f); - if (e == 0) /* handle underflow */ - fp_barrier(x * x); - } else { /* |x| < 0.5, up to 1.7ulp error */ - x = 0.5 * log1p(2 * x + 2 * x * x / (1 - x)); - } - } else { /* avoid overflow */ - x = 0.5 * log1p(2 * (x / (1 - x))); - if (isinf(x)) *_errno() = ERANGE; - } - return s ? -x : x; + return atanh( x ); } /********************************************************************* * atanhf (MSVCR120.@) - * - * Copied from musl: src/math/atanhf.c */ -float CDECL atanhf(float x) +float CDECL MSVCRT_atanhf(float x) { - UINT32 ux = *(UINT32*)&x; - int s = ux >> 31; - - /* |x| */ - ux &= 0x7fffffff; - x = *(float*)&ux; - - if (x > 1) { + if (fabs(x) > 1) + { *_errno() = EDOM; feraiseexcept(FE_INVALID); return NAN; } - - if (ux < 0x3f800000 - (1 << 23)) { - if (ux < 0x3f800000 - (32 << 23)) { - fp_barrierf(x + 0x1p120f); - if (ux < (1 << 23)) /* handle underflow */ - fp_barrierf(x * x); - } else { /* |x| < 0.5, up to 1.7ulp error */ - x = 0.5f * log1pf(2 * x + 2 * x * x / (1 - x)); - } - } else { /* avoid overflow */ - x = 0.5f * log1pf(2 * (x / (1 - x))); - if (isinf(x)) *_errno() = ERANGE; - } - return s ? -x : x; + return atanhf( x ); } #endif /* _MSVCR_VER>=120 */ diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 5bea04dad62..258a1aa945a 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -1576,9 +1576,9 @@ @ cdecl _o_atan2(double double) atan2 @ cdecl -arch=!i386 _o_atan2f(float float) atan2f @ cdecl -arch=!i386 _o_atanf(float) atanf -@ cdecl _o_atanh(double) atanh -@ cdecl _o_atanhf(float) atanhf -@ cdecl _o_atanhl(double) atanh +@ cdecl _o_atanh(double) MSVCRT_atanh +@ cdecl _o_atanhf(float) MSVCRT_atanhf +@ cdecl _o_atanhl(double) MSVCRT_atanh @ cdecl _o_atof(str) atof @ cdecl _o_atoi(str) atoi @ cdecl _o_atol(str) atol @@ -2170,9 +2170,9 @@ @ cdecl atan2(double double) @ cdecl -arch=!i386 atan2f(float float) @ cdecl -arch=!i386 atanf(float) -@ cdecl atanh(double) -@ cdecl atanhf(float) -@ cdecl atanhl(double) atanh +@ cdecl atanh(double) MSVCRT_atanh +@ cdecl atanhf(float) MSVCRT_atanhf +@ cdecl atanhl(double) MSVCRT_atanh @ cdecl atof(str) @ cdecl atoi(str) @ cdecl atol(str) diff --git a/libs/musl/src/math/atanh.c b/libs/musl/src/math/atanh.c index b50e4922a10..08776e97f03 100644 --- a/libs/musl/src/math/atanh.c +++ b/libs/musl/src/math/atanh.c @@ -14,6 +14,7 @@ double __cdecl atanh(double x) if (e < 0x3ff - 1) { if (e < 0x3ff - 32) { + fp_barrier(y + 0x1p120f); /* handle underflow */ if (e == 0) FORCE_EVAL((float)y); @@ -24,6 +25,7 @@ double __cdecl atanh(double x) } else { /* avoid overflow */ y = 0.5*log1p(2*(y/(1-y))); + if (isinf(y)) errno = ERANGE; } return s ? -y : y; } diff --git a/libs/musl/src/math/atanhf.c b/libs/musl/src/math/atanhf.c index cbb425ce908..74533fb11b8 100644 --- a/libs/musl/src/math/atanhf.c +++ b/libs/musl/src/math/atanhf.c @@ -13,6 +13,7 @@ float __cdecl atanhf(float x) if (u.i < 0x3f800000 - (1<<23)) { if (u.i < 0x3f800000 - (32<<23)) { + fp_barrierf(y + 0x1p120f); /* handle underflow */ if (u.i < (1<<23)) FORCE_EVAL((float)(y*y)); @@ -23,6 +24,7 @@ float __cdecl atanhf(float x) } else { /* avoid overflow */ y = 0.5f*log1pf(2*(y/(1-y))); + if (isinf(y)) errno = ERANGE; } return s ? -y : y; }
1
0
0
0
Alexandre Julliard : msvcrt: Use the acosh()/acoshf() implementation from the bundled musl library.
by Alexandre Julliard
10 Apr '23
10 Apr '23
Module: wine Branch: master Commit: e2924fafdf161102903dde9e48f832f5ea80132b URL:
https://gitlab.winehq.org/wine/wine/-/commit/e2924fafdf161102903dde9e48f832…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri Mar 31 16:47:56 2023 +0200 msvcrt: Use the acosh()/acoshf() implementation from the bundled musl library. --- dlls/msvcr120/msvcr120.spec | 6 +++--- dlls/msvcrt/math.c | 28 ++++------------------------ dlls/ucrtbase/ucrtbase.spec | 12 ++++++------ 3 files changed, 13 insertions(+), 33 deletions(-) diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 33bd6efb73e..f536aba9ba3 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -2012,9 +2012,9 @@ @ cdecl abs(long) @ cdecl acos(double) @ cdecl -arch=!i386 acosf(float) -@ cdecl acosh(double) -@ cdecl acoshf(float) -@ cdecl acoshl(double) acosh +@ cdecl acosh(double) MSVCRT_acosh +@ cdecl acoshf(float) MSVCRT_acoshf +@ cdecl acoshl(double) MSVCRT_acosh @ cdecl asctime(ptr) @ cdecl asctime_s(ptr long ptr) @ cdecl asin(double) MSVCRT_asin diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c index ea72ca2f01c..4f95a4747a9 100644 --- a/dlls/msvcrt/math.c +++ b/dlls/msvcrt/math.c @@ -3349,50 +3349,30 @@ int CDECL _fdpcomp(float x, float y) /********************************************************************* * acosh (MSVCR120.@) - * - * Copied from musl: src/math/acosh.c */ -double CDECL acosh(double x) +double CDECL MSVCRT_acosh(double x) { - int e = *(UINT64*)&x >> 52 & 0x7ff; - if (x < 1) { *_errno() = EDOM; feraiseexcept(FE_INVALID); return NAN; } - - if (e < 0x3ff + 1) /* |x| < 2, up to 2ulp error in [1,1.125] */ - return log1p(x - 1 + sqrt((x - 1) * (x - 1) + 2 * (x - 1))); - if (e < 0x3ff + 26) /* |x| < 0x1p26 */ - return log(2 * x - 1 / (x + sqrt(x * x - 1))); - /* |x| >= 0x1p26 or nan */ - return log(x) + 0.693147180559945309417232121458176568; + return acosh( x ); } /********************************************************************* * acoshf (MSVCR120.@) - * - * Copied from musl: src/math/acoshf.c */ -float CDECL acoshf(float x) +float CDECL MSVCRT_acoshf(float x) { - UINT32 a = *(UINT32*)&x & 0x7fffffff; - if (x < 1) { *_errno() = EDOM; feraiseexcept(FE_INVALID); return NAN; } - - if (a < 0x3f800000 + (1 << 23)) /* |x| < 2, up to 2ulp error in [1,1.125] */ - return log1pf(x - 1 + sqrtf((x - 1) * (x - 1) + 2 * (x - 1))); - if (*(UINT32*)&x < 0x3f800000 + (12 << 23)) /* 2 <= x < 0x1p12 */ - return logf(2 * x - 1 / (x + sqrtf(x * x - 1))); - /* x >= 0x1p12 or x <= -2 or nan */ - return logf(x) + 0.693147180559945309417232121458176568f; + return acoshf( x ); } /********************************************************************* diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 45d883d410c..5bea04dad62 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -1562,9 +1562,9 @@ @ cdecl _o_abort() abort @ cdecl _o_acos(double) acos @ cdecl -arch=!i386 _o_acosf(float) acosf -@ cdecl _o_acosh(double) acosh -@ cdecl _o_acoshf(float) acoshf -@ cdecl _o_acoshl(double) acosh +@ cdecl _o_acosh(double) MSVCRT_acosh +@ cdecl _o_acoshf(float) MSVCRT_acoshf +@ cdecl _o_acoshl(double) MSVCRT_acosh @ cdecl _o_asctime(ptr) asctime @ cdecl _o_asctime_s(ptr long ptr) asctime_s @ cdecl _o_asin(double) MSVCRT_asin @@ -2156,9 +2156,9 @@ @ cdecl abs(long) @ cdecl acos(double) @ cdecl -arch=!i386 acosf(float) -@ cdecl acosh(double) -@ cdecl acoshf(float) -@ cdecl acoshl(double) acosh +@ cdecl acosh(double) MSVCRT_acosh +@ cdecl acoshf(float) MSVCRT_acoshf +@ cdecl acoshl(double) MSVCRT_acosh @ cdecl asctime(ptr) @ cdecl asctime_s(ptr long ptr) @ cdecl asin(double) MSVCRT_asin
1
0
0
0
Alexandre Julliard : msvcrt: Use the asinh()/asinhf() implementation from the bundled musl library.
by Alexandre Julliard
10 Apr '23
10 Apr '23
Module: wine Branch: master Commit: 6e9dd141a892524d8740d4567e0dafcb30087eca URL:
https://gitlab.winehq.org/wine/wine/-/commit/6e9dd141a892524d8740d4567e0daf…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri Mar 31 16:43:45 2023 +0200 msvcrt: Use the asinh()/asinhf() implementation from the bundled musl library. --- dlls/msvcrt/math.c | 51 --------------------------------------------------- 1 file changed, 51 deletions(-) diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c index 2a523b589ae..ea72ca2f01c 100644 --- a/dlls/msvcrt/math.c +++ b/dlls/msvcrt/math.c @@ -3347,57 +3347,6 @@ int CDECL _fdpcomp(float x, float y) return _dpcomp(x, y); } -/********************************************************************* - * asinh (MSVCR120.@) - * - * Copied from musl: src/math/asinh.c - */ -double CDECL asinh(double x) -{ - UINT64 ux = *(UINT64*)&x; - int e = ux >> 52 & 0x7ff; - int s = ux >> 63; - - /* |x| */ - ux &= (UINT64)-1 / 2; - x = *(double*)&ux; - - if (e >= 0x3ff + 26) /* |x| >= 0x1p26 or inf or nan */ - x = log(x) + 0.693147180559945309417232121458176568; - else if (e >= 0x3ff + 1) /* |x| >= 2 */ - x = log(2 * x + 1 / (sqrt(x * x + 1) + x)); - else if (e >= 0x3ff - 26) /* |x| >= 0x1p-26 */ - x = log1p(x + x * x / (sqrt(x * x + 1) + 1)); - else /* |x| < 0x1p-26, raise inexact if x != 0 */ - fp_barrier(x + 0x1p120f); - return s ? -x : x; -} - -/********************************************************************* - * asinhf (MSVCR120.@) - * - * Copied from musl: src/math/asinhf.c - */ -float CDECL asinhf(float x) -{ - UINT32 ux = *(UINT32*)&x; - UINT32 i = ux & 0x7fffffff; - int s = ux >> 31; - - /* |x| */ - x = *(float*)&i; - - if (i >= 0x3f800000 + (12 << 23))/* |x| >= 0x1p12 or inf or nan */ - x = logf(x) + 0.693147180559945309417232121458176568f; - else if (i >= 0x3f800000 + (1 << 23)) /* |x| >= 2 */ - x = logf(2 * x + 1 / (sqrtf(x * x + 1) + x)); - else if (i >= 0x3f800000 - (12 << 23)) /* |x| >= 0x1p-12 */ - x = log1pf(x + x * x / (sqrtf(x * x + 1) + 1)); - else /* |x| < 0x1p-12, raise inexact if x!=0 */ - fp_barrierf(x + 0x1p120f); - return s ? -x : x; -} - /********************************************************************* * acosh (MSVCR120.@) *
1
0
0
0
Alexandre Julliard : msvcrt: Use the atan() implementation from the bundled musl library.
by Alexandre Julliard
10 Apr '23
10 Apr '23
Module: wine Branch: master Commit: ecfbd5971ecfae09b5c50619df1277cf51e66856 URL:
https://gitlab.winehq.org/wine/wine/-/commit/ecfbd5971ecfae09b5c50619df1277…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri Apr 7 14:43:44 2023 +0200 msvcrt: Use the atan() implementation from the bundled musl library. --- dlls/msvcrt/math.c | 93 +++++-------------------------------------------- dlls/msvcrt/msvcrt.spec | 2 +- 2 files changed, 9 insertions(+), 86 deletions(-) diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c index 69dfca332af..2a523b589ae 100644 --- a/dlls/msvcrt/math.c +++ b/dlls/msvcrt/math.c @@ -78,11 +78,13 @@ void msvcrt_init_math( void *module ) } /* Copied from musl: src/internal/libm.h */ +#if !defined(__i386__) || _MSVCR_VER>=120 static inline float fp_barrierf(float x) { volatile float y = x; return y; } +#endif static inline double fp_barrier(double x) { @@ -489,93 +491,14 @@ double CDECL MSVCRT_asin( double x ) /********************************************************************* * atan (MSVCRT.@) - * - * Copied from musl: src/math/atan.c - */ -double CDECL atan( double x ) -{ - static const double atanhi[] = { - 4.63647609000806093515e-01, - 7.85398163397448278999e-01, - 9.82793723247329054082e-01, - 1.57079632679489655800e+00, - }; - static const double atanlo[] = { - 2.26987774529616870924e-17, - 3.06161699786838301793e-17, - 1.39033110312309984516e-17, - 6.12323399573676603587e-17, - }; - static const double aT[] = { - 3.33333333333329318027e-01, - -1.99999999998764832476e-01, - 1.42857142725034663711e-01, - -1.11111104054623557880e-01, - 9.09088713343650656196e-02, - -7.69187620504482999495e-02, - 6.66107313738753120669e-02, - -5.83357013379057348645e-02, - 4.97687799461593236017e-02, - -3.65315727442169155270e-02, - 1.62858201153657823623e-02, - }; - - double w, s1, s2, z; - unsigned int ix, sign; - int id; - -#if _MSVCR_VER == 0 + */ +#if _MSVCR_VER == 0 /* other versions call atan() directly */ +double CDECL MSVCRT_atan( double x ) +{ if (isnan(x)) return math_error(_DOMAIN, "atan", x, 0, x); -#endif - - ix = *(ULONGLONG*)&x >> 32; - sign = ix >> 31; - ix &= 0x7fffffff; - if (ix >= 0x44100000) { /* if |x| >= 2^66 */ - if (isnan(x)) - return x; - z = atanhi[3] + 7.5231638452626401e-37; - return sign ? -z : z; - } - if (ix < 0x3fdc0000) { /* |x| < 0.4375 */ - if (ix < 0x3e400000) { /* |x| < 2^-27 */ - if (ix < 0x00100000) - /* raise underflow for subnormal x */ - fp_barrierf((float)x); - return x; - } - id = -1; - } else { - x = fabs(x); - if (ix < 0x3ff30000) { /* |x| < 1.1875 */ - if (ix < 0x3fe60000) { /* 7/16 <= |x| < 11/16 */ - id = 0; - x = (2.0 * x - 1.0) / (2.0 + x); - } else { /* 11/16 <= |x| < 19/16 */ - id = 1; - x = (x - 1.0) / (x + 1.0); - } - } else { - if (ix < 0x40038000) { /* |x| < 2.4375 */ - id = 2; - x = (x - 1.5) / (1.0 + 1.5 * x); - } else { /* 2.4375 <= |x| < 2^66 */ - id = 3; - x = -1.0 / x; - } - } - } - /* end of argument reduction */ - z = x * x; - w = z * z; - /* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */ - s1 = z * (aT[0] + w * (aT[2] + w * (aT[4] + w * (aT[6] + w * (aT[8] + w * aT[10]))))); - s2 = w * (aT[1] + w * (aT[3] + w * (aT[5] + w * (aT[7] + w * aT[9])))); - if (id < 0) - return x - x * (s1 + s2); - z = atanhi[id] - (x * (s1 + s2) - atanlo[id] - x); - return sign ? -z : z; + return atan( x ); } +#endif /********************************************************************* * exp (MSVCRT.@) diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 2d3e27be81a..c7facd39df1 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -1254,7 +1254,7 @@ @ cdecl asctime(ptr) @ cdecl asctime_s(ptr long ptr) @ cdecl asin(double) MSVCRT_asin -@ cdecl atan(double) +@ cdecl atan(double) MSVCRT_atan @ cdecl atan2(double double) @ cdecl -arch=!i386 asinf(float) @ cdecl -arch=!i386 atanf(float) MSVCRT_atanf
1
0
0
0
← Newer
1
...
52
53
54
55
56
57
58
...
82
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
76
77
78
79
80
81
82
Results per page:
10
25
50
100
200