Compare commits

...

129 Commits

Author SHA1 Message Date
Alistair Leslie-Hughes
8e8259db69 Release v5.0-rc1 2019-12-14 18:41:55 +11:00
Zebediah Figura
e6aac5d240 Rebase against ce7e10868a1279573acc5be5a9659d254e936b27. 2019-12-13 21:47:52 -06:00
Paul Gofman
40d020d66e Updated winebuild-Fake_Dlls patchset.
Fix stack alignment in x64 syscall thunks.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48274
2019-12-13 19:18:23 +03:00
Alistair Leslie-Hughes
0db8c6ad3c Updated dsdmo-new-dll patchset
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48255
2019-12-13 20:58:23 +11:00
Paul Gofman
45d69ec48b Rebase against 750d382f54e494771128c6b331122be2bc747484 2019-12-13 02:37:28 +03:00
Alistair Leslie-Hughes
2326756550 Updated wintab32-improvements patchset 2019-12-12 11:46:00 +11:00
Alistair Leslie-Hughes
4522654f1c Rebase against 5f0b5d350566a46f0f999e4cff7ad9e280fcfa05 2019-12-12 11:16:40 +11:00
Alistair Leslie-Hughes
dc9fa12a14 Rebase against 626162f7db979360d231698ab1288cda97940bb9 2019-12-11 09:43:03 +11:00
Alistair Leslie-Hughes
b011002d55 comctrl-rebar-capture: Update email address 2019-12-10 18:45:50 +11:00
Zebediah Figura
3e6d6e3909 Rebase against f870aa4988fa8e980919c144682da72865364ff0. 2019-12-09 21:29:30 -06:00
Alistair Leslie-Hughes
62c069eb9f Rebase against ac245040345e2039252b26f5c44841fc730f0854 2019-12-07 14:51:02 +11:00
Zebediah Figura
cb9aa710d5 Rebase against 7ca1c4900e42d608150822ef87a7ce2847a59b6f. 2019-12-05 22:31:23 -06:00
Zebediah Figura
3a14d63abf kernelbase-ReOpenFile: Use a handle we know is invalid.
Also fixes a compiler warning spotted by Marcus Meissner.
2019-12-05 10:43:54 -06:00
Alistair Leslie-Hughes
af616c5fc3 Rebase against 67d1321c2b8eb5d54aa8fbe0807d9052ae56c1ed 2019-12-05 09:32:37 +11:00
Alistair Leslie-Hughes
7167c4d6ad Rebase against 5cf64084fb6f277c3453099a65a78817d5c9f1db 2019-12-04 10:46:54 +11:00
Alistair Leslie-Hughes
d388288e2e Updated Compiler_Warnings 2019-12-03 15:57:36 +11:00
Alistair Leslie-Hughes
7b177b15fa Updated d2d1-ID2D1Factory1 patchset 2019-12-03 15:47:34 +11:00
Alistair Leslie-Hughes
70aaee4bf8 Updated wusa-MSU_Package_Installer patchset 2019-12-03 15:27:38 +11:00
Zebediah Figura
f23d30bc06 wusa-MSU_Package_Installer: Rebase and re-enable. 2019-12-02 19:28:46 -06:00
Paul Gofman
2f95fb4782 Rebase against 5536df1ee1042c6cf20a7d96c43520003a547092 2019-12-03 03:43:30 +03:00
Alistair Leslie-Hughes
9be789b289 Release v4.21 2019-11-30 15:52:08 +11:00
Paul Gofman
0da25307db Rebase against 2935bab96569dcd734a8e855ec9a20ae27c18973 2019-11-29 22:41:24 +03:00
Alistair Leslie-Hughes
9f10bba729 Rebase against ec9eddf86b144cc0fcf975a9cc864cf08ba84eaf 2019-11-29 09:39:35 +11:00
Alistair Leslie-Hughes
14a1f8bd0c Rebase against 4ccdf3e58a816ebf9c58000e985fd21737ffd485 2019-11-28 18:31:59 +11:00
Alistair Leslie-Hughes
3ba119e67c Rebase against ce275f38a02dd5f809eea45ff3fa02f645b56a7c 2019-11-27 11:11:51 +11:00
Paul Gofman
f4987b47e3 ntdll-ForceBottomUpAlloc: Add patch. 2019-11-26 15:05:31 +03:00
Paul Gofman
ced0f96514 ntdll-RtlGetNativeSystemInformation: Add patch. 2019-11-26 14:54:35 +03:00
Alistair Leslie-Hughes
f62913bfc3 Rebase against ddec23013e39b563a3a50c0fe42c2ae8b518d538 2019-11-26 12:16:52 +11:00
Torge Matthies
3fe9b83fa4 winecfg-Staging: Fix check for GTK3 support.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48155
2019-11-22 20:08:53 -06:00
Zebediah Figura
194199011a Rebase against 190fb605c34ac1365076dff0a6560ddb42ca1ef2. 2019-11-22 20:02:37 -06:00
Alistair Leslie-Hughes
7e4e808869 Rebase against 90fc020400c06c163d4ab117d8da755b0f0e0861 2019-11-22 09:51:24 +11:00
Zebediah Figura
38efd9d1bc ntdll-x86_64_SegDs: Add patch. 2019-11-21 10:58:02 -06:00
Zebediah Figura
29cc042257 ntdll-ThreadHideFromDebugger: Add patch. 2019-11-20 18:54:23 -06:00
Zebediah Figura
1f5394ae51 Rebase against aa3d01e65019fb2f135f74cf26cfa1661ca09325. 2019-11-20 18:48:50 -06:00
Alistair Leslie-Hughes
a9639c412f Rebase against a9c4b309f6af82b624604bd0df898ad88d59ab5a 2019-11-20 10:28:28 +11:00
Zebediah Figura
d391086546 d3d9-Direct3DShaderValidatorCreate9: The last argument to "stub2" is at most 32 bits in size.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48132
2019-11-18 21:45:03 -06:00
Alistair Leslie-Hughes
41ebbee85d Rebase agaisnt 288a6625ad0177e258a0db1da166d292ff420b1e 2019-11-19 09:46:15 +11:00
Alistair Leslie-Hughes
69cf026375 Added kernelbase-ReOpenFile patchset 2019-11-18 09:51:47 +11:00
Alistair Leslie-Hughes
356f228262 Release v4.20 2019-11-16 14:10:37 +11:00
Alistair Leslie-Hughes
f94a274729 Rebase against 5725ed3b46309b62469e4f305cb0b5a9b292dd43 2019-11-14 12:08:19 +11:00
Alistair Leslie-Hughes
cec9c7c73e Restore ole32-STGPROP patch 0001 2019-11-13 16:13:53 +11:00
Zebediah Figura
411f2a9702 d3d9-Direct3DShaderValidatorCreate9: Add patch set. 2019-11-12 21:15:58 -06:00
Zebediah Figura
ef0e88407e Rebase against 292b728908563952f56b0585d072f3d7a08e93b2. 2019-11-12 19:56:51 -06:00
Zebediah Figura
8148194353 Rebase against 34ed1e37da1e1c1cfd641f1f16b0e00030cbb357. 2019-11-11 19:53:15 -06:00
Zebediah Figura
ca018c8079 ntdll-NtContinue: Fix arguments to NtContinue(). 2019-11-10 20:47:35 -06:00
Zebediah Figura
7a3f594df2 evenfd_synchronization: Fix rebase, again.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48069
2019-11-09 13:56:25 -06:00
Alistair Leslie-Hughes
01a3c15320 Rebase against 070cfc358c8ed67ba08a49ae78c20205ab4e2d00 2019-11-09 15:13:58 +11:00
Zebediah Figura
fb40c21c72 Fix some errors in the last rebase, and add more dependencies. 2019-11-07 20:28:05 -06:00
Alistair Leslie-Hughes
0a469905c2 Rebase against 88d30985ddd534e8bafed531e619846bc8d10839 2019-11-08 11:55:03 +11:00
Zebediah Figura
e1ac8f20fe ntdll-MemoryWorkingSetExInformation: Fix a typo. 2019-11-07 10:00:59 -06:00
Zebediah Figura
471dc198a8 ntdll-NtContinue: Also use NtContinue() to continue after an exception on x86_64.
Patch by David Torok.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47970
2019-11-06 21:50:56 -06:00
Zebediah Figura
6c44e84e74 ntdll-NtContinue: Get rid of the check for CONTEXT_FULL.
Returning an error (silently!) is not an improvement over printing a message
and doing nothing, especially since I suspect no caller is going to be able
to cope with NtContinue() returning.

More saliently, Legends of Runeterra apparently accidentally passes the wrong
CPU flag. We don't do anything with the CPU flag, and manual testing shows
that Windows doesn't validate it in NtGetContextThread() at least, so it
probably doesn't validate it here either.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47970
2019-11-06 21:50:52 -06:00
Zebediah Figura
0c89d96edc winebuild-Fake_Dlls: Put the RET at the end of the 64-bit syscall thunk back.
I will pretend I did not see that
2019-11-06 20:15:26 -06:00
Zebediah Figura
5fbf201ea8 winebuild-Fake_Dlls: Adjust the 64-bit syscall dispatcher to return to the first "ret" instruction.
Diagnosed by David Torok: https://bugs.winehq.org/show_bug.cgi?id=47970
2019-11-06 19:06:57 -06:00
Alistair Leslie-Hughes
8c5d374d5a Rebase agaisnt 7f469b689a2dccc0863952cd73e592df391dc607 2019-11-06 10:16:40 +11:00
Alistair Leslie-Hughes
ded2e22686 Rebase against 2b29d02aa5ba65465b4adc017cdca9a8932b0dbe 2019-11-05 12:23:05 +11:00
Alistair Leslie-Hughes
1f77584097 Release v4.19 2019-11-02 10:37:40 +11:00
Alistair Leslie-Hughes
6e793996ba Rebase against ccec532879ec14b2e79da08288152a69221ec4d1 2019-11-01 18:10:58 +11:00
Paul Gofman
6f1ebb84a2 Added ntdll-BitmaskAllocAreaSearch patchset. 2019-10-31 16:42:52 +03:00
Alistair Leslie-Hughes
d26687d90a Updated ntdll-User_Shared_Data patchset
Silence a noisy FIXME, by github user Guy1524
2019-10-31 11:48:18 +11:00
Alistair Leslie-Hughes
067a975495 Rebase against 666f7501d03983f84833a7a1952e78fd0650fde6 2019-10-30 11:26:22 +11:00
Alistair Leslie-Hughes
bc4e00ae02 Rebase against 5b62f89baa82daecd430897de0bb5cab32c5fc5e 2019-10-29 09:50:40 +11:00
Alistair Leslie-Hughes
086d99f83e Rebase against 237d5636271a1a78b02a0eb7feaab7dfb9dfed57 2019-10-28 09:12:06 +11:00
Alistair Leslie-Hughes
bc7627cdf1 Rebase against 717109ce79bbf92b5e3e93e49f96b78ece00a952 2019-10-24 08:29:06 +11:00
Alistair Leslie-Hughes
e380c1e9a7 Rebase against d82f06c07556408e9584d2a1f8b275df39c93d74 2019-10-23 10:20:30 +11:00
Alistair Leslie-Hughes
a568bd3e79 Rebase against 98c2c9a9c98d174851fa7a87db79599dd7d8af89 2019-10-22 09:01:23 +11:00
Alistair Leslie-Hughes
9807a02bb3 Release v4.18 2019-10-19 13:37:33 +11:00
Alistair Leslie-Hughes
eab8fd69f7 Rebase against 8c74027ba60a360f24cf232ee233e71262d8f1ff 2019-10-19 13:36:30 +11:00
Alistair Leslie-Hughes
b95882c061 Updated advapi32-LsaLookupSids patchset
Fix test in last rebase.
2019-10-18 10:10:00 +11:00
Alistair Leslie-Hughes
49b240d88c Rebase against 0fe003435e90dc32dd405a62af8fbcc20afc925d 2019-10-18 08:54:48 +11:00
Alistair Leslie-Hughes
c96aa29030 Added user32-InternalGetWindowIcon patchset 2019-10-14 10:40:38 +11:00
Alistair Leslie-Hughes
d432608737 Updated dinput-joy-mappings patchset 2019-10-11 14:20:41 +11:00
Alistair Leslie-Hughes
db09443c86 Updated ntdll-RtlIpv4StringToAddress reference 2019-10-11 13:34:43 +11:00
Alistair Leslie-Hughes
da73254259 Updated dinput-joy-mappings patchset
- Use heap_alloc/free
- Remove use of const buffers.
- Add "dinput: Dont allow Fixed actions to be changed."
2019-10-11 13:30:49 +11:00
Alistair Leslie-Hughes
a246130f81 Rebase against 89d9bcb1f19a03ffafa9a93a5f32049b4bfdaa00 2019-10-09 08:38:54 +11:00
Paul Gofman
042a633c8a Rebase against 15bf3eee2cf05ce98011458fc5e715f4524c4ebd 2019-10-04 02:11:27 +03:00
Zebediah Figura
cf04b8d6ac eventfd_synchronization: Cherry-pick some fixes. 2019-10-02 20:37:48 -05:00
Alistair Leslie-Hughes
6be963ebfd Rebase against 5e8eb5f4c54c3a6d3c92fd414372da2fbd5bd91a 2019-10-03 08:54:04 +10:00
Alistair Leslie-Hughes
5b066d6aed Disable user32-rawinput patchset
This is causing regressions across the board.
https://bugs.winehq.org/show_bug.cgi?id=47834

Star Craft 2, Borderlands, StarCitizen, Halo Online
2019-10-02 10:41:41 +10:00
Alistair Leslie-Hughes
c24cb89257 Rebase against b360cd67e8f7f8c01f09457bacb032fd4a248d0a 2019-10-02 10:11:40 +10:00
Paul Gofman
3d5bb83e05 Updated wined3d-zero-inf-shaders patchset.
Avoid infinity resulting from overflow in POW with multiply_setting set to 1.
2019-10-01 21:52:15 +03:00
Alistair Leslie-Hughes
0c7512f5f5 Updated user32-rawinput patchset 2019-09-29 18:06:18 +10:00
Alistair Leslie-Hughes
9fe5cabf21 Release v4.17 2019-09-28 13:26:48 +10:00
Paul Gofman
99c474f018 Updated d3d11-Deferred_Context patchset.
Fix device reference leak on command list release.
2019-09-27 17:30:48 +03:00
Paul Gofman
c942f42ee5 Remove wined3d-DXTn patchset.
Should be obsolete since 5a6efe632918fd18758897c39910d52791d46053
mainstream commit.
2019-09-27 17:30:48 +03:00
Paul Gofman
670a9e20c0 Updated d3d11-Deferred_Context patchset.
Add basic test for drawing with deferred context.
2019-09-27 17:30:27 +03:00
Paul Gofman
0c815a486b Updated d3d11-Deferred_Context patchset.
Fix test failures.
2019-09-27 16:42:57 +03:00
Paul Gofman
cdfddb170a Updated d3dx9_36-CloneEffect patchset.
Fix test failures.
2019-09-27 16:42:57 +03:00
Paul Gofman
c58f817de8 Updated d3dx9-32bpp_Alpha_Channel patchset.
Removed todo_wine from relevant test.
2019-09-27 16:42:57 +03:00
Paul Gofman
c7d0330ce8 Updated ddraw-Rendering_Targets patchset. 2019-09-27 04:09:44 +03:00
Paul Gofman
c6f7b46951 Updated d3dx9_36-Texture_Align patchset. 2019-09-27 04:04:51 +03:00
Paul Gofman
84a644848c Updated wined3d-SWVP-shaders patchset. 2019-09-27 03:53:25 +03:00
Paul Gofman
b24b3a88cc Rebase against f4ecef456595325f973487173cad3ac1269d87f9. 2019-09-27 01:05:22 +03:00
Alistair Leslie-Hughes
ced72a6a0a Add missing file 2019-09-25 19:35:51 +10:00
Alistair Leslie-Hughes
e09468ec17 Updated user32-rawinput patchset 2019-09-25 14:26:05 +10:00
Alistair Leslie-Hughes
81ac4ea01a Fix rebase 2019-09-25 14:05:04 +10:00
Alistair Leslie-Hughes
053de1b617 Drop mfplat-MFGetConfigurationDWORD patchset
Mixing Native/Builtin mfplat isn't supported.
2019-09-25 12:55:41 +10:00
Alistair Leslie-Hughes
47891c1826 Disable user32-rawinput
As Rémi Bernon patches will soon supersede this, disabled once again.
2019-09-25 12:55:30 +10:00
Alistair Leslie-Hughes
dd7f7cc1ba Rebase against ae8f605ede0054c8e380e809c196f2621d9cf423 2019-09-25 12:45:16 +10:00
Zebediah Figura
649c35ff92 Rebase against ae8f605ede0054c8e380e809c196f2621d9cf423. 2019-09-23 18:54:36 -05:00
Zebediah Figura
7c57b6eba4 Rebase against 27da4fa4498c3b6e0e46c72a9cdd13b620726e92. 2019-09-20 17:04:56 -05:00
Alistair Leslie-Hughes
c0389b0479 Enable user32-rawinput patchset 2019-09-20 08:59:46 +10:00
Alistair Leslie-Hughes
fd3b1a04e7 Added dsdmo-new-dll patchset 2019-09-19 11:54:33 +10:00
Alistair Leslie-Hughes
fab929969c Added dmime-PChannel-range patchset 2019-09-19 11:47:24 +10:00
Zebediah Figura
ccdf3d98ff uxtheme-GTK_Theming: Depend on uxtheme-CloseThemeClass. 2019-09-18 20:35:15 -05:00
Alistair Leslie-Hughes
1e58aad446 Correct GTK patchset change 2019-09-19 11:14:24 +10:00
Zebediah Figura
8dc124ce70 uxtheme-GTK_Theming: Various build fixes.
Don't add a new autoconf macro, just use the existing one.
2019-09-18 19:24:49 -05:00
Zebediah Figura
b6054fa105 Add some references to bug reports. 2019-09-18 18:39:54 -05:00
Zebediah Figura
fe6b2652ef ntdll-NtContinue: Fix rebase. 2019-09-18 18:23:55 -05:00
Alistair Leslie-Hughes
692d7d43e0 Rebase against e83f427a65726bfdefd2712a96f228e720c8b274 2019-09-19 08:53:36 +10:00
Alistair Leslie-Hughes
6bee4b6e76 Rebase against 12c09051b48507cf8bb37d500719661d0c6ad9f0 2019-09-18 08:15:22 +10:00
Alistair Leslie-Hughes
c323ef47c7 Release v4.16 2019-09-14 17:17:30 +10:00
Zebediah Figura
9e6693ed13 ntdll-Interrupt-0x2e: Fully handle interrupt 0x2e on the signal stack. 2019-09-13 17:12:40 -05:00
Zebediah Figura
29bdd4cd85 ntdll-Signal_Handler: Restore accidentally deleted hunk. 2019-09-13 17:03:26 -05:00
Zebediah Figura
39d7dcb2c6 Rebase against 3bf7473b880eea8b8dcaa43487afda2d7b1fbd03. 2019-09-13 17:03:00 -05:00
Alistair Leslie-Hughes
2e4d0f4727 Updated wined3d-zero-inf-shaders patchset 2019-09-13 09:28:30 +10:00
Alistair Leslie-Hughes
fd818b1914 Update mfplat-MFGetConfigurationDWORD patchset 2019-09-13 09:28:30 +10:00
Alistair Leslie-Hughes
26e542b4e5 Rebase against 85d8d1390467147fca416236fd50bb6ea2e2c8e4 2019-09-13 09:28:30 +10:00
Alistair Leslie-Hughes
6ef7be2566 Updated directmanipulation-new-dll patchset 2019-09-12 09:00:15 +10:00
Alistair Leslie-Hughes
5b012f08d5 Added mfplat-MFGetConfigurationDWORD patchset 2019-09-12 09:00:15 +10:00
Alistair Leslie-Hughes
8390ba0d95 Added wined3d-zero-inf-shaders patchset 2019-09-12 08:33:01 +10:00
Alistair Leslie-Hughes
fb18deb95f Rebase against 1413f577c592cd4aaeb3dba1a8adbe3e04d62d29 2019-09-11 09:26:34 +10:00
Alistair Leslie-Hughes
27b33a4be9 Remove setupapi-Display_Device patchset
This has been reported as fixed upstream and is no longer required.

Thanks Zhiyi Zhang.
2019-09-10 18:16:20 +10:00
Zebediah Figura
a15bdaa0ba Rebase against 01b19b63a454aa455928c10c694895fdba901aba. 2019-09-09 18:52:44 -05:00
Zebediah Figura
734918298c Rebase against 765815729fc4af2472e60551364e3b29dccfbcff. 2019-09-06 17:38:54 -05:00
Alistair Leslie-Hughes
bc1aa54891 Rebase against 92c00c51b21594987d342b5ce00c174ab4e84595 2019-09-05 08:52:02 +10:00
Alistair Leslie-Hughes
2da0d341f6 Rebase against 363b8809f37b3ea5915ea4240b3d397fd2355e2e 2019-09-04 08:23:20 +10:00
Alistair Leslie-Hughes
155cb0b051 Rebase against 0c2f5f8b15a4f7bb7008c3efb12b4cd3c774a3a1 2019-09-04 08:02:11 +10:00
Alistair Leslie-Hughes
498c9eae60 Added macos-compile patchset 2019-09-04 07:58:11 +10:00
230 changed files with 11048 additions and 10809 deletions

View File

@@ -1,4 +1,4 @@
From c8f9b712a946fac79af1290d14c1d31d0a8f0c10 Mon Sep 17 00:00:00 2001
From a0211ba2069af11a64588a49222dcdcce1d805be Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Tue, 22 Mar 2016 21:54:26 +0100
Subject: [PATCH] d2d1: Avoid implicit cast of interface pointer.
@@ -7,16 +7,16 @@ Subject: [PATCH] d2d1: Avoid implicit cast of interface pointer.
dlls/d2d1/bitmap.c | 2 +-
dlls/d2d1/brush.c | 8 ++++----
dlls/d2d1/dc_render_target.c | 2 +-
dlls/d2d1/geometry.c | 6 +++---
dlls/d2d1/geometry.c | 8 ++++----
dlls/d2d1/hwnd_render_target.c | 2 +-
dlls/d2d1/state_block.c | 2 +-
6 files changed, 11 insertions(+), 11 deletions(-)
6 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/dlls/d2d1/bitmap.c b/dlls/d2d1/bitmap.c
index 39e81192f77..52810211701 100644
index bc958e50a1..76ecc7f02a 100644
--- a/dlls/d2d1/bitmap.c
+++ b/dlls/d2d1/bitmap.c
@@ -623,5 +623,5 @@ struct d2d_bitmap *unsafe_impl_from_ID2D1Bitmap(ID2D1Bitmap *iface)
@@ -617,5 +617,5 @@ struct d2d_bitmap *unsafe_impl_from_ID2D1Bitmap(ID2D1Bitmap *iface)
if (!iface)
return NULL;
assert(iface->lpVtbl == (ID2D1BitmapVtbl *)&d2d_bitmap_vtbl);
@@ -24,7 +24,7 @@ index 39e81192f77..52810211701 100644
+ return CONTAINING_RECORD((ID2D1Bitmap1*)iface, struct d2d_bitmap, ID2D1Bitmap1_iface);
}
diff --git a/dlls/d2d1/brush.c b/dlls/d2d1/brush.c
index 21abf1456ab..1030884c2b7 100644
index 80fc0f5331..a612e683b6 100644
--- a/dlls/d2d1/brush.c
+++ b/dlls/d2d1/brush.c
@@ -253,7 +253,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
@@ -64,7 +64,7 @@ index 21abf1456ab..1030884c2b7 100644
static HRESULT STDMETHODCALLTYPE d2d_bitmap_brush_QueryInterface(ID2D1BitmapBrush1 *iface,
diff --git a/dlls/d2d1/dc_render_target.c b/dlls/d2d1/dc_render_target.c
index 310c5412967..9d9168dc8ee 100644
index 47aa99697d..0efa3ebeaf 100644
--- a/dlls/d2d1/dc_render_target.c
+++ b/dlls/d2d1/dc_render_target.c
@@ -23,7 +23,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d2d);
@@ -77,7 +77,7 @@ index 310c5412967..9d9168dc8ee 100644
static HRESULT d2d_dc_render_target_present(IUnknown *outer_unknown)
diff --git a/dlls/d2d1/geometry.c b/dlls/d2d1/geometry.c
index 91ce32c28e7..da4a1f2d3ee 100644
index 79850f1c20..b9b6a32f76 100644
--- a/dlls/d2d1/geometry.c
+++ b/dlls/d2d1/geometry.c
@@ -2982,7 +2982,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl =
@@ -89,7 +89,7 @@ index 91ce32c28e7..da4a1f2d3ee 100644
}
static HRESULT STDMETHODCALLTYPE d2d_path_geometry_QueryInterface(ID2D1PathGeometry *iface, REFIID iid, void **out)
@@ -3498,7 +3498,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory
@@ -3502,7 +3502,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory2 *factor
static inline struct d2d_geometry *impl_from_ID2D1RectangleGeometry(ID2D1RectangleGeometry *iface)
{
@@ -98,7 +98,7 @@ index 91ce32c28e7..da4a1f2d3ee 100644
}
static HRESULT STDMETHODCALLTYPE d2d_rectangle_geometry_QueryInterface(ID2D1RectangleGeometry *iface,
@@ -3833,7 +3833,7 @@ fail:
@@ -3841,7 +3841,7 @@ fail:
static inline struct d2d_geometry *impl_from_ID2D1TransformedGeometry(ID2D1TransformedGeometry *iface)
{
@@ -107,8 +107,17 @@ index 91ce32c28e7..da4a1f2d3ee 100644
}
static HRESULT STDMETHODCALLTYPE d2d_transformed_geometry_QueryInterface(ID2D1TransformedGeometry *iface,
@@ -4122,7 +4122,7 @@ void d2d_transformed_geometry_init(struct d2d_geometry *geometry, ID2D1Factory2
static inline struct d2d_geometry *impl_from_ID2D1GeometryGroup(ID2D1GeometryGroup *iface)
{
- return CONTAINING_RECORD(iface, struct d2d_geometry, ID2D1Geometry_iface);
+ return CONTAINING_RECORD( (ID2D1Geometry*)iface, struct d2d_geometry, ID2D1Geometry_iface);
}
static HRESULT STDMETHODCALLTYPE d2d_geometry_group_QueryInterface(ID2D1GeometryGroup *iface,
diff --git a/dlls/d2d1/hwnd_render_target.c b/dlls/d2d1/hwnd_render_target.c
index 625f101eaa7..f3626c42cee 100644
index 625f101eaa..f3626c42ce 100644
--- a/dlls/d2d1/hwnd_render_target.c
+++ b/dlls/d2d1/hwnd_render_target.c
@@ -23,7 +23,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d2d);
@@ -121,7 +130,7 @@ index 625f101eaa7..f3626c42cee 100644
static HRESULT d2d_hwnd_render_target_present(IUnknown *outer_unknown)
diff --git a/dlls/d2d1/state_block.c b/dlls/d2d1/state_block.c
index e3175146a64..b66752983e6 100644
index e3175146a6..b66752983e 100644
--- a/dlls/d2d1/state_block.c
+++ b/dlls/d2d1/state_block.c
@@ -187,5 +187,5 @@ struct d2d_state_block *unsafe_impl_from_ID2D1DrawingStateBlock(ID2D1DrawingStat
@@ -132,5 +141,5 @@ index e3175146a64..b66752983e6 100644
+ return CONTAINING_RECORD((ID2D1DrawingStateBlock1*)iface, struct d2d_state_block, ID2D1DrawingStateBlock1_iface);
}
--
2.20.1
2.17.1

View File

@@ -1,4 +1,4 @@
From 5e4c31d0796f2e559889d4f84cdb571130217e7d Mon Sep 17 00:00:00 2001
From 7529755fcc41fda650aac6b27f34438354435d34 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Tue, 22 Mar 2016 21:58:40 +0100
Subject: [PATCH] dwrite: Avoid implicit cast of interface pointer.
@@ -9,10 +9,10 @@ Subject: [PATCH] dwrite: Avoid implicit cast of interface pointer.
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index f50133d..1bc7b59 100644
index 9280b5d32..2f0974a4c 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -1815,7 +1815,7 @@ static struct dwrite_font *unsafe_impl_from_IDWriteFont(IDWriteFont *iface)
@@ -1887,7 +1887,7 @@ static struct dwrite_font *unsafe_impl_from_IDWriteFont(IDWriteFont *iface)
if (!iface)
return NULL;
assert(iface->lpVtbl == (IDWriteFontVtbl*)&dwritefontvtbl);
@@ -21,28 +21,28 @@ index f50133d..1bc7b59 100644
}
struct dwrite_fontface *unsafe_impl_from_IDWriteFontFace(IDWriteFontFace *iface)
@@ -1823,7 +1823,7 @@ struct dwrite_fontface *unsafe_impl_from_IDWriteFontFace(IDWriteFontFace *iface)
@@ -1895,7 +1895,7 @@ struct dwrite_fontface *unsafe_impl_from_IDWriteFontFace(IDWriteFontFace *iface)
if (!iface)
return NULL;
assert(iface->lpVtbl == (IDWriteFontFaceVtbl*)&dwritefontfacevtbl);
- return CONTAINING_RECORD(iface, struct dwrite_fontface, IDWriteFontFace4_iface);
+ return CONTAINING_RECORD((IDWriteFontFace4 *)iface, struct dwrite_fontface, IDWriteFontFace4_iface);
- return CONTAINING_RECORD(iface, struct dwrite_fontface, IDWriteFontFace5_iface);
+ return CONTAINING_RECORD((IDWriteFontFace5 *)iface, struct dwrite_fontface, IDWriteFontFace5_iface);
}
void get_logfont_from_font(IDWriteFont *iface, LOGFONTW *lf)
static struct dwrite_fontfacereference *unsafe_impl_from_IDWriteFontFaceReference(IDWriteFontFaceReference *iface)
diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c
index f27fe9f..ee1eb5a 100644
index b9321157a..76ea23ba6 100644
--- a/dlls/dwrite/layout.c
+++ b/dlls/dwrite/layout.c
@@ -5622,7 +5622,7 @@ static const IDWriteTextFormat2Vtbl dwritetextformatvtbl = {
@@ -5895,7 +5895,7 @@ static const IDWriteTextFormat3Vtbl dwritetextformatvtbl =
static struct dwrite_textformat *unsafe_impl_from_IDWriteTextFormat(IDWriteTextFormat *iface)
{
return (iface->lpVtbl == (IDWriteTextFormatVtbl*)&dwritetextformatvtbl) ?
- CONTAINING_RECORD(iface, struct dwrite_textformat, IDWriteTextFormat2_iface) : NULL;
+ CONTAINING_RECORD((IDWriteTextFormat2 *)iface, struct dwrite_textformat, IDWriteTextFormat2_iface) : NULL;
- CONTAINING_RECORD(iface, struct dwrite_textformat, IDWriteTextFormat3_iface) : NULL;
+ CONTAINING_RECORD((IDWriteTextFormat3 *)iface, struct dwrite_textformat, IDWriteTextFormat3_iface) : NULL;
}
HRESULT create_textformat(const WCHAR *family_name, IDWriteFontCollection *collection, DWRITE_FONT_WEIGHT weight, DWRITE_FONT_STYLE style,
--
1.9.1
2.24.0

View File

@@ -1,2 +1 @@
Fixes: Fixes compile warnings.
#Depends: mailing-list-patches

View File

@@ -1,7 +1,7 @@
From 08d8e1c398ed6f3e237ad9fd3d29e10d09dcff3d Mon Sep 17 00:00:00 2001
From 40630c14377561e90a4be405d2124338002a88f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 2 May 2014 20:46:19 +0200
Subject: user32: Decrease minimum SetTimer interval to 5 ms. (try 2)
Subject: [PATCH] user32: Decrease minimum SetTimer interval to 5 ms. (try 2)
---
dlls/user32/message.c | 2 +-
@@ -9,10 +9,10 @@ Subject: user32: Decrease minimum SetTimer interval to 5 ms. (try 2)
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/message.c b/dlls/user32/message.c
index d122980..aec0938 100644
index 1336865112a..cbe9920384f 100644
--- a/dlls/user32/message.c
+++ b/dlls/user32/message.c
@@ -4443,7 +4443,7 @@ UINT_PTR WINAPI SetTimer( HWND hwnd, UINT_PTR id, UINT timeout, TIMERPROC proc )
@@ -4496,7 +4496,7 @@ UINT_PTR WINAPI SetCoalescableTimer( HWND hwnd, UINT_PTR id, UINT timeout, TIMER
if (proc) winproc = WINPROC_AllocProc( (WNDPROC)proc, FALSE );
@@ -22,25 +22,25 @@ index d122980..aec0938 100644
SERVER_START_REQ( set_win_timer )
{
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index d92fbc7..dbaddb7 100644
index c0ba5834cf9..a6bc158e8a7 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -8521,6 +8521,7 @@ static void test_timers(void)
@@ -10282,6 +10282,7 @@ static void test_timers(void)
start = GetTickCount();
while (GetTickCount()-start < 1001 && GetMessageA(&msg, info.hWnd, 0, 0))
DispatchMessageA(&msg);
+todo_wine
ok(abs(count-TIMER_COUNT_EXPECTED) < TIMER_COUNT_TOLERANCE /* xp */
|| broken(abs(count-64) < TIMER_COUNT_TOLERANCE) /* most common */
|| broken(abs(count-43) < TIMER_COUNT_TOLERANCE) /* w2k3, win8 */,
@@ -8589,6 +8590,7 @@ static void test_timers_no_wnd(void)
|| broken(abs(count-64) <= TIMER_COUNT_TOLERANCE) /* most common */
|| broken(abs(count-43) <= TIMER_COUNT_TOLERANCE) /* w2k3, win8 */,
@@ -10352,6 +10353,7 @@ static void test_timers_no_wnd(void)
start = GetTickCount();
while (GetTickCount()-start < 1001 && GetMessageA(&msg, NULL, 0, 0))
DispatchMessageA(&msg);
+todo_wine
ok(abs(count-TIMER_COUNT_EXPECTED) < TIMER_COUNT_TOLERANCE /* xp */
|| broken(abs(count-64) < TIMER_COUNT_TOLERANCE) /* most common */,
"did not get expected count for minimum timeout (%d != ~%d).\n",
|| broken(abs(count-64) <= TIMER_COUNT_TOLERANCE) /* most common */
|| broken(abs(count-43) <= TIMER_COUNT_TOLERANCE) /* w1064v1809 */,
--
2.5.1
2.17.1

View File

@@ -1,4 +1,4 @@
From ee1533db82fa2a955765b6a00f5300900350d2fe Mon Sep 17 00:00:00 2001
From 9e585de1f2f28e1ef18c1edca875779c491375cb Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 2 Oct 2014 19:44:31 +0200
Subject: [PATCH] kernel32: Add winediag message to show warning, that this
@@ -9,7 +9,7 @@ Subject: [PATCH] kernel32: Add winediag message to show warning, that this
1 file changed, 10 insertions(+)
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 0a3fd70..206224f 100644
index 36ed82bff8c..b8a677c5485 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -65,6 +65,7 @@
@@ -18,9 +18,9 @@ index 0a3fd70..206224f 100644
WINE_DECLARE_DEBUG_CHANNEL(relay);
+WINE_DECLARE_DEBUG_CHANNEL(winediag);
#ifdef __APPLE__
extern char **__wine_get_main_environment(void);
@@ -1090,6 +1091,15 @@ void WINAPI start_process( LPTHREAD_START_ROUTINE entry, PEB *peb )
typedef struct
{
@@ -997,6 +998,15 @@ void WINAPI start_process( LPTHREAD_START_ROUTINE entry, PEB *peb )
__TRY
{
@@ -37,5 +37,5 @@ index 0a3fd70..206224f 100644
being_debugged = FALSE;
--
1.9.1
2.23.0

View File

@@ -1,7 +1,7 @@
From 83517396c266c2de290670128d678770f5d79cc9 Mon Sep 17 00:00:00 2001
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: advapi32: Fix name and use of DOMAIN_GROUP_RID_USERS.
Subject: [PATCH] advapi32: Fix name and use of DOMAIN_GROUP_RID_USERS.
---
dlls/advapi32/security.c | 7 +++++--
@@ -9,10 +9,10 @@ Subject: advapi32: Fix name and use of DOMAIN_GROUP_RID_USERS.
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index d27b2e7..2362dd5 100644
index a7707f15d39..73c1f054d5c 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -191,7 +191,7 @@ static const WCHAR Domain_Admins[] = { 'D','o','m','a','i','n',' ','A','d','m','
@@ -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 };
@@ -21,7 +21,7 @@ index d27b2e7..2362dd5 100644
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 };
@@ -2206,7 +2206,10 @@ LookupAccountSidW(
@@ -1185,7 +1185,10 @@ LookupAccountSidW(
ac = Domain_Admins;
break;
case DOMAIN_GROUP_RID_USERS:
@@ -34,20 +34,23 @@ index d27b2e7..2362dd5 100644
case DOMAIN_GROUP_RID_GUESTS:
ac = Domain_Guests;
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 573119f..490ce26 100644
index 5f65ed385dd..a9d745cfe39 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -2578,8 +2578,8 @@ static void test_process_security(void)
@@ -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);
- todo_wine ok(!strcmp(account, "None"), "expect None, got %s\n", account);
+ ok(use == SidTypeGroup, "expect SidTypeGroup, got %d\n", use);
+ ok(!strcmp(account, "None"), "expect None, got %s\n", account);
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.3.5
2.17.1

View File

@@ -0,0 +1,3 @@
# 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,4 +1,4 @@
From f94296129eb249a04ccb012a10f50b79fb0a631a Mon Sep 17 00:00:00 2001
From 8959c13f2be7e2a31f27c8483ee2202692f00710 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 5 Aug 2017 01:45:29 +0200
Subject: [PATCH] ntdll: Add function to create new tokens for elevation
@@ -7,17 +7,17 @@ Subject: [PATCH] ntdll: Add function to create new tokens for elevation
---
dlls/ntdll/ntdll.spec | 3 ++
dlls/ntdll/ntdll_misc.h | 3 ++
dlls/ntdll/process.c | 18 +++++++++++
server/protocol.def | 8 +++++
dlls/ntdll/process.c | 18 +++++++++
server/protocol.def | 8 ++++
server/security.h | 1 +
server/token.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++
server/token.c | 84 +++++++++++++++++++++++++++++++++++++++++
6 files changed, 117 insertions(+)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 969cee7..008abb7 100644
index d626e0bf2..5057e2b07 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1508,6 +1508,9 @@
@@ -1556,6 +1556,9 @@
# Virtual memory
@ cdecl __wine_locked_recvmsg(long ptr long)
@@ -28,12 +28,12 @@ index 969cee7..008abb7 100644
@ cdecl wine_get_version() NTDLL_wine_get_version
@ cdecl wine_get_patches() NTDLL_wine_get_patches
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
index 5a93ede..cb02bd1 100644
index ac1469412..6c2345c6c 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -83,6 +83,9 @@ extern void heap_set_debug_flags( HANDLE handle ) DECLSPEC_HIDDEN;
extern void init_user_process_params( SIZE_T data_size ) DECLSPEC_HIDDEN;
extern void update_user_process_params( const UNICODE_STRING *image ) DECLSPEC_HIDDEN;
@@ -89,6 +89,9 @@ extern void init_user_process_params( SIZE_T data_size ) DECLSPEC_HIDDEN;
extern char **build_envp( const WCHAR *envW ) DECLSPEC_HIDDEN;
extern NTSTATUS restart_process( RTL_USER_PROCESS_PARAMETERS *params, NTSTATUS status ) DECLSPEC_HIDDEN;
+/* token */
+extern HANDLE CDECL __wine_create_default_token(BOOL admin);
@@ -42,10 +42,10 @@ index 5a93ede..cb02bd1 100644
extern timeout_t server_start_time DECLSPEC_HIDDEN;
extern unsigned int server_cpus DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c
index 2ff8610..bb4a171 100644
index 52d7ea429..e24691b8a 100644
--- a/dlls/ntdll/process.c
+++ b/dlls/ntdll/process.c
@@ -118,6 +118,24 @@ HANDLE CDECL __wine_make_process_system(void)
@@ -125,6 +125,24 @@ HANDLE CDECL __wine_make_process_system(void)
return ret;
}
@@ -71,10 +71,10 @@ index 2ff8610..bb4a171 100644
#define UNIMPLEMENTED_INFO_CLASS(c) \
diff --git a/server/protocol.def b/server/protocol.def
index 493100b..071f740 100644
index e908f2131..0177cb579 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3666,6 +3666,14 @@ struct handle_info
@@ -3734,6 +3734,14 @@ struct handle_info
@END
@@ -90,7 +90,7 @@ index 493100b..071f740 100644
@REQ(create_completion)
unsigned int access; /* desired access to a port */
diff --git a/server/security.h b/server/security.h
index 6c33714..21e90cc 100644
index 6c337143c..21e90ccf2 100644
--- a/server/security.h
+++ b/server/security.h
@@ -49,6 +49,7 @@ extern const PSID security_builtin_users_sid;
@@ -102,7 +102,7 @@ index 6c33714..21e90cc 100644
/* token functions */
diff --git a/server/token.c b/server/token.c
index 4c37c67..e449e61 100644
index 381ae6871..fcab79955 100644
--- a/server/token.c
+++ b/server/token.c
@@ -79,6 +79,7 @@ static const SID anonymous_logon_sid = { SID_REVISION, 1, { SECURITY_NT_AUTHORIT
@@ -121,7 +121,7 @@ index 4c37c67..e449e61 100644
static luid_t prev_luid_value = { 1000, 0 };
@@ -908,6 +910,64 @@ struct token *token_create_admin( void )
@@ -917,6 +919,64 @@ struct token *token_create_admin( void )
return token;
}
@@ -186,7 +186,7 @@ index 4c37c67..e449e61 100644
static struct privilege *token_find_privilege( struct token *token, const LUID *luid, int enabled_only )
{
struct privilege *privilege;
@@ -1713,3 +1773,27 @@ DECL_HANDLER(set_token_default_dacl)
@@ -1722,3 +1782,27 @@ DECL_HANDLER(set_token_default_dacl)
release_object( token );
}
}
@@ -215,5 +215,5 @@ index 4c37c67..e449e61 100644
+ }
+}
--
1.9.1
2.23.0

View File

@@ -1,24 +1,25 @@
From 19cfff2a16953b65f9767fee571a4ce5d51b0536 Mon Sep 17 00:00:00 2001
From 6a09d34647aa517e45bc0bb20a92d0d94a1da888 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 5 Aug 2017 03:39:55 +0200
Subject: [PATCH] ntdll: Implement process token elevation through manifests.
---
dlls/ntdll/loader.c | 40 ++++++++++++++++++++++++++++++++++++++--
dlls/ntdll/loader.c | 37 +++++++++++++++++++++++++++++++++++++
server/process.c | 8 ++++++++
server/process.h | 1 +
server/protocol.def | 7 +++++++
server/token.c | 14 ++++++++++++++
5 files changed, 68 insertions(+), 2 deletions(-)
5 files changed, 67 insertions(+)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index c0708c6..479608f 100644
index 2f203447e..7c5dd308b 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -3505,6 +3505,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
@@ -3804,6 +3804,32 @@ void WINAPI LdrInitializeThunk( CONTEXT *context, void **entry, ULONG_PTR unknow
}
/***********************************************************************
+/***********************************************************************
+ * elevate_process
+ */
+static void elevate_process( void )
@@ -44,38 +45,20 @@ index c0708c6..479608f 100644
+}
+
+
+/***********************************************************************
/***********************************************************************
* load_global_options
*/
static void load_global_options(void)
@@ -3557,6 +3583,7 @@ static void load_global_options(void)
}
+
/***********************************************************************
* RtlImageDirectoryEntryToData (NTDLL.@)
*/
@@ -3592,7 +3619,6 @@ PVOID WINAPI RtlImageDirectoryEntryToData( HMODULE module, BOOL image, WORD dir,
return RtlImageRvaToVa( nt, module, addr, NULL );
}
-
/***********************************************************************
* RtlImageRvaToSection (NTDLL.@)
*/
@@ -3691,7 +3717,7 @@ void __wine_process_init(void)
@@ -4233,6 +4259,7 @@ void __wine_process_init(void)
's','y','s','t','e','m','3','2','\\',
'k','e','r','n','e','l','3','2','.','d','l','l',0};
static const WCHAR globalflagW[] = {'G','l','o','b','a','l','F','l','a','g',0};
-
RTL_USER_PROCESS_PARAMETERS *params;
+ ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION runlevel;
WINE_MODREF *wm;
NTSTATUS status;
ANSI_STRING func_name;
@@ -3742,6 +3768,16 @@ void __wine_process_init(void)
&NtCurrentTeb()->Peb->NtGlobalFlag, sizeof(DWORD), NULL );
heap_set_debug_flags( GetProcessHeap() );
@@ -4324,6 +4351,16 @@ void __wine_process_init(void)
virtual_set_large_address_space();
+ /* elevate process if necessary */
+ status = RtlQueryInformationActivationContext( 0, NULL, 0, RunlevelInformationInActivationContext,
@@ -89,12 +72,12 @@ index c0708c6..479608f 100644
+
/* the main exe needs to be the first in the load order list */
RemoveEntryList( &wm->ldr.InLoadOrderModuleList );
InsertHeadList( &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList, &wm->ldr.InLoadOrderModuleList );
InsertHeadList( &peb->LdrData->InLoadOrderModuleList, &wm->ldr.InLoadOrderModuleList );
diff --git a/server/process.c b/server/process.c
index d8fdfcc..2c9365a 100644
index 4c7da9223..d6f71a774 100644
--- a/server/process.c
+++ b/server/process.c
@@ -1129,6 +1129,14 @@ struct process_snapshot *process_snap( int *count )
@@ -1107,6 +1107,14 @@ struct process_snapshot *process_snap( int *count )
return snapshot;
}
@@ -110,22 +93,22 @@ index d8fdfcc..2c9365a 100644
DECL_HANDLER(new_process)
{
diff --git a/server/process.h b/server/process.h
index d9d29f0..a494eab 100644
index 5b83e111a..dfe5c4e52 100644
--- a/server/process.h
+++ b/server/process.h
@@ -139,6 +139,7 @@ extern void break_process( struct process *process );
@@ -139,6 +139,7 @@ extern void kill_debugged_processes( struct thread *debugger, int exit_code );
extern void detach_debugged_processes( struct thread *debugger );
extern struct process_snapshot *process_snap( int *count );
extern void enum_processes( int (*cb)(struct process*, void*), void *user);
+extern void replace_process_token( struct process *process, struct token *token );
/* console functions */
extern void inherit_console(struct thread *parent_thread, struct process *process, obj_handle_t hconin);
extern void inherit_console( struct thread *parent_thread, struct process *parent,
diff --git a/server/protocol.def b/server/protocol.def
index 2b8d51a..650c279 100644
index 6022e1715..45ab670ea 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3721,6 +3721,13 @@ struct handle_info
@@ -3755,6 +3755,13 @@ struct handle_info
@END
@@ -140,7 +123,7 @@ index 2b8d51a..650c279 100644
@REQ(create_completion)
unsigned int access; /* desired access to a port */
diff --git a/server/token.c b/server/token.c
index fcab799..181219d 100644
index fcab79955..181219d21 100644
--- a/server/token.c
+++ b/server/token.c
@@ -1806,3 +1806,17 @@ DECL_HANDLER(create_token)
@@ -162,5 +145,5 @@ index fcab799..181219d 100644
+ }
+}
--
1.9.1
2.24.0

View File

@@ -1,130 +1,145 @@
From 9f35230848f29e79b65c8e340221d7eb81382a43 Mon Sep 17 00:00:00 2001
From 51830c6683b199e79cb9e782ee51555054a4da7c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 6 Aug 2017 02:08:05 +0200
Subject: [PATCH] server: Implement support for creating processes using a
token.
---
dlls/kernel32/process.c | 27 +++++++++++++++------------
server/process.c | 39 +++++++++++++++++++++++++++++++++++----
server/process.h | 2 +-
server/protocol.def | 1 +
server/request.c | 2 +-
server/security.h | 2 ++
server/token.c | 11 +++++++++++
7 files changed, 66 insertions(+), 18 deletions(-)
dlls/kernelbase/process.c | 24 +++++++++++++-----------
dlls/ntdll/process.c | 3 ++-
server/process.c | 39 +++++++++++++++++++++++++++++++++++----
server/process.h | 2 +-
server/protocol.def | 1 +
server/request.c | 2 +-
server/security.h | 2 ++
server/token.c | 11 +++++++++++
8 files changed, 66 insertions(+), 18 deletions(-)
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 802d99f2a12..03c0588d59a 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -2341,7 +2341,7 @@ static BOOL replace_process( HANDLE handle, const RTL_USER_PROCESS_PARAMETERS *p
* Create a new process. If hFile is a valid handle we have an exe
* file, otherwise it is a Winelib app.
diff --git a/dlls/kernelbase/process.c b/dlls/kernelbase/process.c
index a07dddb1f..99985ab89 100644
--- a/dlls/kernelbase/process.c
+++ b/dlls/kernelbase/process.c
@@ -242,7 +242,7 @@ static RTL_USER_PROCESS_PARAMETERS *create_process_params( const WCHAR *filename
/***********************************************************************
* create_nt_process
*/
-static BOOL create_process( HANDLE hFile, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
+static BOOL create_process( HANDLE token, HANDLE hFile, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
BOOL inherit, DWORD flags, const RTL_USER_PROCESS_PARAMETERS *params,
LPPROCESS_INFORMATION info, LPCSTR unixdir, const pe_image_info_t *pe_info )
-static NTSTATUS create_nt_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
+static NTSTATUS create_nt_process( HANDLE token, SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
BOOL inherit, DWORD flags, RTL_USER_PROCESS_PARAMETERS *params,
RTL_USER_PROCESS_INFORMATION *info, HANDLE parent )
{
@@ -2408,6 +2408,7 @@ static BOOL create_process( HANDLE hFile, LPSECURITY_ATTRIBUTES psa, LPSECURITY_
@@ -257,7 +257,7 @@ static NTSTATUS create_nt_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES
status = RtlCreateUserProcess( &nameW, OBJ_CASE_INSENSITIVE, params,
psa ? psa->lpSecurityDescriptor : NULL,
tsa ? tsa->lpSecurityDescriptor : NULL,
- parent, inherit, 0, 0, info );
+ parent, inherit, 0, token, info );
RtlFreeUnicodeString( &nameW );
}
return status;
@@ -267,7 +267,7 @@ static NTSTATUS create_nt_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES
/***********************************************************************
* create_vdm_process
*/
-static NTSTATUS create_vdm_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
+static NTSTATUS create_vdm_process( HANDLE token, SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
BOOL inherit, DWORD flags, RTL_USER_PROCESS_PARAMETERS *params,
RTL_USER_PROCESS_INFORMATION *info )
{
@@ -288,7 +288,7 @@ static NTSTATUS create_vdm_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTE
winevdm, params->ImagePathName.Buffer, params->CommandLine.Buffer );
RtlInitUnicodeString( &params->ImagePathName, winevdm );
RtlInitUnicodeString( &params->CommandLine, newcmdline );
- status = create_nt_process( psa, tsa, inherit, flags, params, info, NULL );
+ status = create_nt_process( token, psa, tsa, inherit, flags, params, info, NULL );
HeapFree( GetProcessHeap(), 0, newcmdline );
return status;
}
@@ -297,7 +297,7 @@ static NTSTATUS create_vdm_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTE
/***********************************************************************
* create_cmd_process
*/
-static NTSTATUS create_cmd_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
+static NTSTATUS create_cmd_process( HANDLE token, SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTES *tsa,
BOOL inherit, DWORD flags, RTL_USER_PROCESS_PARAMETERS *params,
RTL_USER_PROCESS_INFORMATION *info )
{
@@ -316,7 +316,7 @@ static NTSTATUS create_cmd_process( SECURITY_ATTRIBUTES *psa, SECURITY_ATTRIBUTE
swprintf( newcmdline, len, L"%s /s/c \"%s\"", comspec, params->CommandLine.Buffer );
RtlInitUnicodeString( &params->ImagePathName, comspec );
RtlInitUnicodeString( &params->CommandLine, newcmdline );
- status = create_nt_process( psa, tsa, inherit, flags, params, info, NULL );
+ status = create_nt_process( token, psa, tsa, inherit, flags, params, info, NULL );
RtlFreeHeap( GetProcessHeap(), 0, newcmdline );
return status;
}
@@ -448,7 +448,9 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessInternalW( HANDLE token, const WCHAR
TRACE( "app %s cmdline %s\n", debugstr_w(app_name), debugstr_w(cmd_line) );
- if (token) FIXME( "Creating a process with a token is not yet implemented\n" );
+ /* FIXME: Starting a process which requires admin rights should fail
+ * with ERROR_ELEVATION_REQUIRED when no token is passed. */
+
if (new_token) FIXME( "No support for returning created process token\n" );
if (app_name)
@@ -521,7 +523,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessInternalW( HANDLE token, const WCHAR
}
}
- status = create_nt_process( process_attr, thread_attr, inherit, flags, params, &rtl_info, parent );
+ status = create_nt_process( token, process_attr, thread_attr, inherit, flags, params, &rtl_info, parent );
switch (status)
{
case STATUS_SUCCESS:
@@ -530,7 +532,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessInternalW( HANDLE token, const WCHAR
case STATUS_INVALID_IMAGE_NE_FORMAT:
case STATUS_INVALID_IMAGE_PROTECT:
TRACE( "starting %s as Win16/DOS binary\n", debugstr_w(app_name) );
- status = create_vdm_process( process_attr, thread_attr, inherit, flags, params, &rtl_info );
+ status = create_vdm_process( token, process_attr, thread_attr, inherit, flags, params, &rtl_info );
break;
case STATUS_INVALID_IMAGE_NOT_MZ:
/* check for .com or .bat extension */
@@ -538,12 +540,12 @@ BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessInternalW( HANDLE token, const WCHAR
if (!wcsicmp( p, L".com" ) || !wcsicmp( p, L".pif" ))
{
TRACE( "starting %s as DOS binary\n", debugstr_w(app_name) );
- status = create_vdm_process( process_attr, thread_attr, inherit, flags, params, &rtl_info );
+ status = create_vdm_process( token, process_attr, thread_attr, inherit, flags, params, &rtl_info );
}
else if (!wcsicmp( p, L".bat" ) || !wcsicmp( p, L".cmd" ))
{
TRACE( "starting %s as batch binary\n", debugstr_w(app_name) );
- status = create_cmd_process( process_attr, thread_attr, inherit, flags, params, &rtl_info );
+ status = create_cmd_process( token, process_attr, thread_attr, inherit, flags, params, &rtl_info );
}
break;
}
diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c
index f3d9079f8..2fa553091 100644
--- a/dlls/ntdll/process.c
+++ b/dlls/ntdll/process.c
@@ -1667,7 +1667,7 @@ NTSTATUS WINAPI RtlCreateUserProcess( UNICODE_STRING *path, ULONG attributes,
RTL_USER_PROCESS_PARAMETERS *params,
SECURITY_DESCRIPTOR *process_descr,
SECURITY_DESCRIPTOR *thread_descr,
- HANDLE parent, BOOLEAN inherit, HANDLE debug, HANDLE exception,
+ HANDLE parent, BOOLEAN inherit, HANDLE debug, HANDLE token,
RTL_USER_PROCESS_INFORMATION *info )
{
NTSTATUS status;
@@ -1735,6 +1735,7 @@ NTSTATUS WINAPI RtlCreateUserProcess( UNICODE_STRING *path, ULONG attributes,
req->access = PROCESS_ALL_ACCESS;
req->cpu = pe_info->cpu;
req->cpu = pe_info.cpu;
req->info_size = startup_info_size;
+ req->token = wine_server_obj_handle( token );
wine_server_add_data( req, objattr, attr_len );
wine_server_add_data( req, startup_info, startup_info_size );
wine_server_add_data( req, params->Environment, (env_end - params->Environment) * sizeof(WCHAR) );
@@ -2567,7 +2568,7 @@ static RTL_USER_PROCESS_PARAMETERS *get_vdm_params( const RTL_USER_PROCESS_PARAM
*
* Create a new VDM process for a 16-bit or DOS application.
*/
-static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
+static BOOL create_vdm_process( HANDLE token, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
BOOL inherit, DWORD flags, const RTL_USER_PROCESS_PARAMETERS *params,
LPPROCESS_INFORMATION info, LPCSTR unixdir )
{
@@ -2577,7 +2578,7 @@ static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
if (!(new_params = get_vdm_params( params, &pe_info ))) return FALSE;
- ret = create_process( 0, psa, tsa, inherit, flags, new_params, info, unixdir, &pe_info );
+ ret = create_process( token, 0, psa, tsa, inherit, flags, new_params, info, unixdir, &pe_info );
RtlDestroyProcessParameters( new_params );
return ret;
}
@@ -2588,7 +2589,7 @@ static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
*
* Create a new cmd shell process for a .BAT file.
*/
-static BOOL create_cmd_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
+static BOOL create_cmd_process( HANDLE token, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
BOOL inherit, DWORD flags, LPSTARTUPINFOW startup,
const RTL_USER_PROCESS_PARAMETERS *params,
LPPROCESS_INFORMATION info )
@@ -2618,9 +2619,9 @@ static BOOL create_cmd_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
strcatW( newcmdline, params->CommandLine.Buffer );
strcatW( newcmdline, quotW );
if (params->CurrentDirectory.DosPath.Length) cur_dir = params->CurrentDirectory.DosPath.Buffer;
- ret = CreateProcessW( comspec, newcmdline, psa, tsa, inherit,
+ ret = CreateProcessInternalW( token, comspec, newcmdline, psa, tsa, inherit,
flags | CREATE_UNICODE_ENVIRONMENT, params->Environment, cur_dir,
- startup, info );
+ startup, info, NULL );
HeapFree( GetProcessHeap(), 0, newcmdline );
return ret;
}
@@ -2734,7 +2735,9 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
TRACE("app %s cmdline %s\n", debugstr_w(app_name), debugstr_w(cmd_line) );
- if (token) FIXME("Creating a process with a token is not yet implemented\n");
+ /* FIXME: Starting a process which requires admin rights should fail
+ * with ERROR_ELEVATION_REQUIRED when no token is passed. */
+
if (new_token) FIXME("No support for returning created process token\n");
if (!(tidy_cmdline = get_file_name( app_name, cmd_line, name, ARRAY_SIZE( name ), &hFile, &is_64bit )))
@@ -2802,17 +2805,17 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
debugstr_w(name), is_64bit_arch(pe_info.cpu) ? 64 : 32,
wine_dbgstr_longlong(pe_info.base), wine_dbgstr_longlong(pe_info.base + pe_info.map_size),
cpu_names[pe_info.cpu] );
- retv = create_process( hFile, process_attr, thread_attr,
+ retv = create_process( token, hFile, process_attr, thread_attr,
inherit, flags, params, info, unixdir, &pe_info );
break;
case BINARY_WIN16:
TRACE( "starting %s as Win16/DOS binary\n", debugstr_w(name) );
- retv = create_vdm_process( process_attr, thread_attr, inherit, flags, params, info, unixdir );
+ retv = create_vdm_process( token, process_attr, thread_attr, inherit, flags, params, info, unixdir );
break;
case BINARY_UNIX_LIB:
TRACE( "starting %s as %d-bit Winelib app\n",
debugstr_w(name), is_64bit_arch(pe_info.cpu) ? 64 : 32 );
- retv = create_process( hFile, process_attr, thread_attr,
+ retv = create_process( token, hFile, process_attr, thread_attr,
inherit, flags, params, info, unixdir, &pe_info );
break;
case BINARY_UNKNOWN:
@@ -2822,14 +2825,14 @@ BOOL WINAPI CreateProcessInternalW( HANDLE token, LPCWSTR app_name, LPWSTR cmd_l
if (!strcmpiW( p, comW ) || !strcmpiW( p, pifW ))
{
TRACE( "starting %s as DOS binary\n", debugstr_w(name) );
- retv = create_vdm_process( process_attr, thread_attr,
+ retv = create_vdm_process( token, process_attr, thread_attr,
inherit, flags, params, info, unixdir );
break;
}
if (!strcmpiW( p, batW ) || !strcmpiW( p, cmdW ) )
{
TRACE( "starting %s as batch binary\n", debugstr_w(name) );
- retv = create_cmd_process( process_attr, thread_attr,
+ retv = create_cmd_process( token, process_attr, thread_attr,
inherit, flags, startup_info, params, info );
break;
}
wine_server_add_data( req, params->Environment, env_size );
diff --git a/server/process.c b/server/process.c
index 30832f474da..028ffa1b454 100644
index d6f71a774..aa66814d8 100644
--- a/server/process.c
+++ b/server/process.c
@@ -491,7 +491,7 @@ static void start_sigkill_timer( struct process *process )
@@ -136,7 +151,7 @@ index 30832f474da..028ffa1b454 100644
{
struct process *process;
@@ -567,7 +567,7 @@ struct process *create_process( int fd, struct process *parent, int inherit_all,
@@ -568,7 +568,7 @@ struct process *create_process( int fd, struct process *parent, int inherit_all,
: alloc_handle_table( process, 0 );
/* Note: for security reasons, starting a new process does not attempt
* to use the current impersonation token for the new process */
@@ -145,15 +160,15 @@ index 30832f474da..028ffa1b454 100644
process->affinity = parent->affinity;
}
if (!process->handles || !process->token) goto error;
@@ -1123,6 +1123,7 @@ DECL_HANDLER(new_process)
@@ -1124,6 +1124,7 @@ DECL_HANDLER(new_process)
const struct security_descriptor *sd;
const struct object_attributes *objattr = get_req_object_attributes( &sd, &name, NULL );
struct process *process = NULL;
+ struct token *token = NULL;
struct process *parent = current->process;
struct process *parent;
struct thread *parent_thread = current;
int socket_fd = thread_get_inflight_fd( current, req->socket_fd );
@@ -1163,10 +1164,39 @@ DECL_HANDLER(new_process)
@@ -1177,10 +1178,39 @@ DECL_HANDLER(new_process)
return;
}
@@ -190,10 +205,10 @@ index 30832f474da..028ffa1b454 100644
{
close( socket_fd );
+ if (token) release_object( token );
release_object( parent );
return;
}
info->process = NULL;
@@ -1213,7 +1243,7 @@ DECL_HANDLER(new_process)
@@ -1228,7 +1258,7 @@ DECL_HANDLER(new_process)
#undef FIXUP_LEN
}
@@ -202,15 +217,15 @@ index 30832f474da..028ffa1b454 100644
process->startup_info = (struct startup_info *)grab_object( info );
@@ -1275,6 +1305,7 @@ DECL_HANDLER(new_process)
reply->handle = alloc_handle_no_access_check( parent, process, req->access, objattr->attributes );
@@ -1289,6 +1319,7 @@ DECL_HANDLER(new_process)
reply->handle = alloc_handle_no_access_check( current->process, process, req->access, objattr->attributes );
done:
+ if (token) release_object( token );
if (process) release_object( process );
release_object( parent );
release_object( info );
}
@@ -1307,7 +1338,7 @@ DECL_HANDLER(exec_process)
@@ -1322,7 +1353,7 @@ DECL_HANDLER(exec_process)
close( socket_fd );
return;
}
@@ -220,10 +235,10 @@ index 30832f474da..028ffa1b454 100644
release_object( process );
}
diff --git a/server/process.h b/server/process.h
index f21ab7722a9..774c147e783 100644
index dfe5c4e52..61b83abf6 100644
--- a/server/process.h
+++ b/server/process.h
@@ -117,7 +117,7 @@ extern unsigned int alloc_ptid( void *ptr );
@@ -118,7 +118,7 @@ extern unsigned int alloc_ptid( void *ptr );
extern void free_ptid( unsigned int id );
extern void *get_ptid_entry( unsigned int id );
extern struct process *create_process( int fd, struct process *parent, int inherit_all,
@@ -233,10 +248,10 @@ index f21ab7722a9..774c147e783 100644
extern struct thread *get_process_first_thread( struct process *process );
extern struct process *get_process_from_id( process_id_t id );
diff --git a/server/protocol.def b/server/protocol.def
index fcca1d255ba..4b01c6d1904 100644
index 45ab670ea..c763da4ca 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -790,6 +790,7 @@ struct rawinput_device
@@ -791,6 +791,7 @@ struct rawinput_device
unsigned int access; /* access rights for process object */
client_cpu_t cpu; /* CPU that the new process will use */
data_size_t info_size; /* size of startup info */
@@ -245,10 +260,10 @@ index fcca1d255ba..4b01c6d1904 100644
VARARG(info,startup_info,info_size); /* startup information */
VARARG(env,unicode_str); /* environment for new process */
diff --git a/server/request.c b/server/request.c
index d2adb08a183..139d643e8c8 100644
index 200c2697d..f743b720a 100644
--- a/server/request.c
+++ b/server/request.c
@@ -578,7 +578,7 @@ static void master_socket_poll_event( struct fd *fd, int event )
@@ -582,7 +582,7 @@ static void master_socket_poll_event( struct fd *fd, int event )
int client = accept( get_unix_fd( master_socket->fd ), (struct sockaddr *) &dummy, &len );
if (client == -1) return;
fcntl( client, F_SETFL, O_NONBLOCK );
@@ -258,7 +273,7 @@ index d2adb08a183..139d643e8c8 100644
create_thread( -1, process, NULL );
release_object( process );
diff --git a/server/security.h b/server/security.h
index 21e90ccf23f..32dfe5f8db9 100644
index 21e90ccf2..32dfe5f8d 100644
--- a/server/security.h
+++ b/server/security.h
@@ -67,6 +67,8 @@ extern const ACL *token_get_default_dacl( struct token *token );
@@ -271,7 +286,7 @@ index 21e90ccf23f..32dfe5f8db9 100644
static inline const ACE_HEADER *ace_next( const ACE_HEADER *ace )
{
diff --git a/server/token.c b/server/token.c
index 181219d2179..858ec25d792 100644
index 181219d21..858ec25d7 100644
--- a/server/token.c
+++ b/server/token.c
@@ -845,6 +845,12 @@ int token_assign_label( struct token *token, PSID label )
@@ -300,5 +315,5 @@ index 181219d2179..858ec25d792 100644
{
GENERIC_MAPPING mapping;
--
2.20.1
2.24.0

View File

@@ -1,68 +0,0 @@
From e72b9a5931139e2d4c651e62f9b5ac226af2bedd Mon Sep 17 00:00:00 2001
From: Louis Lenders <xerox.xerox2000x@gmail.com>
Date: Mon, 8 Apr 2019 08:26:43 +0200
Subject: [PATCH 1/2] include: Add restrictederrorinfo.idl.
Signed-off-by: Louis Lenders <xerox.xerox2000x@gmail.com>
---
include/Makefile.in | 1 +
include/restrictederrorinfo.idl | 35 +++++++++++++++++++++++++++++++++++
2 files changed, 36 insertions(+)
create mode 100644 include/restrictederrorinfo.idl
diff --git a/include/Makefile.in b/include/Makefile.in
index b03b967..5bc8dde 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -545,6 +545,7 @@ SOURCES = \
reason.h \
regstr.h \
restartmanager.h \
+ restrictederrorinfo.idl \
richedit.h \
richole.idl \
rmxfguid.h \
diff --git a/include/restrictederrorinfo.idl b/include/restrictederrorinfo.idl
new file mode 100644
index 0000000..e444256
--- /dev/null
+++ b/include/restrictederrorinfo.idl
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2019 Louis Lenders
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "oaidl.idl";
+
+[
+ object,
+ uuid(82ba7092-4c88-427d-a7bc-16dd93feb67e),
+ pointer_default(unique)
+]
+interface IRestrictedErrorInfo : IUnknown
+{
+ HRESULT GetErrorDetails (
+ [out] BSTR *desc,
+ [out] HRESULT *error,
+ [out] BSTR *restricted_desc,
+ [out] BSTR *sid);
+
+ HRESULT GetReference ([out] BSTR *reference);
+}
--
1.9.1

View File

@@ -1,5 +1,5 @@
From 37c7da9a71e327dfe86c0c550cabc50968abd04d Mon Sep 17 00:00:00 2001
From: Andrew Shadura <bugzilla@tut.by>
From: Andrej Shadura <andrew@shadura.me>
Date: Fri, 1 Feb 2019 08:38:10 +1100
Subject: [PATCH] comctl32: Fixed rebar behaviour when there's capture and no
drag

View File

@@ -1,128 +0,0 @@
From 50ba23f4d3f7e40bf02cb8f3cdcc4d729f6d68d4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 27 Feb 2017 20:42:27 +0100
Subject: crypt32: Add MS root CA 2010.
---
dlls/crypt32/rootstore.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 98 insertions(+)
diff --git a/dlls/crypt32/rootstore.c b/dlls/crypt32/rootstore.c
index 73d954f7404..d6c0dfbc819 100644
--- a/dlls/crypt32/rootstore.c
+++ b/dlls/crypt32/rootstore.c
@@ -666,6 +666,103 @@ static const BYTE rootcertauthority[] = {
0x7e,0x6c,0x9e,0xdb,0x73,0x13,0x64,0x62,0x69,0xa5,0x2f,0x7d,0xca,0x96,0x6d,0x9f,
0xf8,0x04,0x4d,0x30,0x92,0x3d,0x6e,0x21,0x14,0x21,0xc9,0x3d,0xe0,0xc3,0xfd,0x8a,
0x6b,0x9d,0x4a,0xfd,0xd1,0xa1,0x9d,0x99,0x43,0x77,0x3f,0xb0,0xda };
+static const BYTE rootcertauthority2010[] = {
+0x30,0x82,0x05,0xed,0x30,0x82,0x03,0xd5,0xa0,0x03,0x02,0x01,0x02,0x02,0x10,0x28,
+0xcc,0x3a,0x25,0xbf,0xba,0x44,0xac,0x44,0x9a,0x9b,0x58,0x6b,0x43,0x39,0xaa,0x30,
+0x0d,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x0b,0x05,0x00,0x30,0x81,
+0x88,0x31,0x0b,0x30,0x09,0x06,0x03,0x55,0x04,0x06,0x13,0x02,0x55,0x53,0x31,0x13,
+0x30,0x11,0x06,0x03,0x55,0x04,0x08,0x13,0x0a,0x57,0x61,0x73,0x68,0x69,0x6e,0x67,
+0x74,0x6f,0x6e,0x31,0x10,0x30,0x0e,0x06,0x03,0x55,0x04,0x07,0x13,0x07,0x52,0x65,
+0x64,0x6d,0x6f,0x6e,0x64,0x31,0x1e,0x30,0x1c,0x06,0x03,0x55,0x04,0x0a,0x13,0x15,
+0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x43,0x6f,0x72,0x70,0x6f,0x72,
+0x61,0x74,0x69,0x6f,0x6e,0x31,0x32,0x30,0x30,0x06,0x03,0x55,0x04,0x03,0x13,0x29,
+0x4d,0x69,0x63,0x72,0x6f,0x73,0x6f,0x66,0x74,0x20,0x52,0x6f,0x6f,0x74,0x20,0x43,
+0x65,0x72,0x74,0x69,0x66,0x69,0x63,0x61,0x74,0x65,0x20,0x41,0x75,0x74,0x68,0x6f,
+0x72,0x69,0x74,0x79,0x20,0x32,0x30,0x31,0x30,0x30,0x1e,0x17,0x0d,0x31,0x30,0x30,
+0x36,0x32,0x33,0x32,0x31,0x35,0x37,0x32,0x34,0x5a,0x17,0x0d,0x33,0x35,0x30,0x36,
+0x32,0x33,0x32,0x32,0x30,0x34,0x30,0x31,0x5a,0x30,0x81,0x88,0x31,0x0b,0x30,0x09,
+0x06,0x03,0x55,0x04,0x06,0x13,0x02,0x55,0x53,0x31,0x13,0x30,0x11,0x06,0x03,0x55,
+0x04,0x08,0x13,0x0a,0x57,0x61,0x73,0x68,0x69,0x6e,0x67,0x74,0x6f,0x6e,0x31,0x10,
+0x30,0x0e,0x06,0x03,0x55,0x04,0x07,0x13,0x07,0x52,0x65,0x64,0x6d,0x6f,0x6e,0x64,
+0x31,0x1e,0x30,0x1c,0x06,0x03,0x55,0x04,0x0a,0x13,0x15,0x4d,0x69,0x63,0x72,0x6f,
+0x73,0x6f,0x66,0x74,0x20,0x43,0x6f,0x72,0x70,0x6f,0x72,0x61,0x74,0x69,0x6f,0x6e,
+0x31,0x32,0x30,0x30,0x06,0x03,0x55,0x04,0x03,0x13,0x29,0x4d,0x69,0x63,0x72,0x6f,
+0x73,0x6f,0x66,0x74,0x20,0x52,0x6f,0x6f,0x74,0x20,0x43,0x65,0x72,0x74,0x69,0x66,
+0x69,0x63,0x61,0x74,0x65,0x20,0x41,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x20,
+0x32,0x30,0x31,0x30,0x30,0x82,0x02,0x22,0x30,0x0d,0x06,0x09,0x2a,0x86,0x48,0x86,
+0xf7,0x0d,0x01,0x01,0x01,0x05,0x00,0x03,0x82,0x02,0x0f,0x00,0x30,0x82,0x02,0x0a,
+0x02,0x82,0x02,0x01,0x00,0xb9,0x08,0x9e,0x28,0xe4,0xe4,0xec,0x06,0x4e,0x50,0x68,
+0xb3,0x41,0xc5,0x7b,0xeb,0xae,0xb6,0x8e,0xaf,0x81,0xba,0x22,0x44,0x1f,0x65,0x34,
+0x69,0x4c,0xbe,0x70,0x40,0x17,0xf2,0x16,0x7b,0xe2,0x79,0xfd,0x86,0xed,0x0d,0x39,
+0xf4,0x1b,0xa8,0xad,0x92,0x90,0x1e,0xcb,0x3d,0x76,0x8f,0x5a,0xd9,0xb5,0x91,0x10,
+0x2e,0x3c,0x05,0x8d,0x8a,0x6d,0x24,0x54,0xe7,0x1f,0xed,0x56,0xad,0x83,0xb4,0x50,
+0x9c,0x15,0xa5,0x17,0x74,0x88,0x59,0x20,0xfc,0x08,0xc5,0x84,0x76,0xd3,0x68,0xd4,
+0x6f,0x28,0x78,0xce,0x5c,0xb8,0xf3,0x50,0x90,0x44,0xff,0xe3,0x63,0x5f,0xbe,0xa1,
+0x9a,0x2c,0x96,0x15,0x04,0xd6,0x07,0xfe,0x1e,0x84,0x21,0xe0,0x42,0x31,0x11,0xc4,
+0x28,0x36,0x94,0xcf,0x50,0xa4,0x62,0x9e,0xc9,0xd6,0xab,0x71,0x00,0xb2,0x5b,0x0c,
+0xe6,0x96,0xd4,0x0a,0x24,0x96,0xf5,0xff,0xc6,0xd5,0xb7,0x1b,0xd7,0xcb,0xb7,0x21,
+0x62,0xaf,0x12,0xdc,0xa1,0x5d,0x37,0xe3,0x1a,0xfb,0x1a,0x46,0x98,0xc0,0x9b,0xc0,
+0xe7,0x63,0x1f,0x2a,0x08,0x93,0x02,0x7e,0x1e,0x6a,0x8e,0xf2,0x9f,0x18,0x89,0xe4,
+0x22,0x85,0xa2,0xb1,0x84,0x57,0x40,0xff,0xf5,0x0e,0xd8,0x6f,0x9c,0xed,0xe2,0x45,
+0x31,0x01,0xcd,0x17,0xe9,0x7f,0xb0,0x81,0x45,0xe3,0xaa,0x21,0x40,0x26,0xa1,0x72,
+0xaa,0xa7,0x4f,0x3c,0x01,0x05,0x7e,0xee,0x83,0x58,0xb1,0x5e,0x06,0x63,0x99,0x62,
+0x91,0x78,0x82,0xb7,0x0d,0x93,0x0c,0x24,0x6a,0xb4,0x1b,0xdb,0x27,0xec,0x5f,0x95,
+0x04,0x3f,0x93,0x4a,0x30,0xf5,0x97,0x18,0xb3,0xa7,0xf9,0x19,0xa7,0x93,0x33,0x1d,
+0x01,0xc8,0xdb,0x22,0x52,0x5c,0xd7,0x25,0xc9,0x46,0xf9,0xa2,0xfb,0x87,0x59,0x43,
+0xbe,0x9b,0x62,0xb1,0x8d,0x2d,0x86,0x44,0x1a,0x46,0xac,0x78,0x61,0x7e,0x30,0x09,
+0xfa,0xae,0x89,0xc4,0x41,0x2a,0x22,0x66,0x03,0x91,0x39,0x45,0x9c,0xc7,0x8b,0x0c,
+0xa8,0xca,0x0d,0x2f,0xfb,0x52,0xea,0x0c,0xf7,0x63,0x33,0x23,0x9d,0xfe,0xb0,0x1f,
+0xad,0x67,0xd6,0xa7,0x50,0x03,0xc6,0x04,0x70,0x63,0xb5,0x2c,0xb1,0x86,0x5a,0x43,
+0xb7,0xfb,0xae,0xf9,0x6e,0x29,0x6e,0x21,0x21,0x41,0x26,0x06,0x8c,0xc9,0xc3,0xee,
+0xb0,0xc2,0x85,0x93,0xa1,0xb9,0x85,0xd9,0xe6,0x32,0x6c,0x4b,0x4c,0x3f,0xd6,0x5d,
+0xa3,0xe5,0xb5,0x9d,0x77,0xc3,0x9c,0xc0,0x55,0xb7,0x74,0x00,0xe3,0xb8,0x38,0xab,
+0x83,0x97,0x50,0xe1,0x9a,0x42,0x24,0x1d,0xc6,0xc0,0xa3,0x30,0xd1,0x1a,0x5a,0xc8,
+0x52,0x34,0xf7,0x73,0xf1,0xc7,0x18,0x1f,0x33,0xad,0x7a,0xec,0xcb,0x41,0x60,0xf3,
+0x23,0x94,0x20,0xc2,0x48,0x45,0xac,0x5c,0x51,0xc6,0x2e,0x80,0xc2,0xe2,0x77,0x15,
+0xbd,0x85,0x87,0xed,0x36,0x9d,0x96,0x91,0xee,0x00,0xb5,0xa3,0x70,0xec,0x9f,0xe3,
+0x8d,0x80,0x68,0x83,0x76,0xba,0xaf,0x5d,0x70,0x52,0x22,0x16,0xe2,0x66,0xfb,0xba,
+0xb3,0xc5,0xc2,0xf7,0x3e,0x2f,0x77,0xa6,0xca,0xde,0xc1,0xa6,0xc6,0x48,0x4c,0xc3,
+0x37,0x51,0x23,0xd3,0x27,0xd7,0xb8,0x4e,0x70,0x96,0xf0,0xa1,0x44,0x76,0xaf,0x78,
+0xcf,0x9a,0xe1,0x66,0x13,0x02,0x03,0x01,0x00,0x01,0xa3,0x51,0x30,0x4f,0x30,0x0b,
+0x06,0x03,0x55,0x1d,0x0f,0x04,0x04,0x03,0x02,0x01,0x86,0x30,0x0f,0x06,0x03,0x55,
+0x1d,0x13,0x01,0x01,0xff,0x04,0x05,0x30,0x03,0x01,0x01,0xff,0x30,0x1d,0x06,0x03,
+0x55,0x1d,0x0e,0x04,0x16,0x04,0x14,0xd5,0xf6,0x56,0xcb,0x8f,0xe8,0xa2,0x5c,0x62,
+0x68,0xd1,0x3d,0x94,0x90,0x5b,0xd7,0xce,0x9a,0x18,0xc4,0x30,0x10,0x06,0x09,0x2b,
+0x06,0x01,0x04,0x01,0x82,0x37,0x15,0x01,0x04,0x03,0x02,0x01,0x00,0x30,0x0d,0x06,
+0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x0b,0x05,0x00,0x03,0x82,0x02,0x01,
+0x00,0xac,0xa5,0x96,0x8c,0xbf,0xbb,0xae,0xa6,0xf6,0xd7,0x71,0x87,0x43,0x31,0x56,
+0x88,0xfd,0x1c,0x32,0x71,0x5b,0x35,0xb7,0xd4,0xf0,0x91,0xf2,0xaf,0x37,0xe2,0x14,
+0xf1,0xf3,0x02,0x26,0x05,0x3e,0x16,0x14,0x7f,0x14,0xba,0xb8,0x4f,0xfb,0x89,0xb2,
+0xb2,0xe7,0xd4,0x09,0xcc,0x6d,0xb9,0x5b,0x3b,0x64,0x65,0x70,0x66,0xb7,0xf2,0xb1,
+0x5a,0xdf,0x1a,0x02,0xf3,0xf5,0x51,0xb8,0x67,0x6d,0x79,0xf3,0xbf,0x56,0x7b,0xe4,
+0x84,0xb9,0x2b,0x1e,0x9b,0x40,0x9c,0x26,0x34,0xf9,0x47,0x18,0x98,0x69,0xd8,0x1c,
+0xd7,0xb6,0xd1,0xbf,0x8f,0x61,0xc2,0x67,0xc4,0xb5,0xef,0x60,0x43,0x8e,0x10,0x1b,
+0x36,0x49,0xe4,0x20,0xca,0xad,0xa7,0xc1,0xb1,0x27,0x65,0x09,0xf8,0xcd,0xf5,0x5b,
+0x2a,0xd0,0x84,0x33,0xf3,0xef,0x1f,0xf2,0xf5,0x9c,0x0b,0x58,0x93,0x37,0xa0,0x75,
+0xa0,0xde,0x72,0xde,0x6c,0x75,0x2a,0x66,0x22,0xf5,0x8c,0x06,0x30,0x56,0x9f,0x40,
+0xb9,0x30,0xaa,0x40,0x77,0x15,0x82,0xd7,0x8b,0xec,0xc0,0xd3,0xb2,0xbd,0x83,0xc5,
+0x77,0x0c,0x1e,0xae,0xaf,0x19,0x53,0xa0,0x4d,0x79,0x71,0x9f,0x0f,0xaf,0x30,0xce,
+0x67,0xf9,0xd6,0x2c,0xcc,0x22,0x41,0x7a,0x07,0xf2,0x97,0x42,0x18,0xce,0x59,0x79,
+0x10,0x55,0xde,0x6f,0x10,0xe4,0xb8,0xda,0x83,0x66,0x40,0x16,0x09,0x68,0x23,0x5b,
+0x97,0x2e,0x26,0x9a,0x02,0xbb,0x57,0x8c,0xc5,0xb8,0xba,0x69,0x62,0x32,0x80,0x89,
+0x9e,0xa1,0xfd,0xc0,0x92,0x7c,0x7b,0x2b,0x33,0x19,0x84,0x2a,0x63,0xc5,0x00,0x68,
+0x62,0xfa,0x9f,0x47,0x8d,0x99,0x7a,0x45,0x3a,0xa7,0xe9,0xed,0xee,0x69,0x42,0xb5,
+0xf3,0x81,0x9b,0x47,0x56,0x10,0x7b,0xfc,0x70,0x36,0x84,0x18,0x73,0xea,0xef,0xf9,
+0x97,0x4d,0x9e,0x33,0x23,0xdd,0x26,0x0b,0xba,0x2a,0xb7,0x3f,0x44,0xdc,0x83,0x27,
+0xff,0xbd,0x61,0x59,0x2b,0x11,0xb7,0xca,0x4f,0xdb,0xc5,0x8b,0x0c,0x1c,0x31,0xae,
+0x32,0xf8,0xf8,0xb9,0x42,0xf7,0x7f,0xdc,0x61,0x9a,0x76,0xb1,0x5a,0x04,0xe1,0x11,
+0x3d,0x66,0x45,0xb7,0x18,0x71,0xbe,0xc9,0x24,0x85,0xd6,0xf3,0xd4,0xba,0x41,0x34,
+0x5d,0x12,0x2d,0x25,0xb9,0x8d,0xa6,0x13,0x48,0x6d,0x4b,0xb0,0x07,0x7d,0x99,0x93,
+0x09,0x61,0x81,0x74,0x57,0x26,0x8a,0xab,0x69,0xe3,0xe4,0xd9,0xc7,0x88,0xcc,0x24,
+0xd8,0xec,0x52,0x24,0x5c,0x1e,0xbc,0x91,0x14,0xe2,0x96,0xde,0xeb,0x0a,0xda,0x9e,
+0xdd,0x5f,0xb3,0x5b,0xdb,0xd4,0x82,0xec,0xc6,0x20,0x50,0x87,0x25,0x40,0x3a,0xfb,
+0xc7,0xee,0xcd,0xfe,0x33,0xe5,0x6e,0xc3,0x84,0x09,0x55,0x03,0x25,0x39,0xc0,0xe9,
+0x35,0x5d,0x65,0x31,0xa8,0xf6,0xbf,0xa0,0x09,0xcd,0x29,0xc7,0xb3,0x36,0x32,0x2e,
+0xdc,0x95,0xf3,0x83,0xc1,0x5a,0xcf,0x8b,0x8d,0xf6,0xea,0xb3,0x21,0xf8,0xa4,0xed,
+0x1e,0x31,0x0e,0xb6,0x4c,0x11,0xab,0x60,0x0b,0xa4,0x12,0x23,0x22,0x17,0xa3,0x36,
+0x64,0x82,0x91,0x04,0x12,0xe0,0xab,0x6f,0x1e,0xcb,0x50,0x05,0x61,0xb4,0x40,0xff,
+0x59,0x86,0x71,0xd1,0xd5,0x33,0x69,0x7c,0xa9,0x73,0x8a,0x38,0xd7,0x64,0x0c,0xf1,
+0x69 };
static const BYTE rootcertauthority2011[] = {
0x30,0x82,0x05,0xed,0x30,0x82,0x03,0xd5,0xa0,0x03,0x02,0x01,0x02,0x02,0x10,0x3f,
0x8b,0xc8,0xb5,0xfc,0x9f,0xb2,0x96,0x43,0xb5,0x69,0xd6,0x6c,0x42,0xe1,0x44,0x30,
@@ -771,6 +868,7 @@ static const struct CONST_BLOB {
{ authenticode, sizeof(authenticode) },
{ rootauthority, sizeof(rootauthority) },
{ rootcertauthority, sizeof(rootcertauthority) },
+ { rootcertauthority2010, sizeof(rootcertauthority2010) },
{ rootcertauthority2011, sizeof(rootcertauthority2011) },
};
--
2.14.1

View File

@@ -1 +0,0 @@
Fixes: Add MS root certificates 2010/2011

View File

@@ -1,49 +1,52 @@
From 30d0aa2712dbdfe8f532118f9829c7999c0326a7 Mon Sep 17 00:00:00 2001
From 7be7006fb497490d61c283f419d73c13ef532ccf Mon Sep 17 00:00:00 2001
From: Lucian Poston <lucian.poston@gmail.com>
Date: Thu, 3 May 2018 00:38:06 -0700
Subject: [PATCH] d2d1: Use ID2D1Factory1 in d2d_geometry
Subject: [PATCH] d2d1: Use ID2D1Factory2 in d2d_geometry
https://bugs.winehq.org/show_bug.cgi?id=44052
Signed-off-by: Lucian Poston <lucian.poston@gmail.com>
---
dlls/d2d1/d2d1_private.h | 8 ++++----
dlls/d2d1/factory.c | 6 +++---
dlls/d2d1/geometry.c | 30 +++++++++++++++++++++---------
3 files changed, 28 insertions(+), 16 deletions(-)
dlls/d2d1/d2d1_private.h | 10 +++++-----
dlls/d2d1/factory.c | 8 ++++----
dlls/d2d1/geometry.c | 38 +++++++++++++++++++++++++++-----------
3 files changed, 36 insertions(+), 20 deletions(-)
diff --git a/dlls/d2d1/d2d1_private.h b/dlls/d2d1/d2d1_private.h
index 70b841df8cb..85c56524de4 100644
index 2e42d6d550..1cacb6c1a9 100644
--- a/dlls/d2d1/d2d1_private.h
+++ b/dlls/d2d1/d2d1_private.h
@@ -424,7 +424,7 @@ struct d2d_geometry
@@ -426,7 +426,7 @@ struct d2d_geometry
ID2D1Geometry ID2D1Geometry_iface;
LONG refcount;
- ID2D1Factory *factory;
+ ID2D1Factory1 *factory;
+ ID2D1Factory2 *factory;
D2D_MATRIX_3X2_F transform;
@@ -494,10 +494,10 @@ struct d2d_geometry
@@ -496,12 +496,12 @@ struct d2d_geometry
} u;
};
-void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory) DECLSPEC_HIDDEN;
+void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory1 *factory) DECLSPEC_HIDDEN;
+void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory2 *factory) DECLSPEC_HIDDEN;
HRESULT d2d_rectangle_geometry_init(struct d2d_geometry *geometry,
- ID2D1Factory *factory, const D2D1_RECT_F *rect) DECLSPEC_HIDDEN;
-void d2d_transformed_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory,
+ ID2D1Factory1 *factory, const D2D1_RECT_F *rect) DECLSPEC_HIDDEN;
+void d2d_transformed_geometry_init(struct d2d_geometry *geometry, ID2D1Factory1 *factory,
+ ID2D1Factory2 *factory, const D2D1_RECT_F *rect) DECLSPEC_HIDDEN;
+void d2d_transformed_geometry_init(struct d2d_geometry *geometry, ID2D1Factory2 *factory,
ID2D1Geometry *src_geometry, const D2D_MATRIX_3X2_F *transform) DECLSPEC_HIDDEN;
HRESULT d2d_geometry_group_init(struct d2d_geometry *geometry, ID2D1Factory *factory,
-HRESULT d2d_geometry_group_init(struct d2d_geometry *geometry, ID2D1Factory *factory,
+HRESULT d2d_geometry_group_init(struct d2d_geometry *geometry, ID2D1Factory2 *factory,
D2D1_FILL_MODE fill_mode, ID2D1Geometry **src_geometries, unsigned int geometry_count) DECLSPEC_HIDDEN;
struct d2d_geometry *unsafe_impl_from_ID2D1Geometry(ID2D1Geometry *iface) DECLSPEC_HIDDEN;
diff --git a/dlls/d2d1/factory.c b/dlls/d2d1/factory.c
index c2a0405abdd..33c2d173596 100644
index 48a2efb96b..a1bc6dd296 100644
--- a/dlls/d2d1/factory.c
+++ b/dlls/d2d1/factory.c
@@ -141,7 +141,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateRectangleGeometry(ID2D1Factor
@@ -138,7 +138,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateRectangleGeometry(ID2D1Factor
if (!(object = heap_alloc_zero(sizeof(*object))))
return E_OUTOFMEMORY;
@@ -52,7 +55,16 @@ index c2a0405abdd..33c2d173596 100644
{
WARN("Failed to initialize rectangle geometry, hr %#x.\n", hr);
heap_free(object);
@@ -207,7 +207,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateTransformedGeometry(ID2D1Fact
@@ -179,7 +179,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateGeometryGroup(ID2D1Factory2 *
if (!(object = heap_alloc_zero(sizeof(*object))))
return E_OUTOFMEMORY;
- if (FAILED(hr = d2d_geometry_group_init(object, (ID2D1Factory *)iface, fill_mode, geometries, geometry_count)))
+ if (FAILED(hr = d2d_geometry_group_init(object, iface, fill_mode, geometries, geometry_count)))
{
WARN("Failed to initialize geometry group, hr %#x.\n", hr);
heap_free(object);
@@ -204,7 +204,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreateTransformedGeometry(ID2D1Fact
if (!(object = heap_alloc_zero(sizeof(*object))))
return E_OUTOFMEMORY;
@@ -61,7 +73,7 @@ index c2a0405abdd..33c2d173596 100644
TRACE("Created transformed geometry %p.\n", object);
*transformed_geometry = (ID2D1TransformedGeometry *)&object->ID2D1Geometry_iface;
@@ -224,7 +224,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreatePathGeometry(ID2D1Factory2 *i
@@ -221,7 +221,7 @@ static HRESULT STDMETHODCALLTYPE d2d_factory_CreatePathGeometry(ID2D1Factory2 *i
if (!(object = heap_alloc_zero(sizeof(*object))))
return E_OUTOFMEMORY;
@@ -71,29 +83,29 @@ index c2a0405abdd..33c2d173596 100644
TRACE("Created path geometry %p.\n", object);
*geometry = (ID2D1PathGeometry *)&object->ID2D1Geometry_iface;
diff --git a/dlls/d2d1/geometry.c b/dlls/d2d1/geometry.c
index 250ff0c5535..7b67e247f7a 100644
index 23049d015e..79850f1c20 100644
--- a/dlls/d2d1/geometry.c
+++ b/dlls/d2d1/geometry.c
@@ -2343,15 +2343,15 @@ static void d2d_geometry_cleanup(struct d2d_geometry *geometry)
@@ -2338,15 +2338,15 @@ static void d2d_geometry_cleanup(struct d2d_geometry *geometry)
heap_free(geometry->fill.bezier_vertices);
heap_free(geometry->fill.faces);
heap_free(geometry->fill.vertices);
- ID2D1Factory_Release(geometry->factory);
+ ID2D1Factory1_Release(geometry->factory);
+ ID2D1Factory2_Release(geometry->factory);
}
-static void d2d_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory,
+static void d2d_geometry_init(struct d2d_geometry *geometry, ID2D1Factory1 *factory,
+static void d2d_geometry_init(struct d2d_geometry *geometry, ID2D1Factory2 *factory,
const D2D1_MATRIX_3X2_F *transform, const struct ID2D1GeometryVtbl *vtbl)
{
geometry->ID2D1Geometry_iface.lpVtbl = vtbl;
geometry->refcount = 1;
- ID2D1Factory_AddRef(geometry->factory = factory);
+ ID2D1Factory1_AddRef(geometry->factory = factory);
+ ID2D1Factory2_AddRef(geometry->factory = factory);
geometry->transform = *transform;
}
@@ -3040,10 +3040,14 @@ static ULONG STDMETHODCALLTYPE d2d_path_geometry_Release(ID2D1PathGeometry *ifac
@@ -3035,10 +3035,14 @@ static ULONG STDMETHODCALLTYPE d2d_path_geometry_Release(ID2D1PathGeometry *ifac
static void STDMETHODCALLTYPE d2d_path_geometry_GetFactory(ID2D1PathGeometry *iface, ID2D1Factory **factory)
{
struct d2d_geometry *geometry = impl_from_ID2D1PathGeometry(iface);
@@ -102,23 +114,23 @@ index 250ff0c5535..7b67e247f7a 100644
TRACE("iface %p, factory %p.\n", iface, factory);
- ID2D1Factory_AddRef(*factory = geometry->factory);
+ if (FAILED(hr = ID2D1Factory1_QueryInterface(geometry->factory, &IID_ID2D1Factory, (void **)factory)))
+ if (FAILED(hr = ID2D1Factory2_QueryInterface(geometry->factory, &IID_ID2D1Factory, (void **)factory)))
+ {
+ WARN("Unable to query ID2D1Factory interface %#x", hr);
+ }
}
static HRESULT STDMETHODCALLTYPE d2d_path_geometry_GetBounds(ID2D1PathGeometry *iface,
@@ -3491,7 +3495,7 @@ static const struct ID2D1PathGeometryVtbl d2d_path_geometry_vtbl =
@@ -3486,7 +3490,7 @@ static const struct ID2D1PathGeometryVtbl d2d_path_geometry_vtbl =
d2d_path_geometry_GetFigureCount,
};
-void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory)
+void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory1 *factory)
+void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory2 *factory)
{
d2d_geometry_init(geometry, factory, &identity, (ID2D1GeometryVtbl *)&d2d_path_geometry_vtbl);
geometry->u.path.ID2D1GeometrySink_iface.lpVtbl = &d2d_geometry_sink_vtbl;
@@ -3556,10 +3560,14 @@ static ULONG STDMETHODCALLTYPE d2d_rectangle_geometry_Release(ID2D1RectangleGeom
@@ -3551,10 +3555,14 @@ static ULONG STDMETHODCALLTYPE d2d_rectangle_geometry_Release(ID2D1RectangleGeom
static void STDMETHODCALLTYPE d2d_rectangle_geometry_GetFactory(ID2D1RectangleGeometry *iface, ID2D1Factory **factory)
{
struct d2d_geometry *geometry = impl_from_ID2D1RectangleGeometry(iface);
@@ -127,23 +139,23 @@ index 250ff0c5535..7b67e247f7a 100644
TRACE("iface %p, factory %p.\n", iface, factory);
- ID2D1Factory_AddRef(*factory = geometry->factory);
+ if (FAILED(hr = ID2D1Factory1_QueryInterface(geometry->factory, &IID_ID2D1Factory, (void **)factory)))
+ if (FAILED(hr = ID2D1Factory2_QueryInterface(geometry->factory, &IID_ID2D1Factory, (void **)factory)))
+ {
+ WARN("Unable to query ID2D1Factory interface %#x", hr);
+ }
}
static HRESULT STDMETHODCALLTYPE d2d_rectangle_geometry_GetBounds(ID2D1RectangleGeometry *iface,
@@ -3779,7 +3787,7 @@ static const struct ID2D1RectangleGeometryVtbl d2d_rectangle_geometry_vtbl =
@@ -3774,7 +3782,7 @@ static const struct ID2D1RectangleGeometryVtbl d2d_rectangle_geometry_vtbl =
d2d_rectangle_geometry_GetRect,
};
-HRESULT d2d_rectangle_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory, const D2D1_RECT_F *rect)
+HRESULT d2d_rectangle_geometry_init(struct d2d_geometry *geometry, ID2D1Factory1 *factory, const D2D1_RECT_F *rect)
+HRESULT d2d_rectangle_geometry_init(struct d2d_geometry *geometry, ID2D1Factory2 *factory, const D2D1_RECT_F *rect)
{
struct d2d_face *f;
D2D1_POINT_2F *v;
@@ -3900,10 +3908,14 @@ static void STDMETHODCALLTYPE d2d_transformed_geometry_GetFactory(ID2D1Transform
@@ -3895,10 +3903,14 @@ static void STDMETHODCALLTYPE d2d_transformed_geometry_GetFactory(ID2D1Transform
ID2D1Factory **factory)
{
struct d2d_geometry *geometry = impl_from_ID2D1TransformedGeometry(iface);
@@ -152,22 +164,48 @@ index 250ff0c5535..7b67e247f7a 100644
TRACE("iface %p, factory %p.\n", iface, factory);
- ID2D1Factory_AddRef(*factory = geometry->factory);
+ if (FAILED(hr = ID2D1Factory1_QueryInterface(geometry->factory, &IID_ID2D1Factory, (void **)factory)))
+ if (FAILED(hr = ID2D1Factory2_QueryInterface(geometry->factory, &IID_ID2D1Factory, (void **)factory)))
+ {
+ WARN("Unable to query ID2D1Factory interface %#x", hr);
+ }
}
static HRESULT STDMETHODCALLTYPE d2d_transformed_geometry_GetBounds(ID2D1TransformedGeometry *iface,
@@ -4096,7 +4108,7 @@ static const struct ID2D1TransformedGeometryVtbl d2d_transformed_geometry_vtbl =
@@ -4091,7 +4103,7 @@ static const struct ID2D1TransformedGeometryVtbl d2d_transformed_geometry_vtbl =
d2d_transformed_geometry_GetTransform,
};
-void d2d_transformed_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *factory,
+void d2d_transformed_geometry_init(struct d2d_geometry *geometry, ID2D1Factory1 *factory,
+void d2d_transformed_geometry_init(struct d2d_geometry *geometry, ID2D1Factory2 *factory,
ID2D1Geometry *src_geometry, const D2D_MATRIX_3X2_F *transform)
{
struct d2d_geometry *src_impl;
@@ -4167,11 +4179,15 @@ static ULONG STDMETHODCALLTYPE d2d_geometry_group_Release(ID2D1GeometryGroup *if
static void STDMETHODCALLTYPE d2d_geometry_group_GetFactory(ID2D1GeometryGroup *iface,
ID2D1Factory **factory)
{
+ HRESULT hr;
struct d2d_geometry *geometry = impl_from_ID2D1GeometryGroup(iface);
TRACE("iface %p, factory %p.\n", iface, factory);
- ID2D1Factory_AddRef(*factory = geometry->factory);
+ if (FAILED(hr = ID2D1Factory2_QueryInterface(geometry->factory, &IID_ID2D1Factory, (void **)factory)))
+ {
+ WARN("Unable to query ID2D1Factory interface %#x", hr);
+ }
}
static HRESULT STDMETHODCALLTYPE d2d_geometry_group_GetBounds(ID2D1GeometryGroup *iface,
@@ -4347,7 +4363,7 @@ static const struct ID2D1GeometryGroupVtbl d2d_geometry_group_vtbl =
d2d_geometry_group_GetSourceGeometries,
};
-HRESULT d2d_geometry_group_init(struct d2d_geometry *geometry, ID2D1Factory *factory,
+HRESULT d2d_geometry_group_init(struct d2d_geometry *geometry, ID2D1Factory2 *factory,
D2D1_FILL_MODE fill_mode, ID2D1Geometry **geometries, unsigned int geometry_count)
{
unsigned int i;
--
2.20.1
2.17.1

View File

@@ -1,17 +1,18 @@
From 9f36741fe5895aaf8aa5a954b78db09e32c2db3a Mon Sep 17 00:00:00 2001
From 896b9be78dfd979ddea8f098ae66473956d4147c Mon Sep 17 00:00:00 2001
From: Kimmo Myllyvirta <kimmo.myllyvirta@gmail.com>
Date: Sat, 24 Sep 2016 06:51:24 +0300
Subject: [PATCH] d3d11: Add stub deferred rendering context.
---
dlls/d3d11/device.c | 1267 +++++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 1129 insertions(+), 138 deletions(-)
dlls/d3d11/device.c | 1268 +++++++++++++++++++++++++++++++++-----
dlls/d3d11/tests/d3d11.c | 4 +-
2 files changed, 1132 insertions(+), 140 deletions(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
index 8f9a850..b7cdd49 100644
index 31c7f35fc25..dca5a88caa0 100644
--- a/dlls/d3d11/device.c
+++ b/dlls/d3d11/device.c
@@ -25,6 +25,16 @@
@@ -22,6 +22,16 @@
WINE_DEFAULT_DEBUG_CHANNEL(d3d11);
@@ -28,7 +29,7 @@ index 8f9a850..b7cdd49 100644
static void STDMETHODCALLTYPE d3d_null_wined3d_object_destroyed(void *parent) {}
static const struct wined3d_parent_ops d3d_null_wined3d_parent_ops =
@@ -2886,218 +2896,1186 @@ static void d3d11_immediate_context_destroy(struct d3d11_immediate_context *cont
@@ -2883,218 +2893,1186 @@ static void d3d11_immediate_context_destroy(struct d3d11_immediate_context *cont
wined3d_private_store_cleanup(&context->private_store);
}
@@ -1351,13 +1352,14 @@ index 8f9a850..b7cdd49 100644
iface, byte_code, byte_code_length, class_linkage, shader);
if (class_linkage)
@@ -3365,9 +4343,22 @@ static HRESULT STDMETHODCALLTYPE d3d11_device_CreateCounter(ID3D11Device2 *iface
@@ -3362,10 +4340,22 @@ static HRESULT STDMETHODCALLTYPE d3d11_device_CreateCounter(ID3D11Device2 *iface
static HRESULT STDMETHODCALLTYPE d3d11_device_CreateDeferredContext(ID3D11Device2 *iface, UINT flags,
ID3D11DeviceContext **context)
{
- FIXME("iface %p, flags %#x, context %p stub!\n", iface, flags, context);
+ struct d3d11_deferred_context *object;
- *context = NULL;
- return E_NOTIMPL;
+ TRACE("iface %p, flags %#x, context %p.\n", iface, flags, context);
+
@@ -1365,7 +1367,7 @@ index 8f9a850..b7cdd49 100644
+ return E_OUTOFMEMORY;
+
+ object->ID3D11DeviceContext_iface.lpVtbl = &d3d11_deferred_context_vtbl;
+ object->device = iface;
+ object->device = (ID3D11Device *)iface;
+ object->refcount = 1;
+
+ ID3D11Device2_AddRef(iface);
@@ -1376,6 +1378,28 @@ index 8f9a850..b7cdd49 100644
}
static HRESULT STDMETHODCALLTYPE d3d11_device_OpenSharedResource(ID3D11Device2 *iface, HANDLE resource, REFIID iid,
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
index da4627d7a85..dadeac27662 100644
--- a/dlls/d3d11/tests/d3d11.c
+++ b/dlls/d3d11/tests/d3d11.c
@@ -2231,6 +2231,8 @@ static void test_create_deferred_context(void)
hr = ID3D11Device_CreateDeferredContext(device, 0, &context);
todo_wine ok(hr == DXGI_ERROR_INVALID_CALL, "Failed to create deferred context, hr %#x.\n", hr);
+ if (SUCCEEDED(hr))
+ ID3D11DeviceContext_Release(context);
refcount = ID3D11Device_Release(device);
ok(!refcount, "Device has %u references left.\n", refcount);
@@ -2243,7 +2245,7 @@ static void test_create_deferred_context(void)
expected_refcount = get_refcount(device) + 1;
hr = ID3D11Device_CreateDeferredContext(device, 0, &context);
- todo_wine ok(hr == S_OK, "Failed to create deferred context, hr %#x.\n", hr);
+ ok(hr == S_OK, "Failed to create deferred context, hr %#x.\n", hr);
if (FAILED(hr))
goto done;
refcount = get_refcount(device);
--
1.9.1
2.23.0

View File

@@ -1,4 +1,4 @@
From 837daae12d4c7fd40a35511d8d45299b46e91b38 Mon Sep 17 00:00:00 2001
From 881e39d338d1b8faed36440376460d498262c532 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 19 Jan 2017 16:54:42 +0100
Subject: [PATCH] wined3d: Add wined3d_resource_map_info function.
@@ -13,11 +13,11 @@ Subject: [PATCH] wined3d: Add wined3d_resource_map_info function.
6 files changed, 70 insertions(+)
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
index 4c90d820..8065839d 100644
index 89dab8ebfdd..5ef9a48eeb7 100644
--- a/dlls/wined3d/buffer.c
+++ b/dlls/wined3d/buffer.c
@@ -1306,6 +1306,24 @@ static HRESULT buffer_resource_sub_resource_map(struct wined3d_resource *resourc
return wined3d_buffer_gl_map(buffer_gl, offset, size, (BYTE **)&map_desc->data, flags);
@@ -1121,6 +1121,24 @@ static HRESULT buffer_resource_sub_resource_map(struct wined3d_resource *resourc
return WINED3D_OK;
}
+static HRESULT buffer_resource_sub_resource_map_info(struct wined3d_resource *resource, unsigned int sub_resource_idx,
@@ -40,20 +40,20 @@ index 4c90d820..8065839d 100644
+
static HRESULT buffer_resource_sub_resource_unmap(struct wined3d_resource *resource, unsigned int sub_resource_idx)
{
if (sub_resource_idx)
@@ -1325,6 +1343,7 @@ static const struct wined3d_resource_ops buffer_resource_ops =
struct wined3d_buffer *buffer = buffer_from_resource(resource);
@@ -1279,6 +1297,7 @@ static const struct wined3d_resource_ops buffer_resource_ops =
buffer_resource_preload,
buffer_unload,
buffer_resource_unload,
buffer_resource_sub_resource_map,
+ buffer_resource_sub_resource_map_info,
buffer_resource_sub_resource_unmap,
};
diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
index a1b2cbd2..dd4ca20c 100644
index bba940f42cb..ff31c004b06 100644
--- a/dlls/wined3d/resource.c
+++ b/dlls/wined3d/resource.c
@@ -361,6 +361,14 @@ HRESULT CDECL wined3d_resource_map(struct wined3d_resource *resource, unsigned i
@@ -383,6 +383,14 @@ HRESULT CDECL wined3d_resource_map(struct wined3d_resource *resource, unsigned i
return wined3d_cs_map(resource->device->cs, resource, sub_resource_idx, map_desc, box, flags);
}
@@ -69,10 +69,10 @@ index a1b2cbd2..dd4ca20c 100644
{
TRACE("resource %p, sub_resource_idx %u.\n", resource, sub_resource_idx);
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
index 87998d55..45ee3d3d 100644
index 7c9c8298519..73e79ff25b5 100644
--- a/dlls/wined3d/texture.c
+++ b/dlls/wined3d/texture.c
@@ -2698,6 +2698,36 @@ static HRESULT texture_resource_sub_resource_map(struct wined3d_resource *resour
@@ -3155,6 +3155,36 @@ static HRESULT texture_resource_sub_resource_map(struct wined3d_resource *resour
return WINED3D_OK;
}
@@ -109,19 +109,19 @@ index 87998d55..45ee3d3d 100644
static HRESULT texture_resource_sub_resource_unmap(struct wined3d_resource *resource, unsigned int sub_resource_idx)
{
struct wined3d_texture_sub_resource *sub_resource;
@@ -2749,6 +2779,7 @@ static const struct wined3d_resource_ops texture_resource_ops =
@@ -3207,6 +3237,7 @@ static const struct wined3d_resource_ops texture_resource_ops =
texture_resource_preload,
wined3d_texture_gl_unload,
texture_resource_unload,
texture_resource_sub_resource_map,
+ texture_resource_sub_resource_map_info,
texture_resource_sub_resource_unmap,
};
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
index ee702211..f4944564 100644
index e03c57055b7..f68f8199f7e 100644
--- a/dlls/wined3d/wined3d.spec
+++ b/dlls/wined3d/wined3d.spec
@@ -220,6 +220,7 @@
@@ -218,6 +218,7 @@
@ cdecl wined3d_resource_get_parent(ptr)
@ cdecl wined3d_resource_get_priority(ptr)
@ cdecl wined3d_resource_map(ptr long ptr ptr long)
@@ -130,10 +130,10 @@ index ee702211..f4944564 100644
@ cdecl wined3d_resource_set_parent(ptr ptr)
@ cdecl wined3d_resource_set_priority(ptr long)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 9a01ed29..9f8f784e 100644
index 8f9ad1ce856..c7f75d1983c 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -3096,6 +3096,8 @@ struct wined3d_resource_ops
@@ -3368,6 +3368,8 @@ struct wined3d_resource_ops
void (*resource_unload)(struct wined3d_resource *resource);
HRESULT (*resource_sub_resource_map)(struct wined3d_resource *resource, unsigned int sub_resource_idx,
struct wined3d_map_desc *map_desc, const struct wined3d_box *box, DWORD flags);
@@ -143,10 +143,10 @@ index 9a01ed29..9f8f784e 100644
};
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index dc491d3b..8e0cf665 100644
index bafab04d3d3..ea50fb7c8d4 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -1835,6 +1835,13 @@ struct wined3d_map_desc
@@ -1851,6 +1851,13 @@ struct wined3d_map_desc
void *data;
};
@@ -160,7 +160,7 @@ index dc491d3b..8e0cf665 100644
struct wined3d_sub_resource_data
{
const void *data;
@@ -2606,6 +2613,8 @@ void * __cdecl wined3d_resource_get_parent(const struct wined3d_resource *resour
@@ -2663,6 +2670,8 @@ void * __cdecl wined3d_resource_get_parent(const struct wined3d_resource *resour
DWORD __cdecl wined3d_resource_get_priority(const struct wined3d_resource *resource);
HRESULT __cdecl wined3d_resource_map(struct wined3d_resource *resource, unsigned int sub_resource_idx,
struct wined3d_map_desc *map_desc, const struct wined3d_box *box, DWORD flags);
@@ -170,5 +170,5 @@ index dc491d3b..8e0cf665 100644
void __cdecl wined3d_resource_set_parent(struct wined3d_resource *resource, void *parent);
DWORD __cdecl wined3d_resource_set_priority(struct wined3d_resource *resource, DWORD priority);
--
2.19.1
2.24.0

View File

@@ -1,14 +1,14 @@
From 4984f8e6033facccfa7b27b4b0f83e6615abc972 Mon Sep 17 00:00:00 2001
From c093321833140c3aadacae32c43d160e83483d17 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 19 Jan 2017 16:56:56 +0100
Subject: [PATCH] d3d11: Initial implementation for deferred contexts.
---
dlls/d3d11/device.c | 1072 +++++++++++++++++++++++++++++++++++++++++--
1 file changed, 1041 insertions(+), 31 deletions(-)
dlls/d3d11/device.c | 1073 +++++++++++++++++++++++++++++++++++++++++--
1 file changed, 1042 insertions(+), 31 deletions(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
index fbc875c6fee..74ae6f8f333 100644
index dca5a88caa..738f1d19d4 100644
--- a/dlls/d3d11/device.c
+++ b/dlls/d3d11/device.c
@@ -17,11 +17,181 @@
@@ -193,7 +193,7 @@ index fbc875c6fee..74ae6f8f333 100644
/* ID3D11DeviceContext - deferred context */
struct d3d11_deferred_context
{
@@ -29,9 +199,531 @@ struct d3d11_deferred_context
@@ -29,9 +199,532 @@ struct d3d11_deferred_context
ID3D11Device *device;
LONG refcount;
@@ -646,6 +646,7 @@ index fbc875c6fee..74ae6f8f333 100644
+ {
+ free_deferred_calls(&cmdlist->commands);
+ wined3d_private_store_cleanup(&cmdlist->private_store);
+ ID3D11Device_Release(cmdlist->device);
+ HeapFree(GetProcessHeap(), 0, cmdlist);
+ }
+
@@ -725,7 +726,7 @@ index fbc875c6fee..74ae6f8f333 100644
static void STDMETHODCALLTYPE d3d_null_wined3d_object_destroyed(void *parent) {}
static const struct wined3d_parent_ops d3d_null_wined3d_parent_ops =
@@ -1226,7 +1918,20 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_ResolveSubresource(ID3D11D
@@ -1226,7 +1919,20 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_ResolveSubresource(ID3D11D
static void STDMETHODCALLTYPE d3d11_immediate_context_ExecuteCommandList(ID3D11DeviceContext1 *iface,
ID3D11CommandList *command_list, BOOL restore_state)
{
@@ -747,7 +748,7 @@ index fbc875c6fee..74ae6f8f333 100644
}
static void STDMETHODCALLTYPE d3d11_immediate_context_HSSetShaderResources(ID3D11DeviceContext1 *iface,
@@ -2938,6 +3643,7 @@ static ULONG STDMETHODCALLTYPE d3d11_deferred_context_Release(ID3D11DeviceContex
@@ -2938,6 +3644,7 @@ static ULONG STDMETHODCALLTYPE d3d11_deferred_context_Release(ID3D11DeviceContex
if (!refcount)
{
@@ -755,7 +756,7 @@ index fbc875c6fee..74ae6f8f333 100644
wined3d_private_store_cleanup(&context->private_store);
ID3D11Device_Release(context->device);
HeapFree(GetProcessHeap(), 0, context);
@@ -2989,43 +3695,86 @@ static HRESULT STDMETHODCALLTYPE d3d11_deferred_context_SetPrivateDataInterface(
@@ -2989,43 +3696,86 @@ static HRESULT STDMETHODCALLTYPE d3d11_deferred_context_SetPrivateDataInterface(
static void STDMETHODCALLTYPE d3d11_deferred_context_VSSetConstantBuffers(ID3D11DeviceContext *iface,
UINT start_slot, UINT buffer_count, ID3D11Buffer *const *buffers)
{
@@ -848,7 +849,7 @@ index fbc875c6fee..74ae6f8f333 100644
}
static void STDMETHODCALLTYPE d3d11_deferred_context_Draw(ID3D11DeviceContext *iface,
@@ -3038,53 +3787,169 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_Draw(ID3D11DeviceContext *i
@@ -3038,53 +3788,169 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_Draw(ID3D11DeviceContext *i
static HRESULT STDMETHODCALLTYPE d3d11_deferred_context_Map(ID3D11DeviceContext *iface, ID3D11Resource *resource,
UINT subresource_idx, D3D11_MAP map_type, UINT map_flags, D3D11_MAPPED_SUBRESOURCE *mapped_subresource)
{
@@ -1027,7 +1028,7 @@ index fbc875c6fee..74ae6f8f333 100644
}
static void STDMETHODCALLTYPE d3d11_deferred_context_DrawInstanced(ID3D11DeviceContext *iface,
@@ -3113,7 +3978,16 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_GSSetShader(ID3D11DeviceCon
@@ -3113,7 +3979,16 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_GSSetShader(ID3D11DeviceCon
static void STDMETHODCALLTYPE d3d11_deferred_context_IASetPrimitiveTopology(ID3D11DeviceContext *iface,
D3D11_PRIMITIVE_TOPOLOGY topology)
{
@@ -1045,7 +1046,7 @@ index fbc875c6fee..74ae6f8f333 100644
}
static void STDMETHODCALLTYPE d3d11_deferred_context_VSSetShaderResources(ID3D11DeviceContext *iface,
@@ -3173,8 +4047,28 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_OMSetRenderTargets(ID3D11De
@@ -3173,8 +4048,28 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_OMSetRenderTargets(ID3D11De
UINT render_target_view_count, ID3D11RenderTargetView *const *render_target_views,
ID3D11DepthStencilView *depth_stencil_view)
{
@@ -1075,7 +1076,7 @@ index fbc875c6fee..74ae6f8f333 100644
}
static void STDMETHODCALLTYPE d3d11_deferred_context_OMSetRenderTargetsAndUnorderedAccessViews(
@@ -3194,15 +4088,44 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_OMSetRenderTargetsAndUnorde
@@ -3194,15 +4089,44 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_OMSetRenderTargetsAndUnorde
static void STDMETHODCALLTYPE d3d11_deferred_context_OMSetBlendState(ID3D11DeviceContext *iface,
ID3D11BlendState *blend_state, const float blend_factor[4], UINT sample_mask)
{
@@ -1122,7 +1123,7 @@ index fbc875c6fee..74ae6f8f333 100644
}
static void STDMETHODCALLTYPE d3d11_deferred_context_SOSetTargets(ID3D11DeviceContext *iface, UINT buffer_count,
@@ -3244,13 +4167,34 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_DispatchIndirect(ID3D11Devi
@@ -3244,13 +4168,34 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_DispatchIndirect(ID3D11Devi
static void STDMETHODCALLTYPE d3d11_deferred_context_RSSetState(ID3D11DeviceContext *iface,
ID3D11RasterizerState *rasterizer_state)
{
@@ -1159,7 +1160,7 @@ index fbc875c6fee..74ae6f8f333 100644
}
static void STDMETHODCALLTYPE d3d11_deferred_context_RSSetScissorRects(ID3D11DeviceContext *iface,
@@ -3365,8 +4309,18 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_HSSetShaderResources(ID3D11
@@ -3365,8 +4310,18 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_HSSetShaderResources(ID3D11
static void STDMETHODCALLTYPE d3d11_deferred_context_HSSetShader(ID3D11DeviceContext *iface,
ID3D11HullShader *shader, ID3D11ClassInstance *const *class_instances, UINT class_instance_count)
{
@@ -1179,7 +1180,7 @@ index fbc875c6fee..74ae6f8f333 100644
}
static void STDMETHODCALLTYPE d3d11_deferred_context_HSSetSamplers(ID3D11DeviceContext *iface,
@@ -3379,36 +4333,62 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_HSSetSamplers(ID3D11DeviceC
@@ -3379,36 +4334,62 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_HSSetSamplers(ID3D11DeviceC
static void STDMETHODCALLTYPE d3d11_deferred_context_HSSetConstantBuffers(ID3D11DeviceContext *iface,
UINT start_slot, UINT buffer_count, ID3D11Buffer *const *buffers)
{
@@ -1247,7 +1248,7 @@ index fbc875c6fee..74ae6f8f333 100644
}
static void STDMETHODCALLTYPE d3d11_deferred_context_CSSetShaderResources(ID3D11DeviceContext *iface,
@@ -3709,7 +4689,15 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_CSGetConstantBuffers(ID3D11
@@ -3709,7 +4690,15 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_CSGetConstantBuffers(ID3D11
static void STDMETHODCALLTYPE d3d11_deferred_context_ClearState(ID3D11DeviceContext *iface)
{
@@ -1264,7 +1265,7 @@ index fbc875c6fee..74ae6f8f333 100644
}
static void STDMETHODCALLTYPE d3d11_deferred_context_Flush(ID3D11DeviceContext *iface)
@@ -3734,9 +4722,29 @@ static UINT STDMETHODCALLTYPE d3d11_deferred_context_GetContextFlags(ID3D11Devic
@@ -3734,9 +4723,29 @@ static UINT STDMETHODCALLTYPE d3d11_deferred_context_GetContextFlags(ID3D11Devic
static HRESULT STDMETHODCALLTYPE d3d11_deferred_context_FinishCommandList(ID3D11DeviceContext *iface,
BOOL restore, ID3D11CommandList **command_list)
{
@@ -1296,8 +1297,8 @@ index fbc875c6fee..74ae6f8f333 100644
}
static const struct ID3D11DeviceContextVtbl d3d11_deferred_context_vtbl =
@@ -4351,6 +5359,8 @@ static HRESULT STDMETHODCALLTYPE d3d11_device_CreateDeferredContext(ID3D11Device
object->device = iface;
@@ -4351,6 +5360,8 @@ static HRESULT STDMETHODCALLTYPE d3d11_device_CreateDeferredContext(ID3D11Device
object->device = (ID3D11Device *)iface;
object->refcount = 1;
+ list_init(&object->commands);
@@ -1306,5 +1307,5 @@ index fbc875c6fee..74ae6f8f333 100644
wined3d_private_store_init(&object->private_store);
--
2.20.1
2.21.0

View File

@@ -0,0 +1,176 @@
From c01cbb5811cb9de58a0c3fa7822382f45900b435 Mon Sep 17 00:00:00 2001
From: Paul Gofman <gofmanp@gmail.com>
Date: Fri, 27 Sep 2019 16:26:04 +0300
Subject: [PATCH] d3d11/tests: Add a basic test for drawing with deferred
context.
---
dlls/d3d11/tests/d3d11.c | 100 +++++++++++++++++++++++++++++++--------
1 file changed, 81 insertions(+), 19 deletions(-)
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
index 7f11a59d0cb..c63bae8bbab 100644
--- a/dlls/d3d11/tests/d3d11.c
+++ b/dlls/d3d11/tests/d3d11.c
@@ -1692,10 +1692,11 @@ static void release_test_context_(unsigned int line, struct d3d11_test_context *
ok_(__FILE__, line)(!ref, "Device has %u references left.\n", ref);
}
-#define draw_quad(context) draw_quad_vs_(__LINE__, context, NULL, 0)
-#define draw_quad_vs(a, b, c) draw_quad_vs_(__LINE__, a, b, c)
+#define draw_quad(context) draw_quad_vs_(__LINE__, context, NULL, 0, (context)->immediate_context)
+#define draw_quad_vs(a, b, c) draw_quad_vs_(__LINE__, a, b, c, (a)->immediate_context)
+#define draw_quad_ext(a, b, c, d) draw_quad_vs_(__LINE__, a, b, c, d)
static void draw_quad_vs_(unsigned int line, struct d3d11_test_context *context,
- const DWORD *vs_code, size_t vs_code_size)
+ const DWORD *vs_code, size_t vs_code_size, ID3D11DeviceContext *draw_context)
{
static const D3D11_INPUT_ELEMENT_DESC default_layout_desc[] =
{
@@ -1764,14 +1765,14 @@ static void draw_quad_vs_(unsigned int line, struct d3d11_test_context *context,
if (!context->vb)
context->vb = create_buffer(device, D3D11_BIND_VERTEX_BUFFER, sizeof(quad), quad);
- ID3D11DeviceContext_IASetInputLayout(context->immediate_context, context->input_layout);
- ID3D11DeviceContext_IASetPrimitiveTopology(context->immediate_context, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
+ ID3D11DeviceContext_IASetInputLayout(draw_context, context->input_layout);
+ ID3D11DeviceContext_IASetPrimitiveTopology(draw_context, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
stride = sizeof(*quad);
offset = 0;
- ID3D11DeviceContext_IASetVertexBuffers(context->immediate_context, 0, 1, &context->vb, &stride, &offset);
- ID3D11DeviceContext_VSSetShader(context->immediate_context, context->vs, NULL, 0);
+ ID3D11DeviceContext_IASetVertexBuffers(draw_context, 0, 1, &context->vb, &stride, &offset);
+ ID3D11DeviceContext_VSSetShader(draw_context, context->vs, NULL, 0);
- ID3D11DeviceContext_Draw(context->immediate_context, 4, 0);
+ ID3D11DeviceContext_Draw(draw_context, 4, 0);
}
#define draw_quad_z(context, z) draw_quad_z_(__LINE__, context, z)
@@ -1807,19 +1808,27 @@ static void draw_quad_z_(unsigned int line, struct d3d11_test_context *context,
(ID3D11Resource *)context->vs_cb, 0, NULL, &data, 0, 0);
ID3D11DeviceContext_VSSetConstantBuffers(context->immediate_context, 0, 1, &context->vs_cb);
- draw_quad_vs_(__LINE__, context, vs_code, sizeof(vs_code));
+ draw_quad_vs_(__LINE__, context, vs_code, sizeof(vs_code), context->immediate_context);
}
-static void set_quad_color(struct d3d11_test_context *context, const struct vec4 *color)
+static void set_quad_color_ext(struct d3d11_test_context *context, const struct vec4 *color,
+ ID3D11DeviceContext *draw_context)
{
- ID3D11DeviceContext_UpdateSubresource(context->immediate_context,
+ ID3D11DeviceContext_UpdateSubresource(draw_context,
(ID3D11Resource *)context->ps_cb, 0, NULL, color, 0, 0);
}
-#define draw_color_quad(a, b) draw_color_quad_(__LINE__, a, b, NULL, 0)
-#define draw_color_quad_vs(a, b, c, d) draw_color_quad_(__LINE__, a, b, c, d)
+static void set_quad_color(struct d3d11_test_context *context, const struct vec4 *color)
+{
+ set_quad_color_ext(context, color, context->immediate_context);
+}
+
+#define draw_color_quad(a, b) draw_color_quad_(__LINE__, a, b, NULL, 0, (a)->immediate_context)
+#define draw_color_quad_vs(a, b, c, d) draw_color_quad_(__LINE__, a, b, c, d, (a)->immediate_context)
+#define draw_color_quad_ext(a, b, c, d, e) draw_color_quad_(__LINE__, a, b, c, d, e)
static void draw_color_quad_(unsigned int line, struct d3d11_test_context *context,
- const struct vec4 *color, const DWORD *vs_code, size_t vs_code_size)
+ const struct vec4 *color, const DWORD *vs_code, size_t vs_code_size,
+ ID3D11DeviceContext *draw_context)
{
static const DWORD ps_color_code[] =
{
@@ -1856,12 +1865,12 @@ static void draw_color_quad_(unsigned int line, struct d3d11_test_context *conte
if (!context->ps_cb)
context->ps_cb = create_buffer(device, D3D11_BIND_CONSTANT_BUFFER, sizeof(*color), NULL);
- ID3D11DeviceContext_PSSetShader(context->immediate_context, context->ps, NULL, 0);
- ID3D11DeviceContext_PSSetConstantBuffers(context->immediate_context, 0, 1, &context->ps_cb);
+ ID3D11DeviceContext_PSSetShader(draw_context, context->ps, NULL, 0);
+ ID3D11DeviceContext_PSSetConstantBuffers(draw_context, 0, 1, &context->ps_cb);
- set_quad_color(context, color);
+ set_quad_color_ext(context, color, draw_context);
- draw_quad_vs_(line, context, vs_code, vs_code_size);
+ draw_quad_vs_(line, context, vs_code, vs_code_size, draw_context);
}
static void test_create_device(void)
@@ -2088,6 +2097,59 @@ static void test_create_device(void)
DestroyWindow(window);
}
+static void test_draw_deferred_context(void)
+{
+ static const struct vec4 red = {1.0f, 0.0f, 0.0f, 1.0f};
+ static const float white[] = {1.0f, 1.0f, 1.0f, 1.0f};
+ static const float black[] = {0.0f, 0.0f, 0.0f, 0.0f};
+ ID3D11DeviceContext *context, *deferred_context;
+ struct d3d11_test_context test_context;
+ ID3D11CommandList *command_list;
+ ID3D11Device *device;
+ DWORD color;
+ HRESULT hr;
+
+ if (!init_test_context(&test_context, NULL))
+ return;
+
+ device = test_context.device;
+ context = test_context.immediate_context;
+
+ hr = ID3D11Device_CreateDeferredContext(device, 0, &deferred_context);
+ ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
+
+ ID3D11DeviceContext_ClearRenderTargetView(context, test_context.backbuffer_rtv, white);
+ color = get_texture_color(test_context.backbuffer, 320, 240);
+ ok(color == 0xffffffff, "Got unexpected color 0x%08x.\n", color);
+
+ ID3D11DeviceContext_ClearRenderTargetView(deferred_context, test_context.backbuffer_rtv, black);
+
+ hr = ID3D11DeviceContext_FinishCommandList(deferred_context, FALSE, &command_list);
+ ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
+
+ ID3D11DeviceContext_ExecuteCommandList(context, command_list, TRUE);
+ color = get_texture_color(test_context.backbuffer, 320, 240);
+ ok(color == 0x00000000, "Got unexpected color 0x%08x.\n", color);
+ ID3D11CommandList_Release(command_list);
+
+ ID3D11DeviceContext_OMSetRenderTargets(deferred_context, 1, &test_context.backbuffer_rtv, NULL);
+
+ draw_color_quad_ext(&test_context, &red, NULL, 0, deferred_context);
+ color = get_texture_color(test_context.backbuffer, 320, 240);
+ ok(color == 0x00000000, "Got unexpected color 0x%08x.\n", color);
+
+ hr = ID3D11DeviceContext_FinishCommandList(deferred_context, TRUE, &command_list);
+ ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
+ ID3D11DeviceContext_ExecuteCommandList(context, command_list, TRUE);
+
+ color = get_texture_color(test_context.backbuffer, 320, 240);
+ ok(color == 0xff0000ff, "Got unexpected color 0x%08x.\n", color);
+ ID3D11CommandList_Release(command_list);
+
+ ID3D11DeviceContext_Release(deferred_context);
+ release_test_context(&test_context);
+}
+
static void test_device_interfaces(const D3D_FEATURE_LEVEL feature_level)
{
struct device_desc device_desc;
@@ -29639,11 +29701,11 @@ START_TEST(d3d11)
}
print_adapter_info();
-
queue_test(test_create_device);
queue_for_each_feature_level(test_device_interfaces);
queue_test(test_get_immediate_context);
queue_test(test_create_deferred_context);
+ queue_test(test_draw_deferred_context);
queue_test(test_create_texture1d);
queue_test(test_texture1d_interfaces);
queue_test(test_create_texture2d);
--
2.17.1

View File

@@ -0,0 +1,95 @@
From f6f5f94053043d6d39767f0c7ac5cd0307019559 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Tue, 12 Nov 2019 21:13:22 -0600
Subject: [PATCH] d3d9: Return a stub interface from
Direct3DShaderValidatorCreate9().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46735
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
---
dlls/d3d9/d3d9_main.c | 61 ++++++++++++++++++++++++++++++++++++++++---
1 file changed, 57 insertions(+), 4 deletions(-)
diff --git a/dlls/d3d9/d3d9_main.c b/dlls/d3d9/d3d9_main.c
index 21df2a34c..aff43070a 100644
--- a/dlls/d3d9/d3d9_main.c
+++ b/dlls/d3d9/d3d9_main.c
@@ -75,18 +75,71 @@ HRESULT WINAPI DECLSPEC_HOTPATCH Direct3DCreate9Ex(UINT sdk_version, IDirect3D9E
return D3D_OK;
}
+static HRESULT WINAPI shader_validator_QueryInterface(void *iface, REFIID iid, void **out)
+{
+ TRACE("iface %p, iid %p, out %p.\n", iface, iid, out);
+
+ WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
+ *out = NULL;
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI shader_validator_AddRef(void *iface)
+{
+ TRACE("iface %p.\n", iface);
+ return 2;
+}
+
+static ULONG WINAPI shader_validator_Release(void *iface)
+{
+ TRACE("iface %p.\n", iface);
+ return 1;
+}
+
+static HRESULT WINAPI shader_validator_stub1(void *arg1, void *arg2, void *arg3, void *arg4)
+{
+ FIXME("arg1 %p, arg2 %p, arg3 %p, arg4 %p, stub!\n", arg1, arg2, arg3, arg4);
+ return S_OK;
+}
+
+static HRESULT WINAPI shader_validator_stub2(void *arg1, void *arg2, void *arg3, DWORD *arg4, DWORD arg5)
+{
+ int i;
+ FIXME("arg1 %p, arg2 %p, arg3 %p, arg4 %p, arg5 %u, stub!\n", arg1, arg2, arg3, arg4, arg5);
+ for (i = 0; i < arg5; ++i)
+ FIXME(" %#x\n", arg4[i]);
+ return S_OK;
+}
+
+static HRESULT WINAPI shader_validator_stub3(void *arg1)
+{
+ FIXME("arg1 %p, stub!\n", arg1);
+ return S_OK;
+}
+
+static const void *shader_validator_vtbl[] =
+{
+ shader_validator_QueryInterface,
+ shader_validator_AddRef,
+ shader_validator_Release,
+ shader_validator_stub1,
+ shader_validator_stub2,
+ shader_validator_stub3,
+};
+
+static void *shader_validator = &shader_validator_vtbl;
+
/*******************************************************************
* Direct3DShaderValidatorCreate9 (D3D9.@)
*
* No documentation available for this function.
* SDK only says it is internal and shouldn't be used.
*/
-void* WINAPI Direct3DShaderValidatorCreate9(void)
+void * WINAPI Direct3DShaderValidatorCreate9(void)
{
- static int once;
+ TRACE("Returning validator %p.\n", &shader_validator);
- if (!once++) FIXME("stub\n");
- return NULL;
+ return &shader_validator;
}
/***********************************************************************
--
2.23.0

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