Compare commits

..

93 Commits

Author SHA1 Message Date
Alistair Leslie-Hughes
ede44e4e8f Release v5.2 2020-02-17 10:31:59 +11:00
Alistair Leslie-Hughes
aca614eb8b Rebase against 85bd94f8705115ac0c35eac6ff7e2f3e59be924e 2020-02-17 09:47:53 +11:00
Alistair Leslie-Hughes
49d52336e1 Rebase against 7332de64a5a204cc285bdc1f8768d3217103b7dd 2020-02-14 09:03:50 +11:00
Zebediah Figura
17fdb93f55 Rebase against 3d57cc2863f2f9a5ace40d29317b3ff4357fd119. 2020-02-12 17:33:55 -06:00
Paul Gofman
3f43238b01 Restore d3dx9_36-BumpLuminance patch 0002. 2020-02-12 11:49:28 +03:00
Paul Gofman
59d19c8963 Rebase against d1373e8aae1b15b96e847488e4b6617789f8fb62. 2020-02-12 02:38:19 +03:00
Paul Gofman
d3ad4e1115 Updated ntdll-User_shared_data_fields patchset. 2020-02-11 16:33:47 +03:00
Zebediah Figura
b3f1e5566f Rebase against 0df9cce29d0d32d3f1f13c4ec4eabc81675a17ed. 2020-02-10 17:40:48 -06:00
Zebediah Figura
c26be86c42 Rebase against f909d18baf1d97831c55a1d47610427ac2084ca3. 2020-02-07 16:49:59 -06:00
Zebediah Figura
14a3242b92 winebuild-Fake_Dlls: Fix the fake DLL function dispatcher offset.
Fixes: ff10ae6e74

Spotted by Ken Thomases.
2020-02-06 11:37:07 -06:00
Zebediah Figura
991bebfee7 Rebase against 9642f35922b79cebacdc774eb54619e389ccd531. 2020-02-05 17:42:46 -06:00
Zebediah Figura
0d7a4f0c73 newupdate.py: Bail immediately on a bad dependency graph. 2020-02-05 17:42:42 -06:00
Alistair Leslie-Hughes
30c1e2757a Updated ntdll-RtlIpv4StringToAddress patchset 2020-02-05 15:21:09 +11:00
Zebediah Figura
e55a3a3f43 ntdll-Signal_Handler: Remove.
As of 684c272aa794 we disable the stack protector for all (non-PE) code.
2020-02-04 15:12:34 -06:00
Alistair Leslie-Hughes
ca1047528f Rebase against 87875e12bcdca659e578849fa62585b1b5316a50 2020-02-04 08:36:15 +11:00
Zebediah Figura
d53a1b4a17 d3d9-Tests: Remove patch set.
No information is provided as to what cards or driver trigger the failures;
assume they are not relevant any longer until proven otherwise.
2020-02-02 16:05:38 -06:00
Zebediah Figura
47facf2571 d3dx9-32bpp_Alpha_Channel: Add reference to bug report. 2020-02-02 16:03:49 -06:00
Alistair Leslie-Hughes
b7c9feb3c1 Release v5.1 2020-02-03 08:11:52 +11:00
Zebediah Figura
c263c4f896 Rebase against bdf8d94e2a40f82c618ba5587cc82382c5230ac0. 2020-02-02 13:43:29 -06:00
Zebediah Figura
fa188fd6b0 wined3d-UAV_Counters: Remove patch.
The parameter checks in d3d11 are not particularly necessary; there is no known application that passes NULL here, and such an application would be easy to detect.

The additional reference to the UAV resource need not be taken, since wined3d_cs_exec_copy_uav_counter() never touches the resource (only the UAV itself).

The offset parameter check is not borne out by native Windows; indeed passing an invalid offset leaves the device in a broken state.
2020-01-30 23:47:25 -06:00
Zebediah Figura
6e474e34fb More definition file updates. 2020-01-30 23:45:19 -06:00
Alistair Leslie-Hughes
f917b2fc24 Removed wusa-MSU_Package_Installer patchset
This patch was to correct an issue with window Vista and none of the
MSU which had this issue are available.
2020-01-30 10:51:05 +11:00
Alistair Leslie-Hughes
44115dbd63 Rebase against 1bb953c6766c9cc4372ca23a7c5b7de101324218 2020-01-30 10:30:07 +11:00
Paul Gofman
59f43478d6 Updated wined3d-SWVP-shaders patchset 2020-01-29 11:46:30 +03:00
Alistair Leslie-Hughes
d83b9f53fb Updated d3dx9_36-D3DXCreateKeyframedAnimationSet patchset 2020-01-29 12:02:22 +11:00
Alistair Leslie-Hughes
f57d1b8d02 Updated ntdll-RtlIpv4StringToAddress patchset 2020-01-29 11:32:19 +11:00
Zebediah Figura
f397af1c7f Rebase against 4588f10f8d3895624a8a2087f2e5c3c1b51e576f. 2020-01-28 15:57:00 -06:00
Zebediah Figura
44fb25d66d advapi32-LsaLookupSids: Remove patches working around a Cygwin bug.
See <https://www.winehq.org/pipermail/wine-patches/2015-April/138516.html>.
There is no known current application that attempts this, and in fact simple
testing shows that the assertion that "native has similar handling" is quite
simply false.
2020-01-27 19:33:07 -06:00
Zebediah Figura
4ad9169f53 Rebase against cf6546fb3b914dc1d87b23d6920526b7487cfd6d. 2020-01-27 17:05:03 -06:00
Zebediah Figura
bbc86a61db comctrl-rebar-capture: Fix name. 2020-01-27 16:55:18 -06:00
Zebediah Figura
537b6dd5e3 Lots more definition file updates. 2020-01-27 16:53:09 -06:00
Zebediah Figura
8b862038c5 oleaut32-CreateTypeLib: Fix a misplaced address operator. 2020-01-27 16:05:11 -06:00
Zebediah Figura
3b2fb113fa user32-DrawMenuItem: Remove patch.
The attached bug is fixed; and there does not seem to be any legitimate way in which the "text" field can be set to anything other than NULL or a valid pointer.
2020-01-27 15:25:53 -06:00
Zebediah Figura
964b6c1ab5 d2d1-ID2D1Factory1: Remove patch.
This contains no functional change.
2020-01-27 15:25:00 -06:00
Zebediah Figura
fc87fb74db Various documentation updates. 2020-01-27 11:56:43 -06:00
Zebediah Figura
8bbe365bfc server-Timestamp_Compat: Remove patch.
This is only useful for converting Staging trees last used before August 2015;
it is far past time it was removed.
2020-01-26 15:35:28 -06:00
Alistair Leslie-Hughes
07ef9c93b8 Rebase against 9a9a1821a34d10bb3e96ce1e42a8d046133f0958 2020-01-25 15:42:12 +11:00
Alistair Leslie-Hughes
050435f28e Rebase against c55e8822ae3bbb8b1d3ab9b363214e4ad2f478d9 2020-01-24 09:53:05 +11:00
Alistair Leslie-Hughes
00f288b12e Updated dxva2-Video_Decoder patchset
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48497
2020-01-23 12:13:03 +11:00
Alistair Leslie-Hughes
b1e9ef0294 Rebase against 84f2ce5139bb840ee2cf381d039d3787a0cdf2b6 2020-01-23 10:56:01 +11:00
Alistair Leslie-Hughes
3ac1519f34 Release v5.0 2020-01-22 08:45:01 +11:00
Alistair Leslie-Hughes
9a2a33ee2b Correct typo
Fixes macos compile error.
2020-01-21 10:42:39 +11:00
Paul Gofman
9c3a91903e Updated ntdll-ForceBottomUpAlloc patchset
Includes various performance optimizations and fixes
stuttering in Darksiders III reported by some users.
2020-01-20 18:37:08 +03:00
Alistair Leslie-Hughes
dd581d0b2f Cleanup whitespace noise 2020-01-20 20:17:31 +11:00
Alistair Leslie-Hughes
506efa392c Updated winedevice-Default_Drivers patchset 2020-01-20 10:46:31 +11:00
Alistair Leslie-Hughes
a45597f811 Updated dsdmo-new-dll patchset 2020-01-20 10:40:10 +11:00
Alistair Leslie-Hughes
7073073fcc Added gdiplus-FontFamily-RefCount patchset 2020-01-20 10:15:48 +11:00
Rémi Bernon
9dc9c57bbf patchinstall: Test for .git presence, regardless of its type.
It's possible that .git is a file, for example when using multiple
worktrees, and in this case git apply will still work fine.
2020-01-18 21:29:42 -06:00
Alistair Leslie-Hughes
915ed2cec1 Release v5.0-rc6 2020-01-19 12:39:57 +11:00
Alistair Leslie-Hughes
329005baaf Rebase against 287dabd9b6887e94cabfa2a5f9bfe822522095e5 2020-01-15 09:12:06 +11:00
Alistair Leslie-Hughes
d8496cacd1 Disabled user32-rawinput-keyboard patchset
Disabled by request

