Module: website
Branch: master
Commit: e8ab73647257569043a611efde9b23829aad288f
URL: https://source.winehq.org/git/website.git/?a=commit;h=e8ab73647257569043a61…
Author: Alexandre Julliard <julliard(a)winehq.org>
Date: Fri Nov 29 20:17:45 2019 +0100
Wine release 4.21
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
news/en/2019112901.xml | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/news/en/2019112901.xml b/news/en/2019112901.xml
new file mode 100644
index 00000000..1658f33b
--- /dev/null
+++ b/news/en/2019112901.xml
@@ -0,0 +1,15 @@
+<news>
+<date>November 29, 2019</date>
+<title>Wine 4.21 Released</title>
+<body>
+<p> The Wine development release 4.21 is now available.</p>
+<p> <a href="{$root}/announce/4.21">What's new</a> in this release:
+<ul>
+ <li>HTTP proxy configuration through DHCP.</li>
+ <li>Parameter block support in D3DX9.</li>
+ <li>A few more dlls converted to PE.</li>
+ <li>Various bug fixes.</li>
+</ul>
+<p>The source is <a href="//dl.winehq.org/wine/source/4.x/wine-4.21.tar.xz">available now</a>.
+Binary packages are in the process of being built, and will appear soon at their respective <a href="{$root}/download">download locations</a>.
+</p></body></news>
Module: wine
Branch: master
Commit: 63a6b308e91232dd55dd107595a6181c70180dd4
URL: https://source.winehq.org/git/wine.git/?a=commit;h=63a6b308e91232dd55dd1075…
Author: Zebediah Figura <z.figura12(a)gmail.com>
Date: Thu Nov 28 17:35:40 2019 -0600
quartz/dsoundrender: Delegate IReferenceClock to the system clock.
For several reasons.
Firstly, the reference clock should still function when the filter is not
running.
Secondly, IDirectSoundBuffer::GetPositions() in practice returns very coarse
positions, both on Windows and on Wine. On my hardware, the resolution is
about 10ms, which, while suitable for the DirectSound renderer and probably
also any video renderers, is nevertheless actually coarser than
GetTickCount().
Thirdly, testing supports that the native DirectSound renderer returns a
timestamp from IReferenceClock::GetTime() that is more accurate than
IDirectSoundBuffer::GetPositions(). In fact, after dumping a large number of
different clock sources, I came to the conclusion that it is probably using
timeGetTime() as a source. On Wine that's identical to GetTickCount(), so we
may as well just delegate directly to the system clock.
Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
dlls/quartz/dsoundrender.c | 301 +++------------------------------------------
1 file changed, 14 insertions(+), 287 deletions(-)
Diff: https://source.winehq.org/git/wine.git/?a=commitdiff;h=63a6b308e91232dd55dd…
Module: wine
Branch: master
Commit: 431a21d95e573eaf8cafdd041b7100b576143756
URL: https://source.winehq.org/git/wine.git/?a=commit;h=431a21d95e573eaf8cafdd04…
Author: Francois Gouget <fgouget(a)free.fr>
Date: Thu Nov 28 13:40:53 2019 +0100
dxerr8: Fix the spelling of some error messages.
Signed-off-by: Francois Gouget <fgouget(a)free.fr>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
dlls/dxerr8/errors.dat | 4 ++--
dlls/dxerr8/errors.h | 8 ++++----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/dlls/dxerr8/errors.dat b/dlls/dxerr8/errors.dat
index dd73561282..4ab288ccd4 100644
--- a/dlls/dxerr8/errors.dat
+++ b/dlls/dxerr8/errors.dat
@@ -202,7 +202,7 @@ DDERR_INVALIDPIXELFORMAT pixel format was invalid as specified
DDERR_INVALIDRECT Rectangle provided was invalid.
DDERR_LOCKEDSURFACES Operation could not be carried out because one or more surfaces are locked
DDERR_NO3D There is no 3D present.
-DDERR_NOALPHAHW Operation could not be carried out because there is no alpha accleration hardware present or available.
+DDERR_NOALPHAHW Operation could not be carried out because there is no alpha acceleration hardware present or available.
DDERR_NOSTEREOHARDWARE Operation could not be carried out because there is no stereo hardware present or available.
DDERR_NOSURFACELEFT Operation could not be carried out because there is no hardware present which supports stereo surfaces
DDERR_NOCLIPLIST no clip list available
@@ -268,7 +268,7 @@ DDERR_NOBLTHW No blter.
DDERR_NODDROPSHW No DirectDraw ROP hardware.
DDERR_OVERLAYNOTVISIBLE returned when GetOverlayPosition is called on a hidden overlay
DDERR_NOOVERLAYDEST returned when GetOverlayPosition is called on an overlay that UpdateOverlay has never been called on to establish a destination.
-DDERR_INVALIDPOSITION returned when the position of the overlay on the destination is no longer legal for that destionation.
+DDERR_INVALIDPOSITION returned when the position of the overlay on the destination is no longer legal for that destination.
DDERR_NOTAOVERLAYSURFACE returned when an overlay member is called for a non-overlay surface
DDERR_EXCLUSIVEMODEALREADYSET An attempt was made to set the cooperative level when it was already set to exclusive.
DDERR_NOTFLIPPABLE An attempt has been made to flip a surface that is not flippable.
diff --git a/dlls/dxerr8/errors.h b/dlls/dxerr8/errors.h
index c46fda8b46..4f2711315f 100644
--- a/dlls/dxerr8/errors.h
+++ b/dlls/dxerr8/errors.h
@@ -613,8 +613,8 @@ static const WCHAR name204W[] = { 'D','D','E','R','R','_','N','O','3','D',0 };
static const CHAR description204A[] = "There is no 3D present.";
static const WCHAR description204W[] = { 'T','h','e','r','e',' ','i','s',' ','n','o',' ','3','D',' ','p','r','e','s','e','n','t','.',0 };
static const WCHAR name205W[] = { 'D','D','E','R','R','_','N','O','A','L','P','H','A','H','W',0 };
-static const CHAR description205A[] = "Operation could not be carried out because there is no alpha accleration hardware present or available.";
-static const WCHAR description205W[] = { 'O','p','e','r','a','t','i','o','n',' ','c','o','u','l','d',' ','n','o','t',' ','b','e',' ','c','a','r','r','i','e','d',' ','o','u','t',' ','b','e','c','a','u','s','e',' ','t','h','e','r','e',' ','i','s',' ','n','o',' ','a','l','p','h','a',' ','a','c','c','l','e','r','a','t','i','o','n',' ','h','a','r','d','w','a','r','e',' ','p','r','e','s','e','n','t',' ','o','r',' ','a','v','a','i','l','a','b','l','e','.',0 };
+static const CHAR description205A[] = "Operation could not be carried out because there is no alpha acceleration hardware present or available.";
+static const WCHAR description205W[] = { 'O','p','e','r','a','t','i','o','n',' ','c','o','u','l','d',' ','n','o','t',' ','b','e',' ','c','a','r','r','i','e','d',' ','o','u','t',' ','b','e','c','a','u','s','e',' ','t','h','e','r','e',' ','i','s',' ','n','o',' ','a','l','p','h','a',' ','a','c','c','e','l','e','r','a','t','i','o','n',' ','h','a','r','d','w','a','r','e',' ','p','r','e','s','e','n','t',' ','o','r',' ','a','v','a','i','l','a','b','l','e','.',0 };
static const WCHAR name206W[] = { 'D','D','E','R','R','_','N','O','S','T','E','R','E','O','H','A','R','D','W','A','R','E',0 };
static const CHAR description206A[] = "Operation could not be carried out because there is no stereo hardware present or available.";
static const WCHAR description206W[] = { 'O','p','e','r','a','t','i','o','n',' ','c','o','u','l','d',' ','n','o','t',' ','b','e',' ','c','a','r','r','i','e','d',' ','o','u','t',' ','b','e','c','a','u','s','e',' ','t','h','e','r','e',' ','i','s',' ','n','o',' ','s','t','e','r','e','o',' ','h','a','r','d','w','a','r','e',' ','p','r','e','s','e','n','t',' ','o','r',' ','a','v','a','i','l','a','b','l','e','.',0 };
@@ -809,10 +809,10 @@ static const CHAR description269A[] = "returned when GetOverlayPosition is calle
static const WCHAR description269W[] = { 'r','e','t','u','r','n','e','d',' ','w','h','e','n',' ','G','e','t','O','v','e','r','l','a','y','P','o','s','i','t','i','o','n',' ','i','s',' ','c','a','l','l','e','d',' ','o','n',' ','a',' ','h','i','d','d','e','n',' ','o','v','e','r','l','a','y',0 };
static const WCHAR name270W[] = { 'D','D','E','R','R','_','N','O','O','V','E','R','L','A','Y','D','E','S','T',0 };
static const CHAR description270A[] = "returned when GetOverlayPosition is called on an overlay that UpdateOverlay has never been called on to establish a destination.";
-static const WCHAR description270W[] = { 'r','e','t','u','r','n','e','d',' ','w','h','e','n',' ','G','e','t','O','v','e','r','l','a','y','P','o','s','i','t','i','o','n',' ','i','s',' ','c','a','l','l','e','d',' ','o','n',' ','a',' ','o','v','e','r','l','a','y',' ','t','h','a','t',' ','U','p','d','a','t','e','O','v','e','r','l','a','y',' ','h','a','s',' ','n','e','v','e','r',' ','b','e','e','n',' ','c','a','l','l','e','d',' ','o','n',' ','t','o',' ','e','s','t','a','b','l','i','s','h',' ','a',' ','d','e','s','t','i','o','n','a','t','i','o','n','.',0 };
+static const WCHAR description270W[] = { 'r','e','t','u','r','n','e','d',' ','w','h','e','n',' ','G','e','t','O','v','e','r','l','a','y','P','o','s','i','t','i','o','n',' ','i','s',' ','c','a','l','l','e','d',' ','o','n',' ','a','n',' ','o','v','e','r','l','a','y',' ','t','h','a','t',' ','U','p','d','a','t','e','O','v','e','r','l','a','y',' ','h','a','s',' ','n','e','v','e','r',' ','b','e','e','n',' ','c','a','l','l','e','d',' ','o','n',' ','t','o',' ','e','s','t','a','b','l','i','s','h',' ','a',' ','d','e','s','t','i','n','a','t','i','o','n','.',0 };
static const WCHAR name271W[] = { 'D','D','E','R','R','_','I','N','V','A','L','I','D','P','O','S','I','T','I','O','N',0 };
static const CHAR description271A[] = "returned when the position of the overlay on the destination is no longer legal for that destination.";
-static const WCHAR description271W[] = { 'r','e','t','u','r','n','e','d',' ','w','h','e','n',' ','t','h','e',' ','p','o','s','i','t','i','o','n',' ','o','f',' ','t','h','e',' ','o','v','e','r','l','a','y',' ','o','n',' ','t','h','e',' ','d','e','s','t','i','o','n','a','t','i','o','n',' ','i','s',' ','n','o',' ','l','o','n','g','e','r',' ','l','e','g','a','l',' ','f','o','r',' ','t','h','a','t',' ','d','e','s','t','i','n','a','t','i','o','n','.',0 };
+static const WCHAR description271W[] = { 'r','e','t','u','r','n','e','d',' ','w','h','e','n',' ','t','h','e',' ','p','o','s','i','t','i','o','n',' ','o','f',' ','t','h','e',' ','o','v','e','r','l','a','y',' ','o','n',' ','t','h','e',' ','d','e','s','t','i','n','a','t','i','o','n',' ','i','s',' ','n','o',' ','l','o','n','g','e','r',' ','l','e','g','a','l',' ','f','o','r',' ','t','h','a','t',' ','d','e','s','t','i','n','a','t','i','o','n','.',0 };
static const WCHAR name272W[] = { 'D','D','E','R','R','_','N','O','T','A','O','V','E','R','L','A','Y','S','U','R','F','A','C','E',0 };
static const CHAR description272A[] = "returned when an overlay member is called for a non-overlay surface";
static const WCHAR description272W[] = { 'r','e','t','u','r','n','e','d',' ','w','h','e','n',' ','a','n',' ','o','v','e','r','l','a','y',' ','m','e','m','b','e','r',' ','i','s',' ','c','a','l','l','e','d',' ','f','o','r',' ','a',' ','n','o','n','-','o','v','e','r','l','a','y',' ','s','u','r','f','a','c','e',0 };
Module: wine
Branch: master
Commit: ca61bbcc8854a9783f2e6677567b4abb81c7ac76
URL: https://source.winehq.org/git/wine.git/?a=commit;h=ca61bbcc8854a9783f2e6677…
Author: Francois Gouget <fgouget(a)free.fr>
Date: Thu Nov 28 13:28:05 2019 +0100
rsaenh: A spelling fix in a comment.
Signed-off-by: Francois Gouget <fgouget(a)free.fr>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
dlls/rsaenh/mpi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/rsaenh/mpi.c b/dlls/rsaenh/mpi.c
index 3fbca42a8c..77c3fcaf74 100644
--- a/dlls/rsaenh/mpi.c
+++ b/dlls/rsaenh/mpi.c
@@ -1009,7 +1009,7 @@ mp_add_d (mp_int * a, mp_digit b, mp_int * c)
/* trim unused digits
*
* This is used to ensure that leading zero digits are
- * trimed and the leading "used" digit will be non-zero
+ * trimmed and the leading "used" digit will be non-zero
* Typically very fast. Also fixes the sign if there
* are no more leading digits
*/
Module: wine
Branch: master
Commit: 289d456dd617c164047b6562b993a7c1a7955232
URL: https://source.winehq.org/git/wine.git/?a=commit;h=289d456dd617c164047b6562…
Author: Chip Davis <cdavis(a)codeweavers.com>
Date: Wed Nov 27 09:54:09 2019 -0600
ntdll: Fix tick count calculation on Mac.
Inspired by a patch by Andrew Eikum.
macOS's mach_absolute_time() stops counting when the computer goes to
sleep/suspend/hibernate/etc. However, Windows's GetTickCount() does not
stop counting. mach_continuous_time() matches Windows's behavior.
BSD's CLOCK_MONOTONIC already counts asleep time.
Unfortunately, there is no clock source on Linux which does exactly what
we want. CLOCK_MONOTONIC_RAW is unaffected by NTP adjustment, but like
mach_absolute_time() doesn't keep ticking when the computer is asleep.
CLOCK_BOOTTIME does keep ticking, but it is affected by NTP adjustments.
CLOCK_MONOTONIC has both problems. What's needed is a
CLOCK_BOOTTIME_RAW, which would not be slewed by adjtimex(2) and would
count time spent asleep.
To avoid issues with skew and performance, this patch falls back to
mach_absolute_time() on macOS if mach_continuous_time() is unavailable.
Note that mach_continuous_time() was introduced in macOS 10.12, meaning
that if the minimum version required is less than that, it will be
linked weakly. Therefore we must check that it is nonnull before
attempting to call it.
Signed-off-by: Chip Davis <cdavis(a)codeweavers.com>
Signed-off-by: Huw Davies <huw(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
configure | 1 +
configure.ac | 1 +
dlls/kernel32/time.c | 4 ++++
dlls/ntdll/time.c | 4 ++++
include/config.h.in | 3 +++
server/request.c | 4 ++++
6 files changed, 17 insertions(+)
diff --git a/configure b/configure
index dc23826900..90ff22fc7e 100755
--- a/configure
+++ b/configure
@@ -17696,6 +17696,7 @@ for ac_func in \
getopt_long_only \
kqueue \
lstat \
+ mach_continuous_time \
pipe2 \
poll \
port_create \
diff --git a/configure.ac b/configure.ac
index fe2816ca7b..7f2c3cda23 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2171,6 +2171,7 @@ AC_CHECK_FUNCS(\
getopt_long_only \
kqueue \
lstat \
+ mach_continuous_time \
pipe2 \
poll \
port_create \
diff --git a/dlls/kernel32/time.c b/dlls/kernel32/time.c
index 817a830518..716230aa7a 100644
--- a/dlls/kernel32/time.c
+++ b/dlls/kernel32/time.c
@@ -78,6 +78,10 @@ static inline ULONGLONG monotonic_counter(void)
static mach_timebase_info_data_t timebase;
if (!timebase.denom) mach_timebase_info( &timebase );
+#ifdef HAVE_MACH_CONTINUOUS_TIME
+ if (&mach_continuous_time != NULL)
+ return mach_continuous_time() * timebase.numer / timebase.denom / 100;
+#endif
return mach_absolute_time() * timebase.numer / timebase.denom / 100;
#elif defined(HAVE_CLOCK_GETTIME)
struct timespec ts;
diff --git a/dlls/ntdll/time.c b/dlls/ntdll/time.c
index 91e5887b87..4e3d5583c7 100644
--- a/dlls/ntdll/time.c
+++ b/dlls/ntdll/time.c
@@ -111,6 +111,10 @@ static inline ULONGLONG monotonic_counter(void)
static mach_timebase_info_data_t timebase;
if (!timebase.denom) mach_timebase_info( &timebase );
+#ifdef HAVE_MACH_CONTINUOUS_TIME
+ if (&mach_continuous_time != NULL)
+ return mach_continuous_time() * timebase.numer / timebase.denom / 100;
+#endif
return mach_absolute_time() * timebase.numer / timebase.denom / 100;
#elif defined(HAVE_CLOCK_GETTIME)
struct timespec ts;
diff --git a/include/config.h.in b/include/config.h.in
index 41a7cde553..63396e9250 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -554,6 +554,9 @@
/* Define to 1 if you have the <machine/sysarch.h> header file. */
#undef HAVE_MACHINE_SYSARCH_H
+/* Define to 1 if you have the `mach_continuous_time' function. */
+#undef HAVE_MACH_CONTINUOUS_TIME
+
/* Define to 1 if you have the <mach/machine.h> header file. */
#undef HAVE_MACH_MACHINE_H
diff --git a/server/request.c b/server/request.c
index d2adb08a18..5610d392cf 100644
--- a/server/request.c
+++ b/server/request.c
@@ -529,6 +529,10 @@ unsigned int get_tick_count(void)
static mach_timebase_info_data_t timebase;
if (!timebase.denom) mach_timebase_info( &timebase );
+#ifdef HAVE_MACH_CONTINUOUS_TIME
+ if (&mach_continuous_time != NULL)
+ return mach_continuous_time() * timebase.numer / timebase.denom / 1000000;
+#endif
return mach_absolute_time() * timebase.numer / timebase.denom / 1000000;
#elif defined(HAVE_CLOCK_GETTIME)
struct timespec ts;