Causing regressions
https://bugs.winehq.org/show_bug.cgi?id=48419
https://bugs.winehq.org/show_bug.cgi?id=48462
2020-01-15 08:36:02 +11:00
Alistair Leslie-Hughes
695a835b0a Rebase against 287dabd9b6887e94cabfa2a5f9bfe822522095e5 2020-01-14 09:28:28 +11:00
Paul Gofman
68bfc31be4 Updated winebuild-Fake_Dlls patchset
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48410
2020-01-13 12:40:40 +03:00
Alistair Leslie-Hughes
23960d9862 Release v5.0-rc5 2020-01-12 08:48:00 +11:00
Alistair Leslie-Hughes
bca3c546d2 Added dsound-SRW patchset 2020-01-11 17:30:43 +11:00
Alistair Leslie-Hughes
1e3eb08c69 Added dinput-DIPROP_BUFFERSIZE patchset 2020-01-11 17:07:24 +11:00
Alistair Leslie-Hughes
bd8f35fad1 Rebase against 4f0212c4fd35ac4b03a082cab27e629130ac1b13 2020-01-10 10:35:41 +11:00
Alistair Leslie-Hughes
ccd0bc4ccd Updated user32-rawinput-nolegacy patchset
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48433
2020-01-10 08:45:05 +11:00
Paul Gofman
89af635b94 Updated ntdll-ForceBottomUpAlloc patchset
Fixes hang on start in Far Cry 5.
2020-01-09 15:49:08 +03:00
Alistair Leslie-Hughes
f05f084d9a Rebase against 21003538619cb22bf35d7cf68ee0ef13ff658424 2020-01-09 10:21:50 +11:00
Alistair Leslie-Hughes
93a708bf2b Rebase against 6b839a0f85236aac2cc794d5d586f1ba371866b1 2020-01-08 11:08:54 +11:00
Alistair Leslie-Hughes
b9f34bbbc3 Update Copyright year 2020-01-07 12:25:46 +11:00
Alistair Leslie-Hughes
8be2c25e19 Dropped gdiplus-DC_Handling patchset
This patchset has been disabled for 2 years and the bug it referenced is marked as fixed.
2020-01-07 10:25:10 +11:00
Alistair Leslie-Hughes
7059b2e1ec Updated activeds-ADsOpenObject patchset 2020-01-07 08:30:38 +11:00
Alistair Leslie-Hughes
7044b0dc98 Updated dxva2-Video_Decoder patchset
Thanks Gabriel Ivăncescu.
2020-01-07 08:24:24 +11:00
Alistair Leslie-Hughes
a1bf11e38a Release v5.0-rc4 2020-01-04 10:38:31 +11:00
Alistair Leslie-Hughes
703c84ce70 Added comctl32-version_6 2020-01-03 18:23:08 +11:00
Alistair Leslie-Hughes
b79e576574 Updated winepulse-PulseAudio_Support patchset 2020-01-03 18:23:08 +11:00
Zebediah Figura
db1f94bae4 libs-Unicode_Collation: Patch dlls/kernelbase/collation.c too. 2019-12-31 19:18:22 -06:00
Alistair Leslie-Hughes
0f52b315d6 Disable ntoskrnl-safedisc-2 patchset
https://bugs.winehq.org/show_bug.cgi?id=48341
https://bugs.winehq.org/show_bug.cgi?id=48379
2019-12-31 09:09:18 +11:00
Paul Gofman
ce3fc5723d Added ntdll-User_shared_data_fields patchset 2019-12-30 14:31:01 +03:00
Paul Gofman
595f2f9860 Added ntdll-Syscall_Emulation patchset 2019-12-30 13:46:05 +03:00
Alistair Leslie-Hughes
c01051f313 Updated ntdll-ThreadHideFromDebugger patchset 2019-12-30 11:18:46 +11:00
Alistair Leslie-Hughes
d163510e1e Release v5.0-rc3 2019-12-28 18:27:35 +11:00
Alistair Leslie-Hughes
c675804204 Rebase against fa97cbdf14883fb301dcc0a5264369f8ed184182 2019-12-28 09:32:05 +11:00
Zebediah Figura
d729a7b132 Update some documentation. 2019-12-23 22:29:13 -06:00
Alistair Leslie-Hughes
2782e6db1e Updated user32-rawinput-mouse-experimental patchset 2019-12-24 08:50:21 +11:00
Alistair Leslie-Hughes
a08376bca0 Correct commit id 2019-12-24 07:58:24 +11:00
Zebediah Figura
3371e62824 gdiplus-GdipCreateBitmapFromHBITMAP: Add reference to a bug report. 2019-12-23 09:52:45 -06:00
Alistair Leslie-Hughes
8218a78955 Updated rawinput patchsets
This is a completely updated rawinput patchsets from Rémi Bernon,
replacing the current user32-rawinput.
2019-12-23 21:47:16 +11:00
Alistair Leslie-Hughes
a8cb853708 Added gdiplus-GdipCreateBitmapFromHBITMAP patchset 2019-12-23 18:07:23 +11:00
Alistair Leslie-Hughes
6cbb6dc117 Updated directmanipulation-new-dll patchset 2019-12-22 20:59:58 +11:00
Alistair Leslie-Hughes
34302e77dd Release v5.0-rc2 2019-12-21 14:31:48 +11:00
Alistair Leslie-Hughes
ae0343f628 Rebase against 6dd84c53b55ecfa2e2735a914cb126fa0c4b23a5 2019-12-21 14:28:42 +11:00
Alistair Leslie-Hughes
5905340060 Updated dmime-PChannel-range patchset 2019-12-20 10:21:04 +11:00
Paul Gofman
c8e3795e69 Updated ntoskrnl-safedisc-2 patchset
Fix kernel32 pipe tests and crash in GTAV launcher.
2019-12-19 12:40:41 +03:00
Alistair Leslie-Hughes
108662b1cc Rebase against fa66c1b3011a32036b42c436320212aa3b30ae3f 2019-12-19 09:45:39 +11:00
Paul Gofman
088d7f9ddf Added include-LdrData patchset 2019-12-18 13:23:52 +03:00
Alistair Leslie-Hughes
b788fe9549 Rebase against 238c6be5b81cbfcf8cd147b1cbb25d16803efbe1 2019-12-18 09:13:09 +11:00
Alistair Leslie-Hughes
b8b836e43d Added activeds-ADsOpenObject patchset 2019-12-17 19:08:25 +11:00
Alistair Leslie-Hughes
d44f4885f2 Added user32-window-activation patchset 2019-12-17 11:31:16 +11:00
Alistair Leslie-Hughes
73caf7ace2 Added ntoskrnl-safedisc-2 patchset 2019-12-17 11:12:41 +11:00
Paul Gofman
d36d63ac84 Updated winebuild-Fake_Dlls patchset.
Fix stack alignment in x64 syscall thunks, again.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48274
2019-12-16 16:45:05 +03:00
207 changed files with 8210 additions and 6969 deletions

View File

@@ -1,30 +0,0 @@
Contributing to Wine Staging
----------------------------
First of all, thank you for taking the time to contribute to this project.
### Reporting bugs
Since WineConf 2015 Wine Staging is an official part of WineHQ, which means you
can report problems directly at [bugs.winehq.org](https://bugs.winehq.org/).
Most of the time bugs found in Wine Staging also turn out to be present in the
development branch, so its recommended to open your bug in the "Wine" product,
unless you are sure its really "Wine Staging" specific. For bugs related to our
binary packages, please open a bug report in the "Packaging" product.
### Submitting patches
**IMPORTANT:** Please use [dev.wine-staging.com](https://dev.wine-staging.com/patches)
for patch submissions, we currently do not accept Pull requests on GitHub.
Wine Staging mainly concentrates on experimental features and patches which are
difficult to get into the development branch. If you have a very simple bug fix
including tests, there is usually no need to send it to Wine Staging. You can
directly contribute it to the
[development branch](http://wiki.winehq.org/SubmittingPatches). However, if you
already tried that without success, or are working on such a complex area that
you do not really think its ready for inclusion, you might want to submit it to
our Staging tree. Please open a patch submission request on
[dev.wine-staging.com](https://dev.wine-staging.com/patches) including the patch.
More information is also available in our
[Wiki](https://wiki.winehq.org/Wine-Staging_Patches).

View File

@@ -8,7 +8,8 @@ are part of **Wine Staging** and are licensed under the terms of the
```
Copyright (C) 2014-2017 the Wine Staging project authors.
Copyright (C) 2018 Alistair Leslie-Hughes
Copyright (C) 2018 Alistair Leslie-Hughes, Zebediah Figura
Copyright (C) 2019-2020 Alistair Leslie-Hughes, Zebediah Figura, Paul Gofman
Wine Staging is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public

View File

@@ -6,15 +6,14 @@ features, which have not been integrated into the development branch yet. The
idea of Wine Staging is to provide experimental features faster to end users and
to give developers the possibility to discuss and improve their patches before
they are integrated into the main branch. More information about Wine Staging
can also be found on our website [wine-staging.com](http://wine-staging.com).
can also be found [on the WineHQ wiki](https://wiki.winehq.org/Wine-Staging).
Installation
------------
Ready-to-use packages for Wine Staging are available for a variety of Linux
distributions and for Mac OS X. Just follow the
[installation instructions](https://wine-staging.com/installation.html)
for your operating system.
distributions and for Mac OS X. Just follow the [installation
instructions](https://wiki.winehq.org/Download) for your operating system.
On most distributions the `wine-staging` package is installed to
`/opt/wine-staging`, such that multiple Wine versions can be installed in
@@ -78,5 +77,6 @@ in our [Wiki](https://wiki.winehq.org/Wine-Staging).
Contributing
------------
Please see CONTRIBUTING.md for more information about contributing to Wine
Staging.
For information on contributing to Wine-Staging, please see
<https://wiki.winehq.org/Wine-Staging_Contributing>. Note that GitHub pull
requests are strongly dispreferred, especially for patches.

View File

@@ -1,4 +1,4 @@
From fa73044dd60bae90b9a5ec850205a07579d4db17 Mon Sep 17 00:00:00 2001
From d216f85a593a09e7983d9178fb3e1f20bfcf08cc Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 29 May 2014 23:43:45 +0200
Subject: [PATCH] loader: Add commandline option --patches to show the patch
@@ -14,13 +14,14 @@ Subject: [PATCH] loader: Add commandline option --patches to show the patch
6 files changed, 58 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c
index bb75d9c..21e2db6 100644
index c29a1c26c..8906e1942 100644
--- a/dlls/ntdll/misc.c
+++ b/dlls/ntdll/misc.c
@@ -61,6 +61,14 @@ const char * CDECL NTDLL_wine_get_version(void)
@@ -60,6 +60,14 @@ const char * CDECL NTDLL_wine_get_version(void)
return wine_get_version();
}
/*********************************************************************
+/*********************************************************************
+ * wine_get_patches (NTDLL.@)
+ */
+const void * CDECL NTDLL_wine_get_patches(void)
@@ -28,15 +29,14 @@ index bb75d9c..21e2db6 100644
+ return wine_get_patches();
+}
+
+/*********************************************************************
/*********************************************************************
* wine_get_build_id (NTDLL.@)
*/
const char * CDECL NTDLL_wine_get_build_id(void)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 292b0f6..fb45a94 100644
index 7aa953ca6..cf7d5b6f9 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1516,6 +1516,7 @@
@@ -1566,6 +1566,7 @@
# Version
@ cdecl wine_get_version() NTDLL_wine_get_version
@@ -45,10 +45,10 @@ index 292b0f6..fb45a94 100644
@ cdecl wine_get_host_version(ptr ptr) NTDLL_wine_get_host_version
diff --git a/include/wine/library.h b/include/wine/library.h
index 242bb69..fae73fe 100644
index a6fe28059..511bf4722 100644
--- a/include/wine/library.h
+++ b/include/wine/library.h
@@ -43,6 +43,7 @@ extern const char *wine_get_data_dir(void);
@@ -47,6 +47,7 @@ extern const char *wine_get_data_dir(void);
extern const char *wine_get_server_dir(void);
extern const char *wine_get_user_name(void);
extern const char *wine_get_version(void);
@@ -57,10 +57,10 @@ index 242bb69..fae73fe 100644
extern void wine_init_argv0_path( const char *argv0 );
extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var );
diff --git a/libs/wine/config.c b/libs/wine/config.c
index 3c9110b..5da6263 100644
index 2a3314cbf..5b66c063d 100644
--- a/libs/wine/config.c
+++ b/libs/wine/config.c
@@ -522,6 +522,12 @@ const char *wine_get_version(void)
@@ -504,6 +504,12 @@ const char *wine_get_version(void)
return PACKAGE_VERSION;
}
@@ -74,19 +74,19 @@ index 3c9110b..5da6263 100644
const char *wine_get_build_id(void)
{
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
index 2159fac..7cb2918 100644
index 3f2c430fa..ca46979f5 100644
--- a/libs/wine/wine.map
+++ b/libs/wine/wine.map
@@ -90,6 +90,7 @@ WINE_1.0
@@ -28,6 +28,7 @@ WINE_1.0
wine_get_ss;
wine_get_user_name;
wine_get_version;
+ wine_get_patches;
wine_init;
wine_init_argv0_path;
wine_is_dbcs_leadbyte;
wine_ldt_alloc_entries;
diff --git a/loader/main.c b/loader/main.c
index f197cf8..f662912 100644
index f197cf802..f6629128d 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -54,7 +54,8 @@ static void check_command_line( int argc, char *argv[] )
@@ -146,5 +146,5 @@ index f197cf8..f662912 100644
--
1.9.1
2.25.0

View File

@@ -1,21 +1,21 @@
From 9618572cf2eace39198fb83b747a70d1865015e3 Mon Sep 17 00:00:00 2001
From c07a490a6950f4efe563e38ca78b1aa459dfad86 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 28 May 2014 19:50:51 +0200
Subject: [PATCH] loader: Add commandline option --check-libs.
---
include/wine/library.h | 2 +
libs/wine/config.c | 124 +++++++++++++++++++++++++++++++++++++++++++++++++
libs/wine/loader.c | 36 ++++++++++++++
libs/wine/config.c | 124 +++++++++++++++++++++++++++++++++++++++++
libs/wine/loader.c | 36 ++++++++++++
libs/wine/wine.map | 2 +
loader/main.c | 50 +++++++++++++++++++-
loader/main.c | 50 ++++++++++++++++-
5 files changed, 213 insertions(+), 1 deletion(-)
diff --git a/include/wine/library.h b/include/wine/library.h
index fae73fe..7395a11 100644
index 511bf4722..557cec20c 100644
--- a/include/wine/library.h
+++ b/include/wine/library.h
@@ -40,6 +40,7 @@ extern "C" {
@@ -44,6 +44,7 @@ extern "C" {
extern const char *wine_get_build_dir(void);
extern const char *wine_get_config_dir(void);
extern const char *wine_get_data_dir(void);
@@ -23,7 +23,7 @@ index fae73fe..7395a11 100644
extern const char *wine_get_server_dir(void);
extern const char *wine_get_user_name(void);
extern const char *wine_get_version(void);
@@ -52,6 +53,7 @@ extern void wine_exec_wine_binary( const char *name, char **argv, const char *en
@@ -56,6 +57,7 @@ extern void wine_exec_wine_binary( const char *name, char **argv, const char *en
typedef void (*load_dll_callback_t)( void *, const char * );
@@ -32,10 +32,10 @@ index fae73fe..7395a11 100644
extern void *wine_dlsym( void *handle, const char *symbol, char *error, size_t errorsize );
extern int wine_dlclose( void *handle, char *error, size_t errorsize );
diff --git a/libs/wine/config.c b/libs/wine/config.c
index 5da6263..6cedfb7 100644
index 5b66c063d..e0988513e 100644
--- a/libs/wine/config.c
+++ b/libs/wine/config.c
@@ -488,6 +488,130 @@ const char *wine_get_build_dir(void)
@@ -470,6 +470,130 @@ const char *wine_get_build_dir(void)
return build_dir;
}
@@ -167,13 +167,14 @@ index 5da6263..6cedfb7 100644
const char *wine_get_server_dir(void)
{
diff --git a/libs/wine/loader.c b/libs/wine/loader.c
index 649aa22..367dde3 100644
index 2a569f5b7..5f10c3f9d 100644
--- a/libs/wine/loader.c
+++ b/libs/wine/loader.c
@@ -1064,6 +1064,42 @@ void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize
@@ -1072,6 +1072,42 @@ void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize
return ret;
}
/***********************************************************************
+/***********************************************************************
+ * wine_dladdr
+ */
+int wine_dladdr( void *addr, void *info, char *error, size_t errorsize )
@@ -209,32 +210,31 @@ index 649aa22..367dde3 100644
+#endif
+}
+
+/***********************************************************************
/***********************************************************************
* wine_dlsym
*/
void *wine_dlsym( void *handle, const char *symbol, char *error, size_t errorsize )
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
index 7cb2918..72ffed8 100644
index ca46979f5..22a4e73b0 100644
--- a/libs/wine/wine.map
+++ b/libs/wine/wine.map
@@ -65,6 +65,7 @@ WINE_1.0
wine_dbg_sprintf;
wine_dbgstr_an;
wine_dbgstr_wn;
@@ -9,6 +9,7 @@ WINE_1.0
wine_anon_mmap;
wine_casemap_lower;
wine_casemap_upper;
+ wine_dladdr;
wine_dlclose;
wine_dll_enum_load_path;
wine_dll_get_owner;
@@ -85,6 +86,7 @@ WINE_1.0
wine_dll_set_callback;
@@ -24,6 +25,7 @@ WINE_1.0
wine_get_es;
wine_get_fs;
wine_get_gs;
+ wine_get_libs;
wine_get_server_dir;
wine_get_sortkey;
wine_get_ss;
wine_get_user_name;
diff --git a/loader/main.c b/loader/main.c
index f662912..a2dc40c 100644
index f6629128d..a2dc40c51 100644
--- a/loader/main.c
+++ b/loader/main.c
@@ -36,6 +36,12 @@
@@ -309,5 +309,5 @@ index f662912..a2dc40c 100644
--
1.9.1
2.25.0

View File

@@ -1,47 +0,0 @@
From 246cb6b72666dcb77fb2f553d318d7dabbe8811d Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 7 Apr 2015 13:18:47 +0800
Subject: advapi32: Prepend a hidden LSA_TRUST_INFORMATION in LsaLookupSids to
avoid crash when Domains[-1] incorrectly accessed by application. (try 2)
---
dlls/advapi32/lsa.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
index 69c29c5..dfe25b3 100644
--- a/dlls/advapi32/lsa.c
+++ b/dlls/advapi32/lsa.c
@@ -488,14 +488,17 @@ NTSTATUS WINAPI LsaLookupSids(
if (!(*Names = heap_alloc(name_fullsize))) return STATUS_NO_MEMORY;
/* maximum count of stored domain infos is Count, allocate it like that cause really needed
count could only be computed after sid data is retrieved */
- domain_fullsize = sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION)*Count;
+ domain_fullsize = sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION) * (Count + 1);
if (!(*ReferencedDomains = heap_alloc(domain_fullsize)))
{
heap_free(*Names);
return STATUS_NO_MEMORY;
}
(*ReferencedDomains)->Entries = 0;
- (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains + sizeof(LSA_REFERENCED_DOMAIN_LIST));
+ (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains +
+ sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION));
+ (*ReferencedDomains)->Domains[-1].Sid = NULL;
+ RtlInitUnicodeStringEx(&(*ReferencedDomains)->Domains[-1].Name, NULL);
/* Get full names data length and full length needed to store domain name and SID */
for (i = 0; i < Count; i++)
@@ -555,7 +558,8 @@ NTSTATUS WINAPI LsaLookupSids(
*ReferencedDomains = heap_realloc(*ReferencedDomains, domain_fullsize);
/* fix pointer after reallocation */
- (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains + sizeof(LSA_REFERENCED_DOMAIN_LIST));
+ (*ReferencedDomains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*ReferencedDomains +
+ sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION));
domain_data = (char*)(*ReferencedDomains)->Domains + sizeof(LSA_TRUST_INFORMATION)*Count;
mapped = 0;
--
2.3.5

View File

@@ -1,39 +0,0 @@
From ce254ac3659e0c040136341d035629f99ec6d1ea Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 7 Apr 2015 13:19:06 +0800
Subject: advapi32: Prepend a hidden LSA_TRUST_INFORMATION in LsaLookupNames2
to avoid crash when Domains[-1] incorrectly accessed by application. (try 2)
---
dlls/advapi32/lsa.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
index dfe25b3..258b8ca 100644
--- a/dlls/advapi32/lsa.c
+++ b/dlls/advapi32/lsa.c
@@ -404,14 +404,18 @@ NTSTATUS WINAPI LsaLookupNames2( LSA_HANDLE policy, ULONG flags, ULONG count,
sid = (SID *)(*sids + count);
/* use maximum domain count */
- if (!(*domains = heap_alloc(sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION)*count +
- sid_size_total + domainname_size_total*sizeof(WCHAR))))
+ if (!(*domains = heap_alloc(sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION) * (count + 1) +
+ sid_size_total + domainname_size_total * sizeof(WCHAR))))
{
heap_free(*sids);
return STATUS_NO_MEMORY;
}
(*domains)->Entries = 0;
- (*domains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*domains + sizeof(LSA_REFERENCED_DOMAIN_LIST));
+ (*domains)->Domains = (LSA_TRUST_INFORMATION*)((char*)*domains +
+ sizeof(LSA_REFERENCED_DOMAIN_LIST) + sizeof(LSA_TRUST_INFORMATION));
+ (*domains)->Domains[-1].Sid = NULL;
+ RtlInitUnicodeStringEx(&(*domains)->Domains[-1].Name, NULL);
+
domain_data = (char*)(*domains)->Domains + sizeof(LSA_TRUST_INFORMATION)*count;
domain.Buffer = heap_alloc(domain_size_max*sizeof(WCHAR));
--
2.3.5

View File

@@ -1,68 +0,0 @@
From 77d43d721793edda9b419f7426442a35f0cb5918 Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 7 Apr 2015 11:23:34 +0800
Subject: advapi32: Fallback to Sid string when LookupAccountSid fails.
---
dlls/advapi32/lsa.c | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/dlls/advapi32/lsa.c b/dlls/advapi32/lsa.c
index 1b270a80829..b8dedbd6d58 100644
--- a/dlls/advapi32/lsa.c
+++ b/dlls/advapi32/lsa.c
@@ -29,6 +29,7 @@
#include "winbase.h"
#include "winreg.h"
#include "winternl.h"
+#include "sddl.h"
#include "advapi32_misc.h"
#include "wine/debug.h"
@@ -562,6 +563,21 @@ NTSTATUS WINAPI LsaLookupSids(
domain.MaximumLength = sizeof(WCHAR);
}
}
+ else
+ {
+ WCHAR *strsid = NULL;
+
+ if (ConvertSidToStringSidW(Sids[i], &strsid))
+ {
+ name_size = strlenW(strsid) + 1;
+
+ (*Names)[i].Name.Length = (name_size - 1) * sizeof(WCHAR);
+ (*Names)[i].Name.MaximumLength = name_size * sizeof(WCHAR);
+ name_fullsize += (*Names)[i].Name.MaximumLength;
+
+ LocalFree(strsid);
+ }
+ }
}
/* now we have full length needed for both */
@@ -605,6 +621,21 @@ NTSTATUS WINAPI LsaLookupSids(
(*Names)[i].DomainIndex = lsa_reflist_add_domain(*ReferencedDomains, &domain, &domain_data);
heap_free(domain.Buffer);
}
+ else
+ {
+ WCHAR *strsid = NULL;
+
+ if (ConvertSidToStringSidW(Sids[i], &strsid))
+ {
+ name_size = strlenW(strsid) + 1;
+ mapped++;
+
+ (*Names)[i].Name.Buffer = name_buffer;
+ memcpy((*Names)[i].Name.Buffer, strsid, name_size * sizeof(WCHAR));
+
+ LocalFree(strsid);
+ }
+ }
name_buffer += name_size;
}
--
2.11.0

View File

@@ -1,56 +0,0 @@
From 486ec8b5ea1b39195d92cfdbfe3a334280780a14 Mon Sep 17 00:00:00 2001
From: Qian Hong <qhong@codeweavers.com>
Date: Tue, 28 Apr 2015 23:00:08 +0800
Subject: [PATCH] advapi32: Fix name and use of DOMAIN_GROUP_RID_USERS.
---
dlls/advapi32/security.c | 7 +++++--
dlls/advapi32/tests/security.c | 4 ++--
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index a7707f15d39..73c1f054d5c 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -187,7 +187,7 @@ static const WCHAR Domain_Admins[] = { 'D','o','m','a','i','n',' ','A','d','m','
static const WCHAR Domain_Computers[] = { 'D','o','m','a','i','n',' ','C','o','m','p','u','t','e','r','s',0 };
static const WCHAR Domain_Controllers[] = { 'D','o','m','a','i','n',' ','C','o','n','t','r','o','l','l','e','r','s',0 };
static const WCHAR Domain_Guests[] = { 'D','o','m','a','i','n',' ','G','u','e','s','t','s',0 };
-static const WCHAR Domain_Users[] = { 'D','o','m','a','i','n',' ','U','s','e','r','s',0 };
+static const WCHAR None[] = { 'N','o','n','e',0 };
static const WCHAR Enterprise_Admins[] = { 'E','n','t','e','r','p','r','i','s','e',' ','A','d','m','i','n','s',0 };
static const WCHAR ENTERPRISE_DOMAIN_CONTROLLERS[] = { 'E','N','T','E','R','P','R','I','S','E',' ','D','O','M','A','I','N',' ','C','O','N','T','R','O','L','L','E','R','S',0 };
static const WCHAR Everyone[] = { 'E','v','e','r','y','o','n','e',0 };
@@ -1185,7 +1185,10 @@ LookupAccountSidW(
ac = Domain_Admins;
break;
case DOMAIN_GROUP_RID_USERS:
- ac = Domain_Users;
+ /* MSDN says the name of DOMAIN_GROUP_RID_USERS is Domain Users,
+ * tests show that MSDN seems to be wrong. */
+ ac = None;
+ use = 2;
break;
case DOMAIN_GROUP_RID_GUESTS:
ac = Domain_Guests;
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 5f65ed385dd..a9d745cfe39 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -3003,11 +3003,11 @@ static void test_process_security(void)
dom_size = sizeof(domain);
ret = LookupAccountSidA( NULL, UsersSid, account, &acc_size, domain, &dom_size, &use );
ok(ret, "LookupAccountSid failed with %d\n", ret);
- todo_wine ok(use == SidTypeGroup, "expect SidTypeGroup, got %d\n", use);
+ ok(use == SidTypeGroup, "expect SidTypeGroup, got %d\n", use);
if (PRIMARYLANGID(GetSystemDefaultLangID()) != LANG_ENGLISH)
skip("Non-English locale (test with hardcoded 'None')\n");
else
- todo_wine ok(!strcmp(account, "None"), "expect None, got %s\n", account);
+ ok(!strcmp(account, "None"), "expect None, got %s\n", account);
res = GetTokenInformation( token, TokenUser, NULL, 0, &size );
ok(!res, "Expected failure, got %d\n", res);
--
2.17.1

View File

@@ -1,3 +0,0 @@
# Originally sent 2015 April by Qian Hong, apparently dropped off the list:
# <https://www.winehq.org/pipermail/wine-patches/2015-April/138515.html>
# Some of the patches were labeled as for Cygwin.

View File

@@ -1,15 +1,16 @@
From ba50fc98ee4690e62899d48efc856c2bc910536c Mon Sep 17 00:00:00 2001
From 8044f571b7e674ce9e562488864d48646a9c7b88 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 7 Aug 2017 01:25:02 +0200
Subject: advapi32/tests: Extend security label / token integrity tests.
Subject: [PATCH] advapi32/tests: Extend security label / token integrity
tests.
---
dlls/advapi32/tests/Makefile.in | 2 +-
dlls/advapi32/tests/security.c | 389 +++++++++++++++++++++++++++++++++++++++-
dlls/advapi32/tests/security.c | 389 +++++++++++++++++++++++++++++++-
2 files changed, 387 insertions(+), 4 deletions(-)
diff --git a/dlls/advapi32/tests/Makefile.in b/dlls/advapi32/tests/Makefile.in
index 36ce031ef62..4437e6e5de7 100644
index 12583e59f57..caee5fae308 100644
--- a/dlls/advapi32/tests/Makefile.in
+++ b/dlls/advapi32/tests/Makefile.in
@@ -1,5 +1,5 @@
@@ -20,10 +21,10 @@ index 36ce031ef62..4437e6e5de7 100644
C_SRCS = \
cred.c \
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 0fd41fe82fa..4a03db27e69 100644
index a736dbffd22..4529469d932 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -7191,13 +7191,19 @@ static void test_token_security_descriptor(void)
@@ -7034,13 +7034,19 @@ static void test_token_security_descriptor(void)
{
static SID low_level = {SID_REVISION, 1, {SECURITY_MANDATORY_LABEL_AUTHORITY},
{SECURITY_MANDATORY_LOW_RID}};
@@ -46,7 +47,7 @@ index 0fd41fe82fa..4a03db27e69 100644
PROCESS_INFORMATION info;
DWORD size, index, retd;
ACCESS_ALLOWED_ACE *ace;
@@ -7347,6 +7353,185 @@ static void test_token_security_descriptor(void)
@@ -7190,6 +7196,185 @@ static void test_token_security_descriptor(void)
/* The security label is also not inherited */
if (pAddMandatoryAce)
{
@@ -103,7 +104,7 @@ index 0fd41fe82fa..4a03db27e69 100644
+
+ if (sacl)
+ {
+ ret = pGetAce(sacl, 0, (void **)&ace);
+ ret = GetAce(sacl, 0, (void **)&ace);
+ ok(ret, "GetAce failed with error %u\n", GetLastError());
+ ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
+ "Unexpected ACE type %#x\n", ace->Header.AceType);
@@ -165,7 +166,7 @@ index 0fd41fe82fa..4a03db27e69 100644
+
+ if (sacl)
+ {
+ ret = pGetAce(sacl, 0, (void **)&ace);
+ ret = GetAce(sacl, 0, (void **)&ace);
+ ok(ret, "GetAce failed with error %u\n", GetLastError());
+ ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
+ "Unexpected ACE type %#x\n", ace->Header.AceType);
@@ -215,7 +216,7 @@ index 0fd41fe82fa..4a03db27e69 100644
+
+ if (sacl)
+ {
+ ret = pGetAce(sacl, 0, (void **)&ace);
+ ret = GetAce(sacl, 0, (void **)&ace);
+ ok(ret, "GetAce failed with error %u\n", GetLastError());
+ ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
+ "Unexpected ACE type %#x\n", ace->Header.AceType);
@@ -232,7 +233,7 @@ index 0fd41fe82fa..4a03db27e69 100644
ret = InitializeAcl(acl, 256, ACL_REVISION);
ok(ret, "InitializeAcl failed with error %u\n", GetLastError());
@@ -7362,6 +7547,90 @@ static void test_token_security_descriptor(void)
@@ -7205,6 +7390,90 @@ static void test_token_security_descriptor(void)
ret = SetKernelObjectSecurity(token, LABEL_SECURITY_INFORMATION, sd);
ok(ret, "SetKernelObjectSecurity failed with error %u\n", GetLastError());
@@ -272,7 +273,7 @@ index 0fd41fe82fa..4a03db27e69 100644
+
+ if (sacl)
+ {
+ ret = pGetAce(sacl, 0, (void **)&ace);
+ ret = GetAce(sacl, 0, (void **)&ace);
+ ok(ret, "GetAce failed with error %u\n", GetLastError());
+ ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
+ "Unexpected ACE type %#x\n", ace->Header.AceType);
@@ -310,7 +311,7 @@ index 0fd41fe82fa..4a03db27e69 100644
+
+ if (sacl)
+ {
+ ret = pGetAce(sacl, 0, (void **)&ace);
+ ret = GetAce(sacl, 0, (void **)&ace);
+ ok(ret, "GetAce failed with error %u\n", GetLastError());
+ ok(ace->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
+ "Unexpected ACE type %#x\n", ace->Header.AceType);
@@ -323,7 +324,7 @@ index 0fd41fe82fa..4a03db27e69 100644
}
else
win_skip("SYSTEM_MANDATORY_LABEL not supported\n");
@@ -7467,6 +7736,116 @@ static void test_child_token_sd(void)
@@ -7312,6 +7581,116 @@ static void test_child_token_sd(void)
HeapFree(GetProcessHeap(), 0, sd);
}
@@ -366,7 +367,7 @@ index 0fd41fe82fa..4a03db27e69 100644
+ ok(acl && acl != (void *)0xdeadbeef, "Got invalid SACL\n");
+ ok(!defaulted, "SACL defaulted\n");
+ ok(acl->AceCount == 1, "Expected exactly one ACE\n");
+ ret = pGetAce(acl, 0, (void **)&ace_label);
+ ret = GetAce(acl, 0, (void **)&ace_label);
+ ok(ret, "GetAce failed with error %u\n", GetLastError());
+ ok(ace_label->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
+ "Unexpected ACE type %#x\n", ace_label->Header.AceType);
@@ -421,7 +422,7 @@ index 0fd41fe82fa..4a03db27e69 100644
+ ok(acl && acl != (void *)0xdeadbeef, "Got invalid SACL\n");
+ ok(!defaulted, "SACL defaulted\n");
+ ok(acl->AceCount == 1, "Expected exactly one ACE\n");
+ ret = pGetAce(acl, 0, (void **)&ace_label);
+ ret = GetAce(acl, 0, (void **)&ace_label);
+ ok(ret, "GetAce failed with error %u\n", GetLastError());
+ ok(ace_label->Header.AceType == SYSTEM_MANDATORY_LABEL_ACE_TYPE,
+ "Unexpected ACE type %#x\n", ace_label->Header.AceType);
@@ -440,7 +441,7 @@ index 0fd41fe82fa..4a03db27e69 100644
static void test_GetExplicitEntriesFromAclW(void)
{
static const WCHAR wszCurrentUser[] = { 'C','U','R','R','E','N','T','_','U','S','E','R','\0'};
@@ -7653,6 +8032,10 @@ START_TEST(security)
@@ -7571,6 +7950,10 @@ START_TEST(security)
{
if (!strcmp(myARGV[2], "test_token_sd"))
test_child_token_sd();
@@ -452,5 +453,5 @@ index 0fd41fe82fa..4a03db27e69 100644
test_process_security_child();
return;
--
2.13.1
2.17.1

View File

@@ -1,2 +1 @@
Fixes: [18154] cmd: Support for launching programs based on file association
# Fixes: [36646]

View File

@@ -1,105 +0,0 @@
From 61b96f3dab24d3aec26237c8760d75f964474bc5 Mon Sep 17 00:00:00 2001
From: Louis Lenders <xerox.xerox2000x@gmail.com>
Date: Mon, 8 Apr 2019 17:06:58 +0200
Subject: [PATCH 2/2] combase: Add GetRestrictedErrorInfo and
RoOriginateLanguageException stubs.
Signed-off-by: Louis Lenders <xerox.xerox2000x@gmail.com>
---
.../api-ms-win-core-winrt-error-l1-1-0.spec | 2 +-
.../api-ms-win-core-winrt-error-l1-1-1.spec | 4 ++--
dlls/combase/combase.spec | 4 ++--
dlls/combase/roapi.c | 19 +++++++++++++++++++
4 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/dlls/api-ms-win-core-winrt-error-l1-1-0/api-ms-win-core-winrt-error-l1-1-0.spec b/dlls/api-ms-win-core-winrt-error-l1-1-0/api-ms-win-core-winrt-error-l1-1-0.spec
index de0a6d8..99f1ca3 100644
--- a/dlls/api-ms-win-core-winrt-error-l1-1-0/api-ms-win-core-winrt-error-l1-1-0.spec
+++ b/dlls/api-ms-win-core-winrt-error-l1-1-0/api-ms-win-core-winrt-error-l1-1-0.spec
@@ -1,4 +1,4 @@
-@ stub GetRestrictedErrorInfo
+@ stdcall GetRestrictedErrorInfo(ptr) combase.GetRestrictedErrorInfo
@ stub RoCaptureErrorContext
@ stub RoFailFastWithErrorContext
@ stub RoGetErrorReportingFlags
diff --git a/dlls/api-ms-win-core-winrt-error-l1-1-1/api-ms-win-core-winrt-error-l1-1-1.spec b/dlls/api-ms-win-core-winrt-error-l1-1-1/api-ms-win-core-winrt-error-l1-1-1.spec
index b1ad813..0b390f1 100644
--- a/dlls/api-ms-win-core-winrt-error-l1-1-1/api-ms-win-core-winrt-error-l1-1-1.spec
+++ b/dlls/api-ms-win-core-winrt-error-l1-1-1/api-ms-win-core-winrt-error-l1-1-1.spec
@@ -1,4 +1,4 @@
-@ stub GetRestrictedErrorInfo
+@ stdcall GetRestrictedErrorInfo(ptr) combase.GetRestrictedErrorInfo
@ stub IsErrorPropagationEnabled
@ stub RoCaptureErrorContext
@ stub RoClearError
@@ -9,7 +9,7 @@
@ stub RoInspectThreadErrorInfo
@ stub RoOriginateError
@ stub RoOriginateErrorW
-@ stub RoOriginateLanguageException
+@ stdcall RoOriginateLanguageException(long ptr ptr) combase.RoOriginateLanguageException
@ stub RoReportFailedDelegate
@ stub RoReportUnhandledError
@ stub RoResolveRestrictedErrorInfoReference
diff --git a/dlls/combase/combase.spec b/dlls/combase/combase.spec
index 93575d5..f67527a 100644
--- a/dlls/combase/combase.spec
+++ b/dlls/combase/combase.spec
@@ -180,7 +180,7 @@
@ stub GetFuncDescs
@ stdcall GetHGlobalFromStream(ptr ptr) ole32.GetHGlobalFromStream
@ stub GetHookInterface
-@ stub GetRestrictedErrorInfo
+@ stdcall GetRestrictedErrorInfo(ptr)
@ stub HSTRING_UserFree
@ stub HSTRING_UserFree64
@ stub HSTRING_UserMarshal
@@ -260,7 +260,7 @@
@ stub RoInspectThreadErrorInfo
@ stub RoOriginateError
@ stub RoOriginateErrorW
-@ stub RoOriginateLanguageException
+@ stdcall RoOriginateLanguageException(long ptr ptr)
@ stub RoParameterizedTypeExtraGetTypeSignature
@ stdcall RoRegisterActivationFactories(ptr ptr long ptr)
@ stdcall RoRegisterForApartmentShutdown(ptr ptr ptr)
diff --git a/dlls/combase/roapi.c b/dlls/combase/roapi.c
index c9fe80f..2a6dcdf 100644
--- a/dlls/combase/roapi.c
+++ b/dlls/combase/roapi.c
@@ -21,6 +21,7 @@
#include "initguid.h"
#include "roapi.h"
#include "roparameterizediid.h"
+#include "restrictederrorinfo.h"
#include "winstring.h"
#include "wine/debug.h"
@@ -276,6 +277,24 @@ HRESULT WINAPI RoRegisterActivationFactories(HSTRING *classes, PFNGETACTIVATIONF
}
/***********************************************************************
+ * GetRestrictedErrorInfo (combase.@)
+ */
+HRESULT WINAPI GetRestrictedErrorInfo( IRestrictedErrorInfo **info )
+{
+ FIXME( "(%p)\n", info );
+ return E_NOTIMPL;
+}
+
+/***********************************************************************
+ * RoOriginateLanguageException (combase.@)
+ */
+BOOL WINAPI RoOriginateLanguageException( HRESULT error, HSTRING message, IUnknown *language_exception )
+{
+ FIXME("(%x %s %p) stub\n", error, debugstr_hstring(message), language_exception);
+ return FALSE;
+}
+
+/***********************************************************************
* CleanupTlsOleState (combase.@)
*/
void WINAPI CleanupTlsOleState(void *unknown)
--
1.9.1

View File

@@ -1 +0,0 @@
Fixes: [46972] combase: Add GetRestrictedErrorInfo/RoOriginateLanguageException stubs.

View File

@@ -56,57 +56,6 @@ index 56e2563..a35f5f2 100644
if (subitemstage & CDRF_NOTIFYPOSTPAINT)
subitemstage = notify_customdraw(infoPtr, CDDS_SUBITEM | CDDS_ITEMPOSTPAINT, &nmlvcd);
diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c
index ec87e3b..eb4db0e 100644
--- a/dlls/comctl32/tests/listview.c
+++ b/dlls/comctl32/tests/listview.c
@@ -1830,12 +1830,16 @@ static LRESULT WINAPI cd_wndproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM
clr = GetBkColor(nmlvcd->nmcd.hdc);
ok(nmlvcd->clrTextBk == CLR_DEFAULT, "got 0x%x\n", nmlvcd->clrTextBk);
ok(nmlvcd->clrText == RGB(0, 255, 0), "got 0x%x\n", nmlvcd->clrText);
- todo_wine_if(nmlvcd->iSubItem)
- ok(clr == c0ffee, "clr=%.8x\n", clr);
+ if (!(GetWindowLongW(nmhdr->hwndFrom, GWL_STYLE) & LVS_SHOWSELALWAYS))
+ {
+ todo_wine_if(nmlvcd->iSubItem)
+ ok(clr == c0ffee, "clr=%.8x\n", clr);
+ }
return CDRF_NOTIFYPOSTPAINT;
case CDDS_ITEMPOSTPAINT | CDDS_SUBITEM:
clr = GetBkColor(nmlvcd->nmcd.hdc);
- todo_wine ok(clr == c0ffee, "clr=%.8x\n", clr);
+ if (!(GetWindowLongW(nmhdr->hwndFrom, GWL_STYLE) & LVS_SHOWSELALWAYS))
+ todo_wine ok(clr == c0ffee, "clr=%.8x\n", clr);
ok(nmlvcd->clrTextBk == CLR_DEFAULT, "got 0x%x\n", nmlvcd->clrTextBk);
ok(nmlvcd->clrText == RGB(0, 255, 0), "got 0x%x\n", nmlvcd->clrText);
return CDRF_DODEFAULT;
@@ -1851,6 +1855,7 @@ static void test_customdraw(void)
{
HWND hwnd;
WNDPROC oldwndproc;
+ LVITEMA item;
hwnd = create_listview_control(LVS_REPORT);
@@ -1870,6 +1875,18 @@ static void test_customdraw(void)
UpdateWindow(hwnd);
ok_sequence(sequences, PARENT_CD_SEQ_INDEX, parent_report_cd_seq, "parent customdraw, LVS_REPORT", FALSE);
+ /* check colors when item is selected */
+ SetWindowLongW(hwnd, GWL_STYLE, GetWindowLongW(hwnd, GWL_STYLE) | LVS_SHOWSELALWAYS);
+ item.mask = LVIF_STATE;
+ item.stateMask = LVIS_SELECTED;
+ item.state = LVIS_SELECTED;
+ SendMessageA(hwnd, LVM_SETITEMSTATE, 0, (LPARAM)&item);
+
+ flush_sequences(sequences, NUM_MSG_SEQUENCES);
+ InvalidateRect(hwnd, NULL, TRUE);
+ UpdateWindow(hwnd);
+ ok_sequence(sequences, PARENT_CD_SEQ_INDEX, parent_report_cd_seq, "parent customdraw, LVS_REPORT, selection", FALSE);
+
DestroyWindow(hwnd);
hwnd = create_listview_control(LVS_LIST);
--
2.9.0

View File

@@ -1,251 +0,0 @@
From ebbaf56bdb75f853dafdbbffba81233784ecb618 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Sat, 4 May 2019 18:21:05 +0800
Subject: [PATCH 1/2] comctl32: Switch to using a structure for extra storage.
Content-Type: text/plain; charset=UTF-8
To: wine-devel@winehq.org
These patches aim to fix the bug 47018.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/comctl32/static.c | 92 ++++++++++++++++++++++++++++++++++--------
1 file changed, 76 insertions(+), 16 deletions(-)
diff --git a/dlls/comctl32/static.c b/dlls/comctl32/static.c
index 5cc02ced97..d08710c06f 100644
--- a/dlls/comctl32/static.c
+++ b/dlls/comctl32/static.c
@@ -36,6 +36,7 @@
#include "winuser.h"
#include "commctrl.h"
+#include "wine/heap.h"
#include "wine/debug.h"
#include "comctl32.h"
@@ -50,10 +51,16 @@ static void STATIC_PaintBitmapfn( HWND hwnd, HDC hdc, DWORD style );
static void STATIC_PaintEnhMetafn( HWND hwnd, HDC hdc, DWORD style );
static void STATIC_PaintEtchedfn( HWND hwnd, HDC hdc, DWORD style );
-/* offsets for GetWindowLong for static private information */
-#define HFONT_GWL_OFFSET 0
-#define HICON_GWL_OFFSET (sizeof(HFONT))
-#define STATIC_EXTRA_BYTES (HICON_GWL_OFFSET + sizeof(HICON))
+struct static_extra_info
+{
+ HFONT hfont;
+ union
+ {
+ HICON hicon;
+ HBITMAP hbitmap;
+ HENHMETAFILE hemf;
+ } image;
+};
typedef void (*pfPaint)( HWND hwnd, HDC hdc, DWORD style );
@@ -80,6 +87,18 @@ static const pfPaint staticPaintFunc[SS_TYPEMASK+1] =
STATIC_PaintEtchedfn, /* SS_ETCHEDFRAME */
};
+static struct static_extra_info *get_extra_ptr( HWND hwnd, BOOL force )
+{
+ struct static_extra_info *extra = (struct static_extra_info *)GetWindowLongPtrW( hwnd, 0 );
+ if (!extra && force)
+ {
+ extra = heap_alloc_zero( sizeof(*extra) );
+ if (extra)
+ SetWindowLongPtrW( hwnd, 0, (ULONG_PTR)extra );
+ }
+ return extra;
+}
+
static BOOL get_icon_size( HICON handle, SIZE *size )
{
ICONINFO info;
@@ -111,6 +130,7 @@ static HICON STATIC_SetIcon( HWND hwnd, HICON hicon, DWORD style )
{
HICON prevIcon;
SIZE size;
+ struct static_extra_info *extra;
if ((style & SS_TYPEMASK) != SS_ICON) return 0;
if (hicon && !get_icon_size( hicon, &size ))
@@ -118,7 +138,12 @@ static HICON STATIC_SetIcon( HWND hwnd, HICON hicon, DWORD style )
WARN("hicon != 0, but invalid\n");
return 0;
}
- prevIcon = (HICON)SetWindowLongPtrW( hwnd, HICON_GWL_OFFSET, (LONG_PTR)hicon );
+
+ extra = get_extra_ptr( hwnd, TRUE );
+ if (!extra) return 0;
+
+ prevIcon = extra->image.hicon;
+ extra->image.hicon = hicon;
if (hicon && !(style & SS_CENTERIMAGE) && !(style & SS_REALSIZECONTROL))
{
/* Windows currently doesn't implement SS_RIGHTJUST */
@@ -146,6 +171,7 @@ static HICON STATIC_SetIcon( HWND hwnd, HICON hicon, DWORD style )
static HBITMAP STATIC_SetBitmap( HWND hwnd, HBITMAP hBitmap, DWORD style )
{
HBITMAP hOldBitmap;
+ struct static_extra_info *extra;
if ((style & SS_TYPEMASK) != SS_BITMAP) return 0;
if (hBitmap && GetObjectType(hBitmap) != OBJ_BITMAP)
@@ -153,7 +179,12 @@ static HBITMAP STATIC_SetBitmap( HWND hwnd, HBITMAP hBitmap, DWORD style )
WARN("hBitmap != 0, but it's not a bitmap\n");
return 0;
}
- hOldBitmap = (HBITMAP)SetWindowLongPtrW( hwnd, HICON_GWL_OFFSET, (LONG_PTR)hBitmap );
+
+ extra = get_extra_ptr( hwnd, TRUE );
+ if (!extra) return 0;
+
+ hOldBitmap = extra->image.hbitmap;
+ extra->image.hbitmap = hBitmap;
if (hBitmap && !(style & SS_CENTERIMAGE) && !(style & SS_REALSIZECONTROL))
{
BITMAP bm;
@@ -183,13 +214,23 @@ static HBITMAP STATIC_SetBitmap( HWND hwnd, HBITMAP hBitmap, DWORD style )
*/
static HENHMETAFILE STATIC_SetEnhMetaFile( HWND hwnd, HENHMETAFILE hEnhMetaFile, DWORD style )
{
+ HENHMETAFILE old_hemf;
+ struct static_extra_info *extra;
+
if ((style & SS_TYPEMASK) != SS_ENHMETAFILE) return 0;
if (hEnhMetaFile && GetObjectType(hEnhMetaFile) != OBJ_ENHMETAFILE)
{
WARN("hEnhMetaFile != 0, but it's not an enhanced metafile\n");
return 0;
}
- return (HENHMETAFILE)SetWindowLongPtrW( hwnd, HICON_GWL_OFFSET, (LONG_PTR)hEnhMetaFile );
+
+ extra = get_extra_ptr( hwnd, TRUE );
+ if (!extra) return 0;
+
+ old_hemf = extra->image.hemf;
+ extra->image.hemf = hEnhMetaFile;
+
+ return old_hemf;
}
/***********************************************************************
@@ -200,6 +241,8 @@ static HENHMETAFILE STATIC_SetEnhMetaFile( HWND hwnd, HENHMETAFILE hEnhMetaFile,
*/
static HANDLE STATIC_GetImage( HWND hwnd, WPARAM wParam, DWORD style )
{
+ struct static_extra_info *extra;
+
switch (style & SS_TYPEMASK)
{
case SS_ICON:
@@ -215,7 +258,22 @@ static HANDLE STATIC_GetImage( HWND hwnd, WPARAM wParam, DWORD style )
default:
return NULL;
}
- return (HANDLE)GetWindowLongPtrW( hwnd, HICON_GWL_OFFSET );
+
+ extra = get_extra_ptr( hwnd, FALSE );
+ return extra ? extra->image.hbitmap : 0;
+}
+
+static void STATIC_SetFont( HWND hwnd, HFONT hfont )
+{
+ struct static_extra_info *extra = get_extra_ptr( hwnd, TRUE );
+ if (extra)
+ extra->hfont = hfont;
+}
+
+static HFONT STATIC_GetFont( HWND hwnd )
+{
+ struct static_extra_info *extra = get_extra_ptr( hwnd, FALSE );
+ return extra ? extra->hfont : 0;
}
/***********************************************************************
@@ -327,6 +385,8 @@ static LRESULT CALLBACK STATIC_WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam,
case WM_NCDESTROY:
if (style == SS_ICON)
{
+ struct static_extra_info *extra = get_extra_ptr( hwnd, FALSE );
+ heap_free( extra );
/*
* FIXME
* DestroyIcon32( STATIC_SetIcon( wndPtr, 0 ) );
@@ -423,14 +483,14 @@ static LRESULT CALLBACK STATIC_WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam,
case WM_SETFONT:
if (hasTextStyle( full_style ))
{
- SetWindowLongPtrW( hwnd, HFONT_GWL_OFFSET, wParam );
+ STATIC_SetFont( hwnd, (HFONT)wParam );
if (LOWORD(lParam))
RedrawWindow( hwnd, NULL, 0, RDW_INVALIDATE | RDW_ERASE | RDW_UPDATENOW | RDW_ALLCHILDREN );
}
break;
case WM_GETFONT:
- return GetWindowLongPtrW( hwnd, HFONT_GWL_OFFSET );
+ return (LRESULT)STATIC_GetFont( hwnd );
case WM_NCHITTEST:
if (full_style & SS_NOTIFY)
@@ -508,7 +568,7 @@ static void STATIC_PaintOwnerDrawfn( HWND hwnd, HDC hdc, DWORD style )
dis.itemData = 0;
GetClientRect( hwnd, &dis.rcItem );
- font = (HFONT)GetWindowLongPtrW( hwnd, HFONT_GWL_OFFSET );
+ font = STATIC_GetFont( hwnd );
if (font) oldFont = SelectObject( hdc, font );
SendMessageW( GetParent(hwnd), WM_CTLCOLORSTATIC, (WPARAM)hdc, (LPARAM)hwnd );
SendMessageW( GetParent(hwnd), WM_DRAWITEM, id, (LPARAM)&dis );
@@ -572,7 +632,7 @@ static void STATIC_PaintTextfn( HWND hwnd, HDC hdc, DWORD style )
format |= DT_SINGLELINE | DT_WORD_ELLIPSIS;
}
- if ((hFont = (HFONT)GetWindowLongPtrW( hwnd, HFONT_GWL_OFFSET )))
+ if ((hFont = STATIC_GetFont( hwnd )))
hOldFont = SelectObject( hdc, hFont );
/* SS_SIMPLE controls: WM_CTLCOLORSTATIC is sent, but the returned
@@ -668,7 +728,7 @@ static void STATIC_PaintIconfn( HWND hwnd, HDC hdc, DWORD style )
GetClientRect( hwnd, &rc );
hbrush = STATIC_SendWmCtlColorStatic(hwnd, hdc);
- hIcon = (HICON)GetWindowLongPtrW( hwnd, HICON_GWL_OFFSET );
+ hIcon = STATIC_GetImage( hwnd, IMAGE_ICON, style );
if (!hIcon || !get_icon_size( hIcon, &size ))
{
FillRect(hdc, &rc, hbrush);
@@ -698,7 +758,7 @@ static void STATIC_PaintBitmapfn(HWND hwnd, HDC hdc, DWORD style )
hbrush = STATIC_SendWmCtlColorStatic(hwnd, hdc);
- if ((hBitmap = (HBITMAP)GetWindowLongPtrW( hwnd, HICON_GWL_OFFSET ))
+ if ((hBitmap = STATIC_GetImage( hwnd, IMAGE_BITMAP, style ))
&& (GetObjectType(hBitmap) == OBJ_BITMAP)
&& (hMemDC = CreateCompatibleDC( hdc )))
{
@@ -742,7 +802,7 @@ static void STATIC_PaintEnhMetafn(HWND hwnd, HDC hdc, DWORD style )
GetClientRect(hwnd, &rc);
hbrush = STATIC_SendWmCtlColorStatic(hwnd, hdc);
FillRect(hdc, &rc, hbrush);
- if ((hEnhMetaFile = (HENHMETAFILE)GetWindowLongPtrW( hwnd, HICON_GWL_OFFSET )))
+ if ((hEnhMetaFile = STATIC_GetImage( hwnd, IMAGE_ENHMETAFILE, style )))
{
/* The control's current font is not selected into the
device context! */
@@ -779,7 +839,7 @@ void STATIC_Register(void)
wndClass.style = CS_DBLCLKS | CS_PARENTDC | CS_GLOBALCLASS;
wndClass.lpfnWndProc = STATIC_WindowProc;
wndClass.cbClsExtra = 0;
- wndClass.cbWndExtra = STATIC_EXTRA_BYTES;
+ wndClass.cbWndExtra = sizeof(struct static_extra_info *);
wndClass.hCursor = LoadCursorW(0, (LPWSTR)IDC_ARROW);
wndClass.hbrBackground = NULL;
wndClass.lpszClassName = WC_STATICW;
--
2.20.1

View File

@@ -1,152 +0,0 @@
From 334262255a66b05a852c90ebc722815b8a0eb7e9 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Sat, 4 May 2019 19:46:35 +0800
Subject: [PATCH 2/2] comctl32: Paint 32-bpp bitmaps with an alpha channel
using GdiAlphaBlend.
Content-Type: text/plain; charset=UTF-8
To: wine-devel@winehq.org
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/comctl32/static.c | 83 ++++++++++++++++++++++++++++++++++++++++--
1 file changed, 79 insertions(+), 4 deletions(-)
diff --git a/dlls/comctl32/static.c b/dlls/comctl32/static.c
index d08710c06f..fe566645d3 100644
--- a/dlls/comctl32/static.c
+++ b/dlls/comctl32/static.c
@@ -60,6 +60,7 @@ struct static_extra_info
HBITMAP hbitmap;
HENHMETAFILE hemf;
} image;
+ BOOL image_has_alpha;
};
typedef void (*pfPaint)( HWND hwnd, HDC hdc, DWORD style );
@@ -163,6 +164,56 @@ static HICON STATIC_SetIcon( HWND hwnd, HICON hicon, DWORD style )
return prevIcon;
}
+static HBITMAP create_alpha_bitmap( HBITMAP hbitmap )
+{
+ HBITMAP alpha = 0;
+ BITMAPINFO *info = NULL;
+ BITMAP bm;
+ HDC src, dst;
+ void *bits;
+ DWORD i;
+ const unsigned char *ptr;
+ BOOL has_alpha = FALSE;
+
+ if (!GetObjectW( hbitmap, sizeof(bm), &bm )) return 0;
+ if (bm.bmBitsPixel != 32) return 0;
+
+ if (!(src = CreateCompatibleDC( 0 ))) return 0;
+ if (!(dst = CreateCompatibleDC( src ))) goto done;
+ if (!(info = HeapAlloc( GetProcessHeap(), 0, FIELD_OFFSET( BITMAPINFO, bmiColors[256] )))) goto done;
+ info->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ info->bmiHeader.biWidth = bm.bmWidth;
+ info->bmiHeader.biHeight = -bm.bmHeight;
+ info->bmiHeader.biPlanes = 1;
+ info->bmiHeader.biBitCount = 32;
+ info->bmiHeader.biCompression = BI_RGB;
+ info->bmiHeader.biSizeImage = bm.bmWidth * bm.bmHeight * 4;
+ info->bmiHeader.biXPelsPerMeter = 0;
+ info->bmiHeader.biYPelsPerMeter = 0;
+ info->bmiHeader.biClrUsed = 0;
+ info->bmiHeader.biClrImportant = 0;
+ if (!(alpha = CreateDIBSection( dst, info, DIB_RGB_COLORS, &bits, NULL, 0 ))) goto done;
+
+ SelectObject( src, hbitmap );
+ SelectObject( dst, alpha );
+ BitBlt(dst, 0, 0, bm.bmWidth, bm.bmHeight, src, 0, 0, SRCCOPY);
+
+ for (i = 0, ptr = bits; i < bm.bmWidth * bm.bmHeight; i++, ptr += 4)
+ if ((has_alpha = (ptr[3] != 0))) break;
+
+done:
+ DeleteDC( src );
+ DeleteDC( dst );
+ HeapFree( GetProcessHeap(), 0, info );
+
+ if (!has_alpha)
+ {
+ DeleteObject( alpha );
+ alpha = 0;
+ }
+ return alpha;
+}
+
/***********************************************************************
* STATIC_SetBitmap
*
@@ -170,7 +221,7 @@ static HICON STATIC_SetIcon( HWND hwnd, HICON hicon, DWORD style )
*/
static HBITMAP STATIC_SetBitmap( HWND hwnd, HBITMAP hBitmap, DWORD style )
{
- HBITMAP hOldBitmap;
+ HBITMAP hOldBitmap, alpha;
struct static_extra_info *extra;
if ((style & SS_TYPEMASK) != SS_BITMAP) return 0;
@@ -184,7 +235,18 @@ static HBITMAP STATIC_SetBitmap( HWND hwnd, HBITMAP hBitmap, DWORD style )
if (!extra) return 0;
hOldBitmap = extra->image.hbitmap;
- extra->image.hbitmap = hBitmap;
+ alpha = create_alpha_bitmap( hBitmap );
+ if (alpha)
+ {
+ extra->image.hbitmap = alpha;
+ extra->image_has_alpha = TRUE;
+ }
+ else
+ {
+ extra->image.hbitmap = hBitmap;
+ extra->image_has_alpha = FALSE;
+ }
+
if (hBitmap && !(style & SS_CENTERIMAGE) && !(style & SS_REALSIZECONTROL))
{
BITMAP bm;
@@ -386,7 +448,12 @@ static LRESULT CALLBACK STATIC_WindowProc( HWND hwnd, UINT uMsg, WPARAM wParam,
if (style == SS_ICON)
{
struct static_extra_info *extra = get_extra_ptr( hwnd, FALSE );
- heap_free( extra );
+ if (extra)
+ {
+ if (extra->image_has_alpha)
+ DeleteObject( extra->image.hbitmap );
+ heap_free( extra );
+ }
/*
* FIXME
* DestroyIcon32( STATIC_SetIcon( wndPtr, 0 ) );
@@ -765,6 +832,8 @@ static void STATIC_PaintBitmapfn(HWND hwnd, HDC hdc, DWORD style )
BITMAP bm;
RECT rcClient;
LOGBRUSH brush;
+ BLENDFUNCTION blend = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA };
+ struct static_extra_info *extra = get_extra_ptr( hwnd, FALSE );
GetObjectW(hBitmap, sizeof(bm), &bm);
oldbitmap = SelectObject(hMemDC, hBitmap);
@@ -785,7 +854,13 @@ static void STATIC_PaintBitmapfn(HWND hwnd, HDC hdc, DWORD style )
rcClient.right = rcClient.left + bm.bmWidth;
rcClient.bottom = rcClient.top + bm.bmHeight;
}
- StretchBlt(hdc, rcClient.left, rcClient.top, rcClient.right - rcClient.left,
+
+ if (extra->image_has_alpha)
+ GdiAlphaBlend(hdc, rcClient.left, rcClient.top, rcClient.right - rcClient.left,
+ rcClient.bottom - rcClient.top, hMemDC,
+ 0, 0, bm.bmWidth, bm.bmHeight, blend);
+ else
+ StretchBlt(hdc, rcClient.left, rcClient.top, rcClient.right - rcClient.left,
rcClient.bottom - rcClient.top, hMemDC,
0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
SelectObject(hMemDC, oldbitmap);
--
2.20.1

View File

@@ -1 +0,0 @@
Fixes: [47018] Paint 32-bpp bitmaps with an alpha channel using GdiAlphaBlend

Some files were not shown because too many files have changed in this diff Show More