Compare commits

...

283 Commits

Author SHA1 Message Date
Alistair Leslie-Hughes
e004127f41 Release v10.14 2025-08-30 10:40:08 +10:00
Alistair Leslie-Hughes
5cba568c93 Updated vkd3d-latest patchset 2025-08-30 10:30:19 +10:00
Elizabeth Figura
e2610f8a45 Rebase against 5fd9826b8cdcb9130b0bf6943a2a5cd7c7499370. 2025-08-28 16:19:59 -05:00
Alistair Leslie-Hughes
e250393ba4 Rebase against 4a7d6576f0a8507097e3894a579061b568db6ac6. 2025-08-28 07:33:47 +10:00
Alistair Leslie-Hughes
ce66dea197 Rebase against 7dcdd7a6549793e8a6469816a5c25226e2d73e9c. 2025-08-24 09:05:15 +10:00
Alistair Leslie-Hughes
7cd95e9f79 Updated vkd3d-latest patchset
Squashed.

Updated to vkd3d 1.17+
2025-08-22 08:09:57 +10:00
Alistair Leslie-Hughes
c605cf204a Rebase against 288a40d05c8cddf62d0b12524a90d2d4f5ce114d. 2025-08-20 07:53:40 +10:00
Alistair Leslie-Hughes
a8f798fc3c Rebase against 2e4974af42a96dfcd426be5e40faecd9853401d1. 2025-08-19 07:45:52 +10:00
Alistair Leslie-Hughes
a8a6d7b0ed Release v10.13 2025-08-16 13:28:15 +10:00
Alistair Leslie-Hughes
f09ef9a3ca Added oleaut32_typelib_dispatch patchset 2025-08-16 13:27:01 +10:00
Alistair Leslie-Hughes
a877872a9a Updated vkd3d-latest patchset 2025-08-15 08:07:30 +10:00
Alistair Leslie-Hughes
e2390e2637 Updated vkd3d-latest patchset 2025-08-07 07:20:57 +10:00
Alistair Leslie-Hughes
999c6a11d6 Updated vkd3d-latest patchset 2025-08-01 07:19:16 +10:00
Alistair Leslie-Hughes
dde6218e4e Updated vkd3d-latest patchset 2025-07-30 08:46:43 +10:00
Alistair Leslie-Hughes
6336965159 Updated vkd3d-latest patchset 2025-07-24 07:31:47 +10:00
Alistair Leslie-Hughes
18084e82a7 Updated oleaut32-default-pic-size definition 2025-07-22 07:38:47 +10:00
Elizabeth Figura
89d2f58ebd Rebase against 7c7b3e43047a26789f1cbd5b3a04a37a3d08e2bd. 2025-07-21 16:35:21 -05:00
Elizabeth Figura
1db546cd7e Rebase against e44737278a4487cb8a75f81cedbe7393c5f716cc. 2025-07-18 18:05:19 -05:00
Elizabeth Figura
5e73b4fe8b Rebase against 182e2887b7c01d464f296bd7aa1335f147d8e514. 2025-07-18 17:50:06 -05:00
Alistair Leslie-Hughes
54295e8aaa Rebase against e1af2ae201c9853133ef3af1dafe15fe992fed92. 2025-07-16 12:47:09 +10:00
Alistair Leslie-Hughes
b09545bc48 Release v10.12 2025-07-12 20:06:05 +10:00
Alistair Leslie-Hughes
8c98aa0c22 Added msxml_normalize_line patchset 2025-07-12 15:22:15 +10:00
Alistair Leslie-Hughes
31cab243e7 Added comctl32_animate_avi patchset 2025-07-11 19:33:15 +10:00
Alistair Leslie-Hughes
caa47e6c73 Rebase against d1f6b3771376cc8909be712b127125e1b9e4f5d1. 2025-07-11 08:16:46 +10:00
Alistair Leslie-Hughes
d102a32693 Rebase against 177848adf54f6871e558be6b42ee2478a522c3d2. 2025-07-09 09:35:33 +10:00
Alistair Leslie-Hughes
784382204b Updated msxml3-element_props patchset
Add missing patch.
2025-07-08 15:54:55 +10:00
Alistair Leslie-Hughes
3e94d12465 Release v10.11 2025-06-28 14:10:47 +10:00
Alistair Leslie-Hughes
f102154244 Updated vkd3d-latest patchset 2025-06-27 08:23:40 +10:00
Alistair Leslie-Hughes
26c1f46d89 Rebase against 80bc1338bea7d9dac78ab449b4505e5bb91e7ba3. 2025-06-27 08:16:31 +10:00
Elizabeth Figura
8dd91084bf Rebase against 1c586991c802a7368137ae2c0470880bb359de78. 2025-06-25 19:31:10 -05:00
Alistair Leslie-Hughes
e232cccc6a Updated vkd3d-latest patchset 2025-06-25 10:56:46 +10:00
Alistair Leslie-Hughes
2ed03c4ed0 Rebase against 69e3a51b3dc50dd1697c64f7b2bcde54baa0a300. 2025-06-25 10:56:05 +10:00
Elizabeth Figura
5054f7359b Rebase against 7f0fac46d718e0961314d0c50342dcf336b9803d. 2025-06-23 16:47:48 -05:00
Alistair Leslie-Hughes
7db26cf727 Rebase against e9dcdf38041a1911d37117e0219dced5ba5dbf7f. 2025-06-22 18:07:01 +10:00
Elizabeth Figura
1d80a4ba4e Rebase against 057e1d73e84b06fac90cba96dbf0305d219df3d5. 2025-06-19 16:36:06 -05:00
Alistair Leslie-Hughes
5cc4d90333 Rebase against 73b75afe55144727775e8a865f82ed843c19b3bb. 2025-06-19 11:06:28 +10:00
Alistair Leslie-Hughes
a044166651 Updated vkd3d-latest patchset
Squash and rebase.
2025-06-18 10:25:22 +10:00
Alistair Leslie-Hughes
c37f9f5091 Release v10.10 2025-06-14 16:15:47 +10:00
Alistair Leslie-Hughes
b3f1bf0856 Rebase against 885446556ce443b496e368b8f2c68807dcc7df0f. 2025-06-14 15:22:25 +10:00
Alistair Leslie-Hughes
4de57fff29 Updated vkd3d-latest patchset 2025-06-13 08:26:56 +10:00
Alistair Leslie-Hughes
52ba925f90 Rebase against 19441ac8046556a0118d6b59838dfd408fa56fdd. 2025-06-13 07:55:01 +10:00
Alistair Leslie-Hughes
cc517dd949 Updated vkd3d-latest patchset 2025-06-11 07:54:27 +10:00
Alistair Leslie-Hughes
a9be5cf2b0 Updated vkd3d-latest patchset 2025-06-06 07:11:56 +10:00
Elizabeth Figura
df97d6c328 Rebase against 5063ab8a805e77b9b9dfe5587fb38981923e422d. 2025-06-02 16:03:11 -05:00
Alistair Leslie-Hughes
b4006fc038 Release v10.9 2025-06-02 08:14:05 +10:00
Alistair Leslie-Hughes
d1cc8d0fa5 Added kernel32-limit_heap_old_exe patchset 2025-06-02 07:48:53 +10:00
Alistair Leslie-Hughes
ef72380f02 Rebase against e0bb1dba3d6fdff61a6f98a4ca7d6af4438e21d4. 2025-05-29 10:06:53 +10:00
Alistair Leslie-Hughes
1b2e959b75 Updated vkd3d-latest patchset 2025-05-28 07:36:25 +10:00
Alistair Leslie-Hughes
31a37e3f3c Rebase against 371929471ddcac9358d6de238296ba115170a3fa. 2025-05-28 07:36:03 +10:00
Alistair Leslie-Hughes
a3738434e0 Rebase against 22af42ac22279e6c0c671f033661f95c1761b4bb. 2025-05-24 07:53:59 +10:00
Alistair Leslie-Hughes
554a64f6b3 Rebase against 8f91df4c4e4fb8b32c737bb02e82dcddfb71a114. 2025-05-22 07:44:21 +10:00
Alistair Leslie-Hughes
7f2c4b8613 Rebase against a550040d94de646c65f4013337b5cce89383b634. 2025-05-21 07:45:33 +10:00
Alistair Leslie-Hughes
47f77594ab Release v10.8 2025-05-17 11:30:37 +10:00
Alistair Leslie-Hughes
4adf613941 Rebase against 0ac1033f04074339de5cae9ffd9f4f45baaef92e. 2025-05-16 08:09:23 +10:00
Alistair Leslie-Hughes
b3fc3b367a Updated vkd3d-latest patchset 2025-05-15 08:02:49 +10:00
Alistair Leslie-Hughes
0b9581fa6a Rebase against 09539a3af5f806bf319917cafff2b07e6480d656. 2025-05-15 08:02:24 +10:00
Alistair Leslie-Hughes
06a7d6349e Updated vkd3d-latest patchset 2025-05-13 09:05:49 +10:00
Alistair Leslie-Hughes
86a7c93cdd Rebase against f9741837a3bff3a912442695b4f7c3f5efbef557. 2025-05-09 13:30:18 +10:00
Alistair Leslie-Hughes
abf4b4db07 Updated odbc32-fixes patchset
Some older ANSI drivers have a limit on the number of environment handles that
can be created.  So reuse existing environment variable for each connection
when possible.
2025-05-08 12:15:16 +10:00
Alistair Leslie-Hughes
b4d8b2f64f Rebase against d8a271c053bb23171355854d7af155b3bda7e8a9. 2025-05-08 12:14:47 +10:00
Alistair Leslie-Hughes
092b56c39c Updated vkd3d-latest patchset 2025-05-07 07:49:36 +10:00
Alistair Leslie-Hughes
2cd8221624 Rebase against 226a7eeabbc13345e49da1ff8c018d6f06211c66. 2025-05-06 07:55:00 +10:00
Alistair Leslie-Hughes
e855d43a60 Updated vkd3d-latest patchset
Squash and Update.
2025-05-06 06:58:56 +10:00
Alistair Leslie-Hughes
f95009bb3e Updated odbc32-fixes patchset
Corrected Commit ascii to ANSI.
Reset patch numbers.
Convert SQL_C_WCHAR to SQL_CHAR when required for ANSI driver.
2025-05-05 11:54:43 +10:00
Alistair Leslie-Hughes
edfe4935ff Release v10.7 2025-05-03 15:42:07 +10:00
Alistair Leslie-Hughes
b8110be095 Updated odbc32-fixes patchset
Convert of type needs to occur not matter if fallback is being used.
2025-05-02 11:14:22 +10:00
Alistair Leslie-Hughes
42a307df67 Updated odbc32-fixes patchset
More support for the PostgreSQL ODBC ascii driver.
2025-05-01 08:42:13 +10:00
Alistair Leslie-Hughes
c89fe8069e Updated vkd3d-latest patchset 2025-05-01 06:49:44 +10:00
Alistair Leslie-Hughes
eff3de6ad2 Updated odbc32-fixes patchset 2025-04-30 14:13:01 +10:00
Alistair Leslie-Hughes
9f89b77e8f Updated vkd3d-latest patchset 2025-04-29 08:02:01 +10:00
Elizabeth Figura
74dd8bdd2a Rebase against e646263a6f048156d5cb9c63b094cd9c80d5bfb6. 2025-04-28 16:59:26 -05:00
Alistair Leslie-Hughes
f01e66252c Updated odbc32-fixes patchset
Completed patchset to get PostgreSQL ASCII driver working.
2025-04-28 11:21:27 +10:00
Alistair Leslie-Hughes
353a868136 Updated odbc32-fixes patchset
Attempt to get PostgreSQL ascii ODBC driver working.
2025-04-26 19:19:26 +10:00
Alistair Leslie-Hughes
ee5092247c Updated vkd3d-latest patchset 2025-04-26 09:07:11 +10:00
Alistair Leslie-Hughes
e54c70a009 Rebase against f7503d0a996ae1243dd6c87b39a9143624a80465. 2025-04-26 09:03:13 +10:00
Elizabeth Figura
1b8ab6cb68 Rebase against ba6adef9bfc209f1247ba88acec64b58d97100c3. 2025-04-21 17:29:53 -05:00
Alistair Leslie-Hughes
81425de332 Release v10.6 2025-04-21 15:53:41 +10:00
Alistair Leslie-Hughes
c2d96a3c91 Rebase against 040e1333b1f4cf73d6877daec15495a8be42324a. 2025-04-21 07:24:55 +10:00
Alistair Leslie-Hughes
292830fa82 Updated vkd3d-latest patchset 2025-04-17 08:55:47 +10:00
Elizabeth Figura
6912feaf65 Rebase against 661cc2a1dec5e44e074702707272228178f21487. 2025-04-15 23:07:07 -05:00
Alistair Leslie-Hughes
aa0c8391eb Updated odbc32-fixes patchset
Thanks Steve Fawcett.
2025-04-10 08:25:33 +10:00
Alistair Leslie-Hughes
36020b4a0e Updated vkd3d-latest patchset
Squash and update.
2025-04-10 08:23:17 +10:00
Elizabeth Figura
4fa7fcd631 Rebase against 647004cd5d7ee93ad8b53abb8939da87be3e25a0. 2025-04-09 17:11:35 -05:00
Elizabeth Figura
ebf36e4717 d3dx9_36-DDS: Remove patch.
This was implemented upstream by e12a1d283a0d4a14c2394a05052b06f0de16f1a6.
2025-04-09 16:47:07 -05:00
Alistair Leslie-Hughes
835c92a298 Release v10.5 2025-04-06 12:29:00 +10:00
Alistair Leslie-Hughes
708eb528c0 Rebase against f3843ea16b85012d0d0ca0f4f95a4c87c97d03f9. 2025-04-05 11:53:02 +11:00
Alistair Leslie-Hughes
77a24c72b8 Updated vkd3d-latest patchset 2025-04-05 11:52:49 +11:00
Elizabeth Figura
8924ee42d8 Rebase against e956c4ec71dd0f41090df3863e6f937963b2b7d9. 2025-04-02 18:32:00 -05:00
Elizabeth Figura
e1b2c45272 Rebase against 8e2aea6290e823d2f5023e2bff5c2fec0880a65d. 2025-04-02 13:37:06 -05:00
Elizabeth Figura
9b43d37fd1 winex11-_NET_ACTIVE_WINDOW: Restore.
This was not actually implemented upstream. Upstream does not send events; it only so far tracks changes made by other applications.
2025-04-02 12:59:45 -05:00
Paul Gofman
5b64f435e9 ntdll-ForceBottomUpAlloc: Rebase and re-enable. 2025-04-01 14:56:02 -06:00
Paul Gofman
441fd5f422 Rebase against 908f9eb20ff7511fe7f717d1a72d0e2e8911887d. 2025-04-01 12:28:07 -06:00
Alistair Leslie-Hughes
c103bbb0b6 Rebase against cf6bdfd2260b4e2a29e72a241ad60f6f39712fa3. 2025-03-30 08:38:01 +11:00
Elizabeth Figura
d88d44f1d9 ntdll-Syscall_Emulation: Also trap syscalls in the top-down reserved area.
Patch from "mkrsym1@gmail.com".
2025-03-25 22:17:15 -05:00
Elizabeth Figura
5e84688c5f Rebase against 3379ee2e6b5f610b9f82d31be9417095372ebc5e. 2025-03-25 21:57:58 -05:00
Alistair Leslie-Hughes
c110178b0d Release v10.4 2025-03-22 17:50:09 +11:00
Alistair Leslie-Hughes
796c6b3a44 Added msxml3-element_props patchset 2025-03-22 15:34:38 +11:00
Alistair Leslie-Hughes
2ae11f25b0 Updated vkd3d-latest patchset 2025-03-22 15:33:02 +11:00
Elizabeth Figura
30f69aa45a Staging: Avoid leaking staging_event for every thread.
Just leak it for the first one.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57989
2025-03-20 22:20:58 -05:00
Elizabeth Figura
bb826f2185 Rebase against ced1402d20ba874f9634a306630455366c3865b5. 2025-03-19 17:31:39 -05:00
Elizabeth Figura
c5767aad30 Rebase against e66405a5040ac233ebdc7bdd925919ad63b4dd69. 2025-03-19 09:33:51 -05:00
Alistair Leslie-Hughes
fa0cd8ead0 Rebase against 6298b0cab2086ae61f46b284d22c420dfbb2b44e. 2025-03-18 10:16:45 +11:00
Alistair Leslie-Hughes
f247cd5d6b Rebase against b201cd518f3448553c31e329d5504b94f21d84ce. 2025-03-13 16:44:46 +11:00
Alistair Leslie-Hughes
b17a3d6c54 Updated vkd3d-latest patchset
Squash to latest.
2025-03-13 07:08:10 +11:00
Elizabeth Figura
c0e113dd3a Rebase against 10bb431e0d0760d72921106c7607d66808b939bb. 2025-03-12 10:41:26 -05:00
Alistair Leslie-Hughes
946648d13f Release v10.3 2025-03-08 15:02:32 +11:00
Alistair Leslie-Hughes
d9670d89d1 Added msxml3-whitespace patchset 2025-03-08 13:47:30 +11:00
Alistair Leslie-Hughes
4914f150c5 Updated vkd3d-latest patchset 2025-03-07 10:10:10 +11:00
Alistair Leslie-Hughes
0af25de63c Rebase against 1f947b1c62c4f6fdfad4da812567cf33c904c1eb. 2025-03-07 10:09:45 +11:00
Elizabeth Figura
0682c26496 Rebase against 6e6334d4293b235fe11f05c556acf6cecb173412. 2025-03-03 16:36:08 -06:00
Elizabeth Figura
db49cb3767 Rebase against d17225a89cfb45988a89f60803756e7df4e68cc5. 2025-02-28 17:27:03 -06:00
Elizabeth Figura
6f8931b39a Rebase against 0bf15e3e0715ebda735e9857cbcb36ebc491293f. 2025-02-27 16:34:34 -06:00
Elizabeth Figura
0e1220c76d d3dx9_36-DDS: Rebase and re-enable.
Patch 0001 was implemented upstream by ee4ad2a0a460cf9737c7d0d6057b57528e8ea912.
2025-02-27 16:01:51 -06:00
Elizabeth Figura
acb3c0bb3c server-Realtime_Priority: Remove patch set.
This functionality was introduced upstream by 945efda7fe4c95276a1c64a8d10368726d834937.
2025-02-27 16:01:44 -06:00
Alistair Leslie-Hughes
a381f356d6 Updated vkd3d-latest patchset 2025-02-27 09:47:00 +11:00
Alistair Leslie-Hughes
b69d02ba02 Rebase against 32a81ee2135c67e393e49cce60ef8ebfbaefb531. 2025-02-27 09:44:42 +11:00
Alistair Leslie-Hughes
3546551685 Updated vkd3d-latest patchset 2025-02-25 12:01:15 +11:00
Alistair Leslie-Hughes
2439dab96c Rebase against 4c06d354b8093a8979316186474213bbc1c68904. 2025-02-25 10:37:42 +11:00
Alistair Leslie-Hughes
f5190ef988 Removed upstream patches 2025-02-23 17:47:18 +11:00
Alistair Leslie-Hughes
ec5fbb99b7 Rebase against e1b8e7f6ec755afd251a3b7af0e632c6e4d74a64. 2025-02-23 08:27:19 +11:00
Alistair Leslie-Hughes
857466ad4c Release v10.2 2025-02-23 08:13:03 +11:00
Alistair Leslie-Hughes
4378292a65 Rebase against 4bd044dd32818166d42a9262411a1ae7ef42cc07. 2025-02-21 09:44:20 +11:00
Alistair Leslie-Hughes
c2e4c17811 Rebase against 94dc1f470cc7adfee75cb0718e953ca1954599ef. 2025-02-20 10:50:18 +11:00
Alistair Leslie-Hughes
34a7d5e858 Updated vkd3d-latest patchset 2025-02-20 07:22:00 +11:00
Alistair Leslie-Hughes
a4e8224bd8 Rebase against a46043015322bf8e6c78a74bd33300f3478767e3. 2025-02-19 09:43:59 +11:00
Alistair Leslie-Hughes
1b224000ac Added ws2_32-af_unix patchset 2025-02-18 13:57:31 +11:00
Alistair Leslie-Hughes
2b9cd3663b Updated vkd3d-latest patchset 2025-02-18 09:01:06 +11:00
Elizabeth Figura
4901d72e77 Rebase against 59720e7d1b88ed519569135542aa55145a2a6ff7. 2025-02-17 15:39:12 -06:00
Alistair Leslie-Hughes
735225dbaa Rebase against 17915f730267b2b50550636fb6928a6ace247ccd. 2025-02-13 21:20:46 +11:00
Alistair Leslie-Hughes
7042b486e2 Rebase against 7b8663e465e92fb2c1052fd8ad47f0dcbf37a83c. 2025-02-11 11:19:10 +11:00
Dean M Greer
4ef147fbe5 macOS.yml: fix-up action 2025-02-10 23:20:41 +00:00
Alistair Leslie-Hughes
7b9777c23e Release v10.1 2025-02-09 18:37:10 +11:00
Alistair Leslie-Hughes
aed0bcfb83 Rebase against a1dddd902f21e3a5057a40cb9848351f0cbcfd82. 2025-02-09 18:37:05 +11:00
Alistair Leslie-Hughes
22f5ea5e4f Rebase against a47a9f39d1e9d19a7931cdc254a9cd68c1ed6fef. 2025-02-07 10:29:46 +11:00
Alistair Leslie-Hughes
7f5729fc14 Updated vkd3d-latest patchset 2025-02-04 10:23:08 +11:00
Alistair Leslie-Hughes
7fda13a16d Rebase against 40b0ede26e317bb994bf0b85ea37c7dab074e9f1. 2025-02-04 10:22:36 +11:00
Alistair Leslie-Hughes
667ee8a4ff Added oleaut32_VarAdd patchset 2025-01-24 20:23:21 +11:00
Alistair Leslie-Hughes
b45a0aead3 Added d2d1_ID2D1GeometryGroup patchset 2025-01-24 10:29:21 +11:00
Alistair Leslie-Hughes
36483a9c11 Added shell32_enumerableobejct patchset 2025-01-24 09:10:08 +11:00
Alistair Leslie-Hughes
28834e80f8 Added richedit20-ImportDataObject patchset 2025-01-24 08:51:23 +11:00
Alistair Leslie-Hughes
49770c6bc6 Added mf_http_support patchset 2025-01-24 07:45:00 +11:00
Alistair Leslie-Hughes
93f5b4f6a0 Added vbscript_join patchset 2025-01-24 07:44:13 +11:00
Alistair Leslie-Hughes
e452a6cbdc Added vbscript-classes patchset 2025-01-24 07:43:33 +11:00
Alistair Leslie-Hughes
23ccc2eef1 Rebase against ff2de2a73b830a601cfe26aca5feeafb309fbff5. 2025-01-23 09:01:50 +11:00
Alistair Leslie-Hughes
18f976c338 Updated vkd3d-latest patchset 2025-01-23 08:14:29 +11:00
Alistair Leslie-Hughes
05bc4b822f Release v10.0 2025-01-22 07:26:21 +11:00
Alistair Leslie-Hughes
177488c071 Updated vkd3d-latest patchset 2025-01-22 07:09:50 +11:00
Alistair Leslie-Hughes
d0d5fef5bb Release v10.0-rc6 2025-01-18 17:46:21 +11:00
Alistair Leslie-Hughes
7d45af5cb4 Updated vkd3d-latest patchset 2025-01-18 16:16:52 +11:00
Alistair Leslie-Hughes
ad6dc1328b Updated vkd3d-latest patchset 2025-01-14 07:45:53 +11:00
Alistair Leslie-Hughes
f6f66d11a2 Release v10.0-rc5 2025-01-11 14:46:12 +11:00
Alistair Leslie-Hughes
5ab7824f62 Updated vkd3d-latest patchset 2025-01-11 14:10:37 +11:00
Alistair Leslie-Hughes
c263c6fabb Release v10.0-rc4 2025-01-04 11:08:38 +11:00
Alistair Leslie-Hughes
f10d2d0452 Release v10.0-rc3 2024-12-21 12:39:52 +11:00
Alistair Leslie-Hughes
bc8dead787 Updated vkd3d-latest patchset 2024-12-21 12:28:52 +11:00
Alistair Leslie-Hughes
3738f9baee Updated vkd3d-latest patchset
Squashed to release + update.
2024-12-18 06:43:04 +11:00
Alistair Leslie-Hughes
c2de76b804 Release v10.0-rc2 2024-12-14 14:48:52 +11:00
Alistair Leslie-Hughes
5a9719f283 Updated vkd3d-latest patchset 2024-12-14 11:06:53 +11:00
Alistair Leslie-Hughes
c8d46d4ca3 Rebase against 448fcbc0c60d7228ed52f1f5d90f62be0a58289a. 2024-12-13 09:11:23 +11:00
Alistair Leslie-Hughes
4f96088b1e Release v10.0-rc1 2024-12-07 09:51:57 +11:00
Alistair Leslie-Hughes
7f8391d22f Rebase against 4161e62e478f61fdcd0365d9bd7b21e3b1a5197b. 2024-12-07 08:55:33 +11:00
Alistair Leslie-Hughes
2f87552459 Updated vkd3d-latest 2024-12-06 09:17:43 +11:00
Alistair Leslie-Hughes
4f83c2f614 Rebase against 13c47c91e2d6fea81f4c0598cf5d2e81e95b0dd2. 2024-12-06 09:04:41 +11:00
Alistair Leslie-Hughes
dc277fed5e Rebase against 11e8662ebbbde9d39301aaf4bbc6f448b4cc4b77. 2024-12-05 09:54:50 +11:00
Alistair Leslie-Hughes
342b3b8162 Updated vkd3d-latest patchset 2024-12-03 09:15:55 +11:00
Alistair Leslie-Hughes
891daebf57 Rebase against 96a94318125332cd7aa80c475b35e38439b7c2b3. 2024-11-29 07:35:05 +11:00
Alistair Leslie-Hughes
7ba8823e57 Release v9.22 2024-11-23 16:12:36 +11:00
Alistair Leslie-Hughes
5a368dddd1 Rebase against 51ccd95c49c2c61ad41960b25a01f834601d70c0. 2024-11-23 16:11:07 +11:00
Alistair Leslie-Hughes
4cd3d8eba4 Rebase against 157105cb6d306f9794f0f3ebaa55d9c891e3be8f. 2024-11-22 11:15:42 +11:00
Alistair Leslie-Hughes
e0593972f0 Updated vkd3d-latest patchset
Includes Release 1.14.
2024-11-22 06:55:20 +11:00
Alistair Leslie-Hughes
e7a74d707b Rebase against f350a8782b29b3890320e48e915d026612657454. 2024-11-21 11:01:10 +11:00
Alistair Leslie-Hughes
8b3f47c1d2 Rebase against 044527c671d87b917e01f39fcf33b596cc2e7878. 2024-11-20 09:58:55 +11:00
Alistair Leslie-Hughes
78f630993b Rebase against 67c1c3c2559cc3b934cae5ae26156dcc6fbd484b. 2024-11-19 09:46:47 +11:00
Alistair Leslie-Hughes
3f86dff407 Rebase against ab40b7fd8686345bf77a27ceb12d4dfbaa753829. 2024-11-15 11:13:11 +11:00
Alistair Leslie-Hughes
65b72cb912 Updated vkd3d-latest patchset 2024-11-14 06:35:51 +11:00
Alistair Leslie-Hughes
32abf9fc97 Rebase against 6303163af0c8e1c245e45fe2efea8f664431d26c. 2024-11-12 09:53:10 +11:00
Alistair Leslie-Hughes
f03d32e381 Release v9.21 2024-11-09 07:59:05 +11:00
Alistair Leslie-Hughes
da7652e29c Updated dmime_segment_getaudiopath patchset
Remove testing tracing.
2024-11-09 07:55:57 +11:00
Elizabeth Figura
1bc2bc0404 Rebase against 24694dabfc53fc850cf035e187a4c15b77d6bc77. 2024-11-07 16:09:50 -06:00
Alistair Leslie-Hughes
e2b1620f07 Updated vkd3d-latest patchset 2024-11-07 12:25:06 +11:00
Alistair Leslie-Hughes
e3d0d19955 Rebase against 6db2812411d45ca4b4d15dea9a00577ea17b508e. 2024-11-07 12:23:36 +11:00
Alistair Leslie-Hughes
d4483ee98c Updated vkd3d-latest patchset 2024-11-05 11:33:35 +11:00
Alistair Leslie-Hughes
0236a37992 Rebase against eeabbe812ffc3ed7c06fc85cd63f0d85bffe207e. 2024-11-05 11:32:58 +11:00
Alistair Leslie-Hughes
0e08b05863 Added dmscript_enum_routine patchset 2024-11-01 19:41:39 +11:00
Alistair Leslie-Hughes
6ae3756a4f Added dmime_segment_getaudiopath patchset 2024-11-01 18:01:22 +11:00
Alistair Leslie-Hughes
8ad449f7b1 Updated vkd3d-latest patchset 2024-11-01 18:00:55 +11:00
Alistair Leslie-Hughes
0855d4defe Updated win32u-NtGdiExtTextOutW-rotation patchset 2024-10-25 07:33:36 +11:00
Alistair Leslie-Hughes
78bd3f0c6d Rebase against 83febc6b55cf9e7f97299e391771b9ad0d1f1ceb. 2024-10-24 09:49:30 +11:00
Alistair Leslie-Hughes
16cfc61df8 Updated vkd3d-latest patchset 2024-10-23 13:51:57 +11:00
Alistair Leslie-Hughes
153172ad27 Rebase against 2bca8cb236b7d4d5f4e0e35d6fcad6a1d8a2c5e3. 2024-10-23 13:49:48 +11:00
Alistair Leslie-Hughes
5a1b9d5093 Release v9.20 2024-10-19 08:10:39 +11:00
Alistair Leslie-Hughes
c1f62cba4d Rebase against 3a6e9365336304b4d7eb4d66aef959f67361cc1f. 2024-10-19 08:03:42 +11:00
Alistair Leslie-Hughes
02792d0328 Added win32u-NtGdiExtTextOutW-rotation patchset 2024-10-18 07:34:05 +11:00
Alistair Leslie-Hughes
44f9ec9761 Updated vkd3d-latest patchset 2024-10-18 07:32:33 +11:00
Alistair Leslie-Hughes
81492f7156 Updated vkd3d-latest patchset 2024-10-15 09:23:52 +11:00
Alistair Leslie-Hughes
683813d151 Drop gdi32-rotation patchset
This was "fixed" upstream. Though the current implementation is causing
multiple regressions with Rounded Rects.
2024-10-15 09:22:31 +11:00
Alistair Leslie-Hughes
858bf979a1 Release v9.19 2024-10-06 08:54:49 +11:00
Alistair Leslie-Hughes
c2319432af Updated vkd3d-latest patchset 2024-10-05 11:28:16 +10:00
Alistair Leslie-Hughes
ff1bc55757 Rebase against 7ee99608f469723bafadb28ef0ebd20631f86e9d. 2024-10-05 11:27:49 +10:00
Alistair Leslie-Hughes
3695e09653 updated vkd3d-latest patchset 2024-10-03 12:54:36 +10:00
Alistair Leslie-Hughes
ef36ee4399 Rebase against 7c1fbc40b7ed0b9b1f2c96b99a592530eadae14f. 2024-10-03 12:53:12 +10:00
Elizabeth Figura
3dfacea342 Rebase against b6196159becb194a56434061fe3bba239863b783. 2024-09-24 11:33:47 -05:00
Alistair Leslie-Hughes
1212b7ddff Release v9.18 2024-09-22 09:06:09 +10:00
Alistair Leslie-Hughes
16dce52124 Updated ntdll-WRITECOPY patchset
The current state even after multiple iterations, the whole
WRITECOPY implemenet needs differently.  Upstream will need to
do this.

wine-staging will currently allow Chrome based application to run.
2024-09-21 10:43:22 +10:00
Alistair Leslie-Hughes
8a4e32eb32 Updated vkd3d-latest patchset 2024-09-21 09:44:13 +10:00
Alistair Leslie-Hughes
1baaa8fbfc Updated vkd3d-latest patchset 2024-09-20 07:47:19 +10:00
Alistair Leslie-Hughes
f09458658e Rebase against 7037201214729c25d2439818012c156a3991cdb7. 2024-09-20 07:43:46 +10:00
Alistair Leslie-Hughes
e68e4dbb75 Updated ntdll-WRITECOPY patchset
These patches aren't in the correct directory and are really
never going to be accepted upstream.  So until upstream fixes
the WRITE stuff, these might have to stay awhile.

Battle.net requires these patches to function.
2024-09-18 12:18:41 +10:00
Alistair Leslie-Hughes
2e768aee87 Updated vkd3d-latest patchset 2024-09-18 12:18:41 +10:00
Alistair Leslie-Hughes
b6944be810 Updated vkd3d-latest patchset 2024-09-12 09:00:19 +10:00
Alistair Leslie-Hughes
ce31cba943 Rebase against 0cdc3b092cbe13b8a029e12fda32b5f5ef04641e. 2024-09-12 08:59:57 +10:00
Alistair Leslie-Hughes
52f5128abc Updated vkd3d-latest patchset 2024-09-11 10:30:18 +10:00
Alistair Leslie-Hughes
d7706d345c Rebase against ee5bd3bab82903b26e360d077c93af4a26158367. 2024-09-11 09:57:51 +10:00
Alistair Leslie-Hughes
27b121f293 Release v9.17 2024-09-07 09:32:33 +10:00
Alistair Leslie-Hughes
ab9df8f932 Updated vkd3d-latest patchset 2024-09-07 08:48:33 +10:00
Alistair Leslie-Hughes
4127a50f6b Rebase against 30c135fe8662e7bcbafaa187914f28fdf9c052ff. 2024-09-07 08:47:06 +10:00
Alistair Leslie-Hughes
deb7042324 Rebase against 8d2977ec12e234880199bc07daf49870d0aa64ec. 2024-09-03 07:34:49 +10:00
Alistair Leslie-Hughes
21a71e43b2 Updated odbc32-fixes patchset
Correct finding Environment Handle.
Check for error before converting type.
2024-08-31 13:44:42 +10:00
Elizabeth Figura
fdd5079133 Rebase against 055bddab4f14a1f73e887b88b86408d654382c2b. 2024-08-30 17:38:53 -05:00
Alistair Leslie-Hughes
acfbb64262 Updated vkd3d-latest patchset 2024-08-29 08:00:18 +10:00
Alistair Leslie-Hughes
041773cac4 Rebase against e3d2620bdf6f8e91a5ccf5904f256a55a5af137e. 2024-08-29 07:37:28 +10:00
Alistair Leslie-Hughes
f43640039b Updated odbc32-fixes patchset
Correct the convert of v3 to v2 for SQLColAttribute/W functions.
By default just pass the field id through.
2024-08-28 07:58:13 +10:00
Alistair Leslie-Hughes
8999a04fd6 Updated cmd-launch-association patchset
Re-enabled.
2024-08-27 08:01:53 +10:00
Alistair Leslie-Hughes
3c0ae5d07c Updated vkd3d-latest patchset
Squash and rebase to latest.
2024-08-27 07:57:01 +10:00
Alistair Leslie-Hughes
294e058f4b Updated odbc32-fixes patchset
There is only a small subset of columns fields that need converting
from 3 to 2.  Let all the other pass and we can deal with fallout later.
2024-08-27 07:55:14 +10:00
Alistair Leslie-Hughes
edbcee8c11 Rebase against b01131ce82ad8306d719f9919e6249af2db5322d. 2024-08-27 07:53:21 +10:00
Alistair Leslie-Hughes
6c5cb54635 Release v9.16 2024-08-24 13:19:31 +10:00
Alistair Leslie-Hughes
03b53697da Updated dinput-scancode patchset 2024-08-24 12:46:03 +10:00
Elizabeth Figura
c901884ac0 ntdll-WRITECOPY: Remove patch 0010.
This is a hack specifically meant for upstream Wine; it was never meant to apply to Wine-Staging.

This very patch set is supposed to be a more complete and holistic hack/implementation of the same logic.

This hack only works for CEF, and breaks the existing tests that are fixed by the rest of ntdll-WRITECOPY.
2024-08-22 19:20:23 -05:00
Elizabeth Figura
5fad8dd101 Rebase against 6a7bfbab10d653f6724e2917e0552515520e4fb3. 2024-08-22 19:07:19 -05:00
Elizabeth Figura
ae46f56f2c ntdll-WRITECOPY: Install existing signal handlers earlier instead of using a special early signal handler. 2024-08-22 18:49:16 -05:00
Alistair Leslie-Hughes
5eeb4b76d6 Updated vkd3d-latest patchset 2024-08-21 08:05:40 +10:00
Alistair Leslie-Hughes
b9a08f8300 Rebase against 6e15604c48acd63dd8095a4ce2fd011cb3be96db. 2024-08-21 07:52:15 +10:00
Alistair Leslie-Hughes
41367bc540 Updated vkd3d-latest patchset 2024-08-20 07:49:47 +10:00
Alistair Leslie-Hughes
e780e2e62d Rebase against ba66d9c71519176bd499eb846ed11fb0ea421118. 2024-08-20 07:43:11 +10:00
Alistair Leslie-Hughes
a90554bb04 Rebase against 16a6b0ad65e9b8cdbb68fc9125951483781ca616. 2024-08-16 08:26:55 +10:00
Alistair Leslie-Hughes
7104b9b6ba Rebase against 75f8de6bd41c945abe230e8fd1d8645f30b7667f. 2024-08-15 08:35:27 +10:00
Alistair Leslie-Hughes
51d8ac0717 Rebase against eef229cc1eb77c3236ab4e210a6a276b65173e39.
Fixes regression with latest odbc32.
2024-08-14 07:58:19 +10:00
Alistair Leslie-Hughes
4af1f11315 Rebase against d98f067294918aa5cfeadb576652dd8fd1757c38. 2024-08-13 11:58:33 +10:00
Elizabeth Figura
cd2cce28cc eventfd_synchronization: Fix compile warnings.
Why, GCC, did you think this was a good idea?
2024-08-12 16:55:29 -05:00
Elizabeth Figura
761b7f72d0 dinput-regression-fix: Remove patch.
This is not the correct fix for the regression, and the regression is not in fact a regression.
2024-08-12 16:50:26 -05:00
Alistair Leslie-Hughes
92374493ee Release v9.15 2024-08-11 15:10:36 +10:00
Alistair Leslie-Hughes
a713da9181 Added add printdlg-properties_btn patchset 2024-08-11 15:03:10 +10:00
Alistair Leslie-Hughes
75f3eede59 Added dinput-regression-fix patchset 2024-08-11 15:00:14 +10:00
Alistair Leslie-Hughes
a7f29f1236 Rebase against 9c69ccf8ef2995548ef5fee9d0b68f68dec5dd62.
Added two patches to fix upstream regression with ODBC32.
2024-08-10 14:50:18 +10:00
Alistair Leslie-Hughes
1143543d4a Updated vkd3d-latest patchset 2024-08-09 07:54:11 +10:00
Alistair Leslie-Hughes
4cfe8f056a Rebase against 7df297968a932437c5ac50c67376f05265179cca. 2024-08-09 07:53:43 +10:00
Alistair Leslie-Hughes
c23ee1bf3b Updated winemapi-user-xdg-mail patchset
Corrected TRACE message.
2024-08-08 06:17:31 +10:00
Alistair Leslie-Hughes
d2636c432f Rebase against a891fcf66751921cf81db294b09a696c6b6999b8. 2024-08-07 16:02:00 +10:00
Alistair Leslie-Hughes
7624463e7c Updated eventfd_synchronization patchset
Move #define _GNU_SOURCE to after the config.h
2024-08-01 07:03:21 +10:00
Alistair Leslie-Hughes
06d80381a4 Rebase against 1dfac2a252d0036c3bae08bf47f00582343a80fb. 2024-07-31 11:38:10 +10:00
Alistair Leslie-Hughes
a59a98678f Release v9.14 2024-07-29 07:45:51 +10:00
Alistair Leslie-Hughes
db14a7bed3 Remove odbc-remove-unixodbc patchset
odbc32-fixes has all the changes required to make ODBC v2 drivers work.
2024-07-29 07:43:13 +10:00
Alistair Leslie-Hughes
6883402dec Update wine URL 2024-07-27 11:51:06 +10:00
Alistair Leslie-Hughes
b98458cadc Updated ntdll-WRITECOPY patchset
Check return value pointer.
2024-07-27 08:00:00 +10:00
Alistair Leslie-Hughes
37551c99a2 Updated workflow wine respository 2024-07-26 09:43:55 +10:00
Alistair Leslie-Hughes
bdc041f704 Updated vkd3d-latest patchset 2024-07-26 09:41:57 +10:00
Alistair Leslie-Hughes
d4f4b330b8 Rebase against 0c1c8c295b14626c2cb3c2fac65e1f29b1ea874e. 2024-07-25 11:33:20 +10:00
Alistair Leslie-Hughes
9b107c62cb Updated odbc32-fixes patchset
Fix some bad logic
2024-07-21 09:57:39 +10:00
Alistair Leslie-Hughes
9eb00790f0 Updated odbc32-fixes patchset 2024-07-20 13:18:39 +10:00
Alistair Leslie-Hughes
82ccf59f15 Rebase against 8d259957a2470190e109b1175cf61f4d95427fce. 2024-07-20 12:43:58 +10:00
Alistair Leslie-Hughes
2c482721e3 Updated odbc32-fixes patchset
Small correction to version.
2024-07-19 07:42:36 +10:00
Alistair Leslie-Hughes
215e6efd27 Updated odbc32-fixes patchset
Reordered the Alloc/Free handle patches together.

Fixed an issue with the Driver patchset (Thanks Daniel Lehman)
2024-07-18 16:30:12 +10:00
Alistair Leslie-Hughes
05d08d31c0 Updated vkd3d-latest patchset 2024-07-18 10:07:39 +10:00
Alistair Leslie-Hughes
73441d6d9b Updated odbc32-fixes patchset
More updates to support ODBC 2.0.
2024-07-18 10:00:20 +10:00
Alistair Leslie-Hughes
39ad9d8625 Rebase against ca938c795c0c7a2fa11384414809d9a328e3e96f. 2024-07-18 09:59:41 +10:00
Alistair Leslie-Hughes
fe62b910f5 Rebase against 88a28aa5757ae74d9997b470d70216f10974247f. 2024-07-17 08:25:49 +10:00
Alistair Leslie-Hughes
1d529ee294 Updated odbc32-fixes patchset
Fixes when writing based of the column handle.  Just check if we have been set
seem enough for now.
2024-07-16 10:11:19 +10:00
Alistair Leslie-Hughes
67a860f344 Rebase against 8070ed27bc4bb8c9c43c20734d340b62b379fcfc. 2024-07-16 09:23:21 +10:00
Alistair Leslie-Hughes
6bab3a7617 Updated odbc32-fixes patchset
Update patch to match latest MR patch

Enable the patchset.
2024-07-16 08:58:13 +10:00
Alistair Leslie-Hughes
3c0f797ca6 Added dxgi_getFrameStatistics patchset 2024-07-15 10:06:14 +10:00
Alistair Leslie-Hughes
577974c563 Updated vkd3d-latest patchset
Squash to previous wine-staging release.
2024-07-15 10:04:37 +10:00
Alistair Leslie-Hughes
a442564f05 Release v9.13 2024-07-15 07:43:36 +10:00
Alistair Leslie-Hughes
ad13b6a9e1 Added odbc32-fixes patchset
This fixes issue with the current odcb32 for writing to database
and support for ODBC v2.0.

This is a replacement for odbc-remove-unixodbc as ODBC32 now supports both unixODBC and native drivers.
2024-07-15 07:21:29 +10:00
Alistair Leslie-Hughes
12fb6d73ff Updated vkd3d-latest patchset 2024-07-11 09:54:47 +10:00
Alistair Leslie-Hughes
1f498520be Rebase against c1d5cae54b80449308dd8f9aaa85a1a6a5bd2025. 2024-07-11 08:13:42 +10:00
Alistair Leslie-Hughes
d2c868d8c9 Rebase against 8179609faddee580621529f8b1fffba9a50fb650. 2024-07-10 11:24:56 +10:00
Alistair Leslie-Hughes
f58c6016bd Updated vkd3d-latest patchset 2024-07-09 09:33:03 +10:00
Elizabeth Figura
e479cad86f Rebase against 6e3dcf6c5877867b98b0d01b85206fba780c39c9. 2024-07-08 17:43:50 -05:00
Alistair Leslie-Hughes
4f00617d21 Rebase against 6f2466ea0c20245955d0d2b13b5162a1fe62815b. 2024-07-06 09:31:16 +10:00
Elizabeth Figura
0e802db66f Rebase against 797df8df394d81a165328f9ac6b4039253a78718. 2024-07-04 18:08:56 -05:00
Alistair Leslie-Hughes
0d4b9f2f62 Rebase against 17f052c36a414a05fcb6a6e67bd3aac824fbed3e. 2024-07-02 11:15:09 +10:00
Alistair Leslie-Hughes
d1f022f686 Updated gdi32-rotation patchset
Fixed compile error, passing incompatible types.
2024-07-02 08:03:33 +10:00
322 changed files with 13609 additions and 28311 deletions

View File

@@ -20,7 +20,6 @@ jobs:
bison \
gphoto2 \
gstreamer \
gcenx/wine/libinotify-kqueue \
mingw-w64 \
molten-vk \
sdl2
@@ -36,7 +35,7 @@ jobs:
mkdir $GITHUB_WORKSPACE/wine
cd wine
git init
git fetch git://source.winehq.org/git/wine.git $($GITHUB_WORKSPACE/staging/patchinstall.py --upstream-commit) --depth=1
git fetch https://gitlab.winehq.org/wine/wine.git $($GITHUB_WORKSPACE/staging/patchinstall.py --upstream-commit) --depth=1
git checkout $($GITHUB_WORKSPACE/staging/patchinstall.py --upstream-commit)
- name: Run patchinstall.py --all
@@ -44,10 +43,11 @@ jobs:
cd wine
$GITHUB_WORKSPACE/staging/patchinstall.py DESTDIR=. --all
- name: Configure wine64
- name: Configure wine
env:
LDFLAGS: "-Wl,-rpath,/opt/X11/lib"
# Avoid weird linker errors with Xcode 10 and later
# We need to tell the linker to add brew & Xquarts to the rpath stack.
LDFLAGS: "-Wl,-rpath,/usr/local/lib -Wl,-rpath,/opt/X11/lib"
# Use an older deployment target to avoid new dyld behaviors.
MACOSX_DEPLOYMENT_TARGET: "10.14"
run: |
cd $GITHUB_WORKSPACE/wine

View File

@@ -1,18 +1,18 @@
From f48fa2ff628c3262245593301a141dee31118fd4 Mon Sep 17 00:00:00 2001
From 3dc4a148d7c91afea8f589f47daca82c5c27b7c1 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] ntdll: Print a warning message specifying the wine-staging
branch name and version.
---
dlls/ntdll/loader.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
dlls/ntdll/loader.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 021f7941969..68cb4b25d85 100644
index 74eb1b7f500..95639558155 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -42,6 +42,7 @@ WINE_DECLARE_DEBUG_CHANNEL(relay);
@@ -43,6 +43,7 @@ WINE_DECLARE_DEBUG_CHANNEL(relay);
WINE_DECLARE_DEBUG_CHANNEL(snoop);
WINE_DECLARE_DEBUG_CHANNEL(loaddll);
WINE_DECLARE_DEBUG_CHANNEL(imports);
@@ -20,7 +20,7 @@ index 021f7941969..68cb4b25d85 100644
#ifdef _WIN64
#define DEFAULT_SECURITY_COOKIE_64 (((ULONGLONG)0x00002b99 << 32) | 0x2ddfa232)
@@ -3822,6 +3823,7 @@ void WINAPI LdrShutdownProcess(void)
@@ -3870,6 +3871,7 @@ void WINAPI LdrShutdownProcess(void)
process_detach();
}
@@ -28,7 +28,7 @@ index 021f7941969..68cb4b25d85 100644
/******************************************************************
* RtlExitUserProcess (NTDLL.@)
@@ -4244,6 +4246,9 @@ static void release_address_space(void)
@@ -4366,6 +4368,9 @@ static void release_address_space(void)
*/
void loader_init( CONTEXT *context, void **entry )
{
@@ -38,10 +38,13 @@ index 021f7941969..68cb4b25d85 100644
static int attach_done;
NTSTATUS status;
ULONG_PTR cookie, port = 0;
@@ -4317,6 +4322,16 @@ void loader_init( CONTEXT *context, void **entry )
if (NtCurrentTeb()->WowTebOffset) init_wow64( context );
@@ -4455,6 +4460,20 @@ void loader_init( CONTEXT *context, void **entry )
arm64ec_thread_init();
#endif
wm = get_modref( NtCurrentTeb()->Peb->ImageBaseAddress );
+ /* This hunk occasionally applies in the wrong place;
+ * add a comment here to try to prevent that. */
+ }
+ RtlInitUnicodeString( &staging_event_string, L"\\__wine_staging_warn_event" );
+ InitializeObjectAttributes( &staging_event_attr, &staging_event_string, OBJ_OPENIF, NULL, NULL );
+ if (NtCreateEvent( &staging_event, EVENT_ALL_ACCESS, &staging_event_attr, NotificationEvent, FALSE ) == STATUS_SUCCESS)
@@ -50,11 +53,12 @@ index 021f7941969..68cb4b25d85 100644
+ FIXME_(winediag)("Please mention your exact version when filing bug reports on winehq.org.\n");
+ }
+ else
+ {
+ WARN_(winediag)("wine-staging %s is a testing version containing experimental patches.\n", wine_get_version());
+
RtlAcquirePebLock();
InsertHeadList( &tls_links, &NtCurrentTeb()->TlsLinks );
RtlReleasePebLock();
+ NtClose( staging_event );
}
NtCurrentTeb()->FlsSlots = fls_alloc_data();
--
2.43.0
2.47.2

View File

@@ -1,4 +1,4 @@
From 8aa6fb73e3142d86ba354c204313b8a74a5fa43d Mon Sep 17 00:00:00 2001
From fb422ad56e3549e81d3b60afc77b0a0c6a56f672 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 2 Oct 2014 19:53:46 +0200
Subject: [PATCH] winelib: Append '(Staging)' at the end of the version string.
@@ -8,10 +8,10 @@ Subject: [PATCH] winelib: Append '(Staging)' at the end of the version string.
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index f86a5decb07..3d7f9cc96e6 100644
index b4ede761391..ea6bd2fae3c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3910,7 +3910,7 @@ dnl Rules for generated source files
@@ -3728,7 +3728,7 @@ dnl Rules for generated source files
WINE_APPEND_RULE(
[dlls/ntdll/unix/version.c: dummy
@@ -19,7 +19,7 @@ index f86a5decb07..3d7f9cc96e6 100644
+ @version=\`(GIT_DIR=${wine_srcdir}.git git describe HEAD 2>/dev/null || echo \"wine-\$(PACKAGE_VERSION)\") | sed -n -e '\$\$s/\(.*\)/const char wine_build[[]] = \"\\1 (Staging)\";/p'\` && (echo \$\$version | cmp -s - \$[@]) || echo \$\$version >\$[@] || (rm -f \$[@] && exit 1)
programs/winetest/build.rc: dummy
@build=\"STRINGTABLE { 1 \\\"\`GIT_DIR=${wine_srcdir}.git git rev-parse HEAD 2>/dev/null\`\\\" }\" && (echo \$\$build | cmp -s - \$[@]) || echo \$\$build >\$[@] || (rm -f \$[@] && exit 1)
programs/winetest/build.nfo:
dlls/wineandroid.drv/wine-debug.apk: dlls/wineandroid.drv/build.gradle ${wine_srcdir}dlls/wineandroid.drv/AndroidManifest.xml ${wine_srcdir}dlls/wineandroid.drv/WineActivity.java ${wine_srcdir}dlls/wineandroid.drv/wine.svg
--
2.33.0
2.47.2

View File

@@ -1,197 +0,0 @@
From 1e7b6a812b248a8344076a402fc97bd60da495d1 Mon Sep 17 00:00:00 2001
From: Jason Edmeades <us@edmeades.me.uk>
Date: Tue, 16 Jul 2019 13:49:18 +1000
Subject: [PATCH] cmd: Support for launching programs based on file association
cmd already handles exe, cmd, bat etc but if you run a file with another extension,
then use the associations set in the registry (for example via ftype / assoc) to
launch a program. This enables you to run test.txt and notepad to pop up, or
fred.msi for msiexec to be launched.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=18154
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=36646
---
programs/cmd/wcmdmain.c | 139 +++++++++++++++++++++++++++++-----------
1 file changed, 102 insertions(+), 37 deletions(-)
diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c
index 12d3db1b012..0f222f3640b 100644
--- a/programs/cmd/wcmdmain.c
+++ b/programs/cmd/wcmdmain.c
@@ -1494,8 +1494,10 @@ void WCMD_run_program (WCHAR *command, BOOL called)
/* 1. If extension supplied, see if that file exists */
if (extensionsupplied) {
- if (GetFileAttributesW(thisDir) != INVALID_FILE_ATTRIBUTES) {
+ DWORD attribs = GetFileAttributesW(thisDir);
+ if (attribs != INVALID_FILE_ATTRIBUTES && !(attribs&FILE_ATTRIBUTE_DIRECTORY)) {
found = TRUE;
+ WINE_TRACE("Found as file with extension as '%s'\n", wine_dbgstr_w(thisDir));
}
}
@@ -1525,6 +1527,7 @@ void WCMD_run_program (WCHAR *command, BOOL called)
}
if (GetFileAttributesW(thisDir) != INVALID_FILE_ATTRIBUTES) {
+ WINE_TRACE("Found via search and pathext as '%s'\n", wine_dbgstr_w(thisDir));
found = TRUE;
thisExt = NULL;
}
@@ -1546,6 +1549,7 @@ void WCMD_run_program (WCHAR *command, BOOL called)
/* Special case BAT and CMD */
if (ext && (!wcsicmp(ext, L".bat") || !wcsicmp(ext, L".cmd"))) {
BOOL oldinteractive = interactive;
+ WINE_TRACE("Calling batch program\n");
interactive = FALSE;
WCMD_batch(thisDir, command, NULL, INVALID_HANDLE_VALUE);
interactive = oldinteractive;
@@ -1554,48 +1558,109 @@ void WCMD_run_program (WCHAR *command, BOOL called)
context->skip_rest = TRUE;
}
return;
- } else {
- DWORD exit_code;
- /* thisDir contains the file to be launched, but with what?
- eg. a.exe will require a.exe to be launched, a.html may be iexplore */
- hinst = FindExecutableW (thisDir, NULL, temp);
- if ((INT_PTR)hinst < 32)
- console = 0;
- else
- console = SHGetFileInfoW(temp, 0, &psfi, sizeof(psfi), SHGFI_EXETYPE);
-
- ZeroMemory (&st, sizeof(STARTUPINFOW));
- st.cb = sizeof(STARTUPINFOW);
- init_msvcrt_io_block(&st);
-
- /* Launch the process and if a CUI wait on it to complete
- Note: Launching internal wine processes cannot specify a full path to exe */
- status = CreateProcessW(thisDir,
- command, NULL, NULL, TRUE, 0, NULL, NULL, &st, &pe);
- free(st.lpReserved2);
- if ((opt_c || opt_k) && !opt_s && !status
- && GetLastError()==ERROR_FILE_NOT_FOUND && command[0]=='\"') {
- /* strip first and last quote WCHARacters and try again */
- WCMD_strip_quotes(command);
- opt_s = TRUE;
- WCMD_run_program(command, called);
+ }
+
+ /* Calculate what program will be launched, and whether it is a
+ console application or not. Note the program may be different
+ from the parameter (eg running a .txt file will launch notepad.exe) */
+ hinst = FindExecutableW (thisDir, NULL, temp);
+ if ((INT_PTR)hinst < 32)
+ console = 0; /* Assume not console app by default */
+ else
+ console = SHGetFileInfoW(temp, 0, &psfi, sizeof(psfi), SHGFI_EXETYPE);
+
+
+ /* If it is not a .com or .exe, try to launch through ShellExecuteExW
+ which takes into account the association for the extension. */
+ if (ext && (wcsicmp(ext, L".exe") && wcsicmp(ext, L".com"))) {
+
+ SHELLEXECUTEINFOW shexw;
+ BOOL rc;
+ WCHAR *rawarg;
+
+ WCMD_parameter(command, 1, &rawarg, FALSE, TRUE);
+ WINE_TRACE("Launching via ShellExecuteEx\n");
+ memset(&shexw, 0x00, sizeof(shexw));
+ shexw.cbSize = sizeof(SHELLEXECUTEINFOW);
+ shexw.fMask = SEE_MASK_NO_CONSOLE | /* Run in same console as currently using */
+ SEE_MASK_NOCLOSEPROCESS; /* We need a process handle to possibly wait on */
+ shexw.lpFile = thisDir;
+ shexw.lpParameters = rawarg;
+ shexw.nShow = SW_SHOWNORMAL;
+
+ /* Try to launch the binary or its associated program */
+ rc = ShellExecuteExW(&shexw);
+
+ if (rc && (INT_PTR)shexw.hInstApp >= 32) {
+
+ WINE_TRACE("Successfully launched\n");
+
+ /* It worked... Always wait when non-interactive (cmd /c or in
+ batch program), or for console applications */
+ if (!interactive || (console && !HIWORD(console))) {
+ WINE_TRACE("Waiting for process to end\n");
+ WaitForSingleObject (shexw.hProcess, INFINITE);
+ }
+
+ GetExitCodeProcess (shexw.hProcess, &errorlevel);
+ if (errorlevel == STILL_ACTIVE) {
+ WINE_TRACE("Process still running, but returning anyway\n");
+ errorlevel = 0;
+ } else {
+ WINE_TRACE("Process ended, errorlevel %ld\n", errorlevel);
+ }
+
+ CloseHandle(pe.hProcess);
return;
+
}
+ }
- if (!status)
- break;
+ /* If its a .exe or .com or the shellexecute failed due to no association,
+ CreateProcess directly */
+ ZeroMemory (&st, sizeof(STARTUPINFOW));
+ st.cb = sizeof(STARTUPINFOW);
+ init_msvcrt_io_block(&st);
+
+ /* Launch the process and if a CUI wait on it to complete
+ Note: Launching internal wine processes cannot specify a full path to exe */
+ WINE_TRACE("Launching via CreateProcess\n");
+ status = CreateProcessW(thisDir,
+ command, NULL, NULL, TRUE, 0, NULL, NULL, &st, &pe);
+ free(st.lpReserved2);
+ if ((opt_c || opt_k) && !opt_s && !status
+ && GetLastError()==ERROR_FILE_NOT_FOUND && command[0]=='\"') {
+ /* strip first and last quote WCHARacters and try again */
+ WCMD_strip_quotes(command);
+ opt_s = TRUE;
+ WCMD_run_program(command, called);
+ return;
+ }
- /* Always wait when non-interactive (cmd /c or in batch program),
- or for console applications */
- if (!interactive || (console && !HIWORD(console)))
- WaitForSingleObject (pe.hProcess, INFINITE);
- GetExitCodeProcess (pe.hProcess, &exit_code);
- errorlevel = (exit_code == STILL_ACTIVE) ? NO_ERROR : exit_code;
+ if (!status) {
+ WINE_TRACE("Failed to launch via CreateProcess, rc %d (%ld)\n",
+ status, GetLastError());
+ break;
+ }
- CloseHandle(pe.hProcess);
- CloseHandle(pe.hThread);
- return;
+ /* Always wait when non-interactive (cmd /c or in batch program),
+ or for console applications */
+ if (!interactive || (console && !HIWORD(console))) {
+ WINE_TRACE("Waiting for process to end\n");
+ WaitForSingleObject (pe.hProcess, INFINITE);
}
+
+ GetExitCodeProcess (pe.hProcess, &errorlevel);
+ if (errorlevel == STILL_ACTIVE) {
+ WINE_TRACE("Process still running, but returning anyway\n");
+ errorlevel = 0;
+ } else {
+ WINE_TRACE("Process ended, errorlevel %ld\n", errorlevel);
+ }
+
+ CloseHandle(pe.hProcess);
+ CloseHandle(pe.hThread);
+ return;
}
}
--
2.43.0

View File

@@ -1,79 +0,0 @@
From 2f9fa2d492521d297eb87e4b6709d8349818b9c6 Mon Sep 17 00:00:00 2001
From: Jason Edmeades <us@edmeades.me.uk>
Date: Tue, 16 Jul 2019 13:51:58 +1000
Subject: [PATCH] cmd: ftype failed to clear file associations
If a file association was set (e.g. ftype fred=xxx), ftype fred= needs to clear it,
but previously it failed to do so.
---
programs/cmd/builtins.c | 6 +++---
programs/cmd/tests/test_builtins.cmd | 9 +++++++++
programs/cmd/tests/test_builtins.cmd.exp | 5 ++++-
3 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c
index 1c39c35ca78..f23f9ef2046 100644
--- a/programs/cmd/builtins.c
+++ b/programs/cmd/builtins.c
@@ -4101,11 +4101,11 @@ void WCMD_assoc (const WCHAR *args, BOOL assoc) {
/* If nothing after '=' then clear value - only valid for ASSOC */
if (*newValue == 0x00) {
- if (assoc) rc = RegDeleteKeyW(key, args);
- if (assoc && rc == ERROR_SUCCESS) {
+ rc = RegDeleteTreeW(key, args);
+ if (rc == ERROR_SUCCESS) {
WINE_TRACE("HKCR Key '%s' deleted\n", wine_dbgstr_w(args));
- } else if (assoc && rc != ERROR_FILE_NOT_FOUND) {
+ } else if (rc != ERROR_FILE_NOT_FOUND) {
WCMD_print_error();
errorlevel = ERROR_FILE_NOT_FOUND;
diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd
index d5397560bc6..14666c85cac 100644
--- a/programs/cmd/tests/test_builtins.cmd
+++ b/programs/cmd/tests/test_builtins.cmd
@@ -2670,6 +2670,12 @@ echo echo +++>> tmp.cmd
echo ftype footype>> tmp.cmd
cmd /c tmp.cmd
+echo --- testing association
+ftype footype=cmd.exe /c "echo '%%1'"
+echo dummy>test.foo
+test.foo
+del test.foo
+
echo --- resetting association
assoc .foo=
@@ -2701,6 +2707,9 @@ echo .foo=footype
echo footype=foo_opencmd
echo +++
echo footype=foo_opencmd
+echo --- testing association
+echo footype=cmd.exe /c "echo '%%1'"
+echo Skipped as not enough permissions
echo --- resetting association
echo original value
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp
index 0102c3bcbc5..a6d97bc8248 100644
--- a/programs/cmd/tests/test_builtins.cmd.exp
+++ b/programs/cmd/tests/test_builtins.cmd.exp
@@ -1549,8 +1549,11 @@ footype=foo_opencmd
footype=foo_opencmd
+++
footype=foo_opencmd
+--- testing association
+footype=cmd.exe /c "echo '%1'"
+'@drive@@path@foobar\test.foo'@or_broken@Skipped as not enough permissions
--- resetting association
-@todo_wine@original value@or_broken@buggyXP@or_broken@!WINE_FOO!
+original value@or_broken@buggyXP@or_broken@!WINE_FOO!
------------ Testing CALL ------------
--- external script
foo@space@
--
2.43.0

View File

@@ -1,55 +0,0 @@
From bbd077ad0ba63001b1a785c2b3c740b5b01d3469 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 18 Jun 2024 09:14:56 +1000
Subject: [PATCH] cmd: Changed errorlevel type to DWORD
This stop the invalid type being passed to GetExitCodeProcess which is being reported
as an error with clang/mingw in the latest version.
---
programs/cmd/builtins.c | 2 +-
programs/cmd/wcmd.h | 2 +-
programs/cmd/wcmdmain.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c
index f98ac902eba..147f94ac4bb 100644
--- a/programs/cmd/builtins.c
+++ b/programs/cmd/builtins.c
@@ -440,7 +440,7 @@ void WCMD_choice (const WCHAR * args) {
SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), oldmode);
errorlevel = (ptr - opt_c) + 1;
- TRACE("answer: %d\n", errorlevel);
+ TRACE("answer: %ld\n", errorlevel);
free(my_command);
return;
}
diff --git a/programs/cmd/wcmd.h b/programs/cmd/wcmd.h
index dde5d1e12ec..f202e6ef9e4 100644
--- a/programs/cmd/wcmd.h
+++ b/programs/cmd/wcmd.h
@@ -306,7 +306,7 @@ void WCMD_set_for_loop_variable(int var_idx, const WCHAR *value);
* variables and batch parameters substitution already done.
*/
extern WCHAR quals[MAXSTRING], param1[MAXSTRING], param2[MAXSTRING];
-extern int errorlevel;
+extern DWORD errorlevel;
extern BATCH_CONTEXT *context;
extern FOR_CONTEXT *forloopcontext;
extern BOOL delayedsubst;
diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c
index 702c3657a2b..0f8bdd3df14 100644
--- a/programs/cmd/wcmdmain.c
+++ b/programs/cmd/wcmdmain.c
@@ -36,7 +36,7 @@ extern const WCHAR inbuilt[][10];
extern struct env_stack *pushd_directories;
BATCH_CONTEXT *context = NULL;
-int errorlevel;
+DWORD errorlevel;
WCHAR quals[MAXSTRING], param1[MAXSTRING], param2[MAXSTRING];
BOOL interactive;
FOR_CONTEXT *forloopcontext; /* The 'for' loop context */
--
2.43.0

View File

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

View File

@@ -1,4 +1,4 @@
From f9f5002e4ce6417dd196d53b50c51a3b224015d3 Mon Sep 17 00:00:00 2001
From 9cf09446b0bf5da7988d1ba30c24d392c7a01f4b Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 12 Nov 2019 18:13:20 +0800
Subject: [PATCH] comctl32: Bump version to 6.0.
@@ -8,39 +8,25 @@ and refuses to run, changing DLL version to 6.0 makes it run.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/comctl32/comctl32.h | 2 +-
dlls/comctl32/comctl32.rc | 2 +-
include/commctrl.h | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/comctl32/comctl32.h b/dlls/comctl32/comctl32.h
index 51f4337add2..3fe8905abea 100644
--- a/dlls/comctl32/comctl32.h
+++ b/dlls/comctl32/comctl32.h
@@ -194,7 +194,7 @@ BOOL Str_SetPtrAtoW(LPWSTR *lppDest, LPCSTR lpSrc);
BOOL Str_SetPtrWtoA(LPSTR *lppDest, LPCWSTR lpSrc);
BOOL imagelist_has_alpha(HIMAGELIST, UINT);
-#define COMCTL32_VERSION_MINOR 81
+#define COMCTL32_VERSION_MINOR 0
/* Our internal stack structure of the window procedures to subclass */
typedef struct _SUBCLASSPROCS {
diff --git a/dlls/comctl32/comctl32.rc b/dlls/comctl32/comctl32.rc
index c9aa1ba6253..be6e2425193 100644
index 2c62dbe2720..473de211c67 100644
--- a/dlls/comctl32/comctl32.rc
+++ b/dlls/comctl32/comctl32.rc
@@ -114,7 +114,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
@@ -113,7 +113,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#define WINE_FILEDESCRIPTION_STR "Wine Common Controls"
#define WINE_FILENAME_STR "comctl32.dll"
#define WINE_FILEVERSION COMCTL32_VERSION, COMCTL32_VERSION_MINOR, 4704, 1100
-#define WINE_FILEVERSION_STR "5.81"
+#define WINE_FILEVERSION_STR "6.00.4704.1100"
#define WINE_PRODUCTVERSION WINE_FILEVERSION
#define WINE_PRODUCTVERSION_STR WINE_FILEVERSION_STR
-#define WINE_FILEVERSION COMCTL32_VERSION,81,4704,1100
+#define WINE_FILEVERSION COMCTL32_VERSION,0,4704,1100
#include "wine/wine_common_ver.rc"
diff --git a/include/commctrl.h b/include/commctrl.h
index a54de13d8b2..e0b0e22d4dc 100644
index 235704a76dd..5a67c1284a0 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -59,7 +59,7 @@ enum _LI_METRIC
@@ -53,5 +39,5 @@ index a54de13d8b2..e0b0e22d4dc 100644
#define ICC_LISTVIEW_CLASSES 0x00000001 /* listview, header */
#define ICC_TREEVIEW_CLASSES 0x00000002 /* treeview, tooltips */
--
2.40.1
2.47.2

View File

@@ -0,0 +1,24 @@
From 8a9c55d23750ca2650eba518e46549d8b5d94b43 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 11 Jul 2025 14:11:36 +1000
Subject: [PATCH] comctl32: Animate support AVI msvc codex
---
dlls/comctl32/animate.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/comctl32/animate.c b/dlls/comctl32/animate.c
index 46e1e37b72d..717422c784f 100644
--- a/dlls/comctl32/animate.c
+++ b/dlls/comctl32/animate.c
@@ -644,6 +644,7 @@ static BOOL ANIMATE_GetAviCodec(ANIMATE_INFO *infoPtr)
/* check uncompressed AVI */
if ((infoPtr->ash.fccHandler == mmioFOURCC('D', 'I', 'B', ' ')) ||
(infoPtr->ash.fccHandler == mmioFOURCC('R', 'L', 'E', ' ')) ||
+ (infoPtr->ash.fccHandler == mmioFOURCC('m', 's', 'v', 'c')) ||
(infoPtr->ash.fccHandler == mmioFOURCC(0, 0, 0, 0)))
{
infoPtr->hic = 0;
--
2.47.2

View File

@@ -0,0 +1,24 @@
From b8cce6663a956f8fb8f07700672e378b44b1af1c Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 11 Jul 2025 15:21:07 +1000
Subject: [PATCH] comctl32: Animate to support RLE8 codex
---
dlls/comctl32/animate.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/comctl32/animate.c b/dlls/comctl32/animate.c
index 717422c784f..ca4fae85a11 100644
--- a/dlls/comctl32/animate.c
+++ b/dlls/comctl32/animate.c
@@ -645,6 +645,7 @@ static BOOL ANIMATE_GetAviCodec(ANIMATE_INFO *infoPtr)
if ((infoPtr->ash.fccHandler == mmioFOURCC('D', 'I', 'B', ' ')) ||
(infoPtr->ash.fccHandler == mmioFOURCC('R', 'L', 'E', ' ')) ||
(infoPtr->ash.fccHandler == mmioFOURCC('m', 's', 'v', 'c')) ||
+ (infoPtr->ash.fccHandler == mmioFOURCC('m', 'r', 'l', 'e')) ||
(infoPtr->ash.fccHandler == mmioFOURCC(0, 0, 0, 0)))
{
infoPtr->hic = 0;
--
2.47.2

View File

@@ -0,0 +1,119 @@
From 2ef9715ae9fffa0a6d7cdf0dc04e8de7eb245ce4 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 11 Jul 2025 18:07:39 +1000
Subject: [PATCH] comctl32: Animate control doesn't support compressed AVI
The Animate control only supporst uncompress AVI with the excpetion of RLE8.
---
dlls/comctl32/animate.c | 64 ++---------------------------------------
1 file changed, 3 insertions(+), 61 deletions(-)
diff --git a/dlls/comctl32/animate.c b/dlls/comctl32/animate.c
index ca4fae85a11..74516db81f5 100644
--- a/dlls/comctl32/animate.c
+++ b/dlls/comctl32/animate.c
@@ -39,14 +39,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(animate);
-static struct {
- HMODULE hModule;
- HIC (WINAPI *fnICOpen)(DWORD, DWORD, UINT);
- LRESULT (WINAPI *fnICClose)(HIC);
- LRESULT (WINAPI *fnICSendMessage)(HIC, UINT, DWORD_PTR, DWORD_PTR);
- DWORD (WINAPIV *fnICDecompress)(HIC,DWORD,LPBITMAPINFOHEADER,LPVOID,LPBITMAPINFOHEADER,LPVOID);
-} fnIC;
-
typedef struct
{
/* reference to input stream (file or resource) */
@@ -189,11 +181,6 @@ static void ANIMATE_Free(ANIMATE_INFO *infoPtr)
}
Free (infoPtr->lpIndex);
infoPtr->lpIndex = NULL;
- if (infoPtr->hic)
- {
- fnIC.fnICClose(infoPtr->hic);
- infoPtr->hic = 0;
- }
Free (infoPtr->inbih);
infoPtr->inbih = NULL;
Free (infoPtr->outbih);
@@ -342,13 +329,6 @@ static BOOL ANIMATE_DrawFrame(ANIMATE_INFO *infoPtr, HDC hDC)
mmioSeek(infoPtr->hMMio, infoPtr->lpIndex[infoPtr->currFrame], SEEK_SET);
mmioRead(infoPtr->hMMio, infoPtr->indata, infoPtr->ash.dwSuggestedBufferSize);
- if (infoPtr->hic &&
- fnIC.fnICDecompress(infoPtr->hic, 0, infoPtr->inbih, infoPtr->indata,
- infoPtr->outbih, infoPtr->outdata) != ICERR_OK) {
- WARN("Decompression error\n");
- return FALSE;
- }
-
ANIMATE_PaintFrame(infoPtr, hDC);
if (infoPtr->currFrame++ >= infoPtr->nToFrame) {
@@ -649,39 +629,12 @@ static BOOL ANIMATE_GetAviCodec(ANIMATE_INFO *infoPtr)
(infoPtr->ash.fccHandler == mmioFOURCC(0, 0, 0, 0)))
{
infoPtr->hic = 0;
- return TRUE;
- }
-
- /* try to get a decompressor for that type */
- infoPtr->hic = fnIC.fnICOpen(ICTYPE_VIDEO, infoPtr->ash.fccHandler, ICMODE_DECOMPRESS);
- if (!infoPtr->hic) {
- WARN("Can't load codec for the file\n");
- return FALSE;
- }
-
- outSize = fnIC.fnICSendMessage(infoPtr->hic, ICM_DECOMPRESS_GET_FORMAT,
- (DWORD_PTR)infoPtr->inbih, 0L);
-
- if (!(infoPtr->outbih = Alloc(outSize)))
- return FALSE;
-
- if (fnIC.fnICSendMessage(infoPtr->hic, ICM_DECOMPRESS_GET_FORMAT,
- (DWORD_PTR)infoPtr->inbih, (DWORD_PTR)infoPtr->outbih) != ICERR_OK)
- {
- WARN("Can't get output BIH\n");
- return FALSE;
+ return TRUE;
}
- if (!(infoPtr->outdata = Alloc(infoPtr->outbih->biSizeImage)))
- return FALSE;
+ FIXME("Unsupported %s\n", debugstr_fourcc(infoPtr->ash.fccHandler));
- if (fnIC.fnICSendMessage(infoPtr->hic, ICM_DECOMPRESS_BEGIN,
- (DWORD_PTR)infoPtr->inbih, (DWORD_PTR)infoPtr->outbih) != ICERR_OK) {
- WARN("Can't begin decompression\n");
- return FALSE;
- }
-
- return TRUE;
+ return FALSE;
}
@@ -790,17 +743,6 @@ static BOOL ANIMATE_Create(HWND hWnd, const CREATESTRUCTW *lpcs)
{
ANIMATE_INFO *infoPtr;
- if (!fnIC.hModule)
- {
- fnIC.hModule = LoadLibraryW(L"msvfw32.dll");
- if (!fnIC.hModule) return FALSE;
-
- fnIC.fnICOpen = (void*)GetProcAddress(fnIC.hModule, "ICOpen");
- fnIC.fnICClose = (void*)GetProcAddress(fnIC.hModule, "ICClose");
- fnIC.fnICSendMessage = (void*)GetProcAddress(fnIC.hModule, "ICSendMessage");
- fnIC.fnICDecompress = (void*)GetProcAddress(fnIC.hModule, "ICDecompress");
- }
-
/* allocate memory for info structure */
infoPtr = Alloc(sizeof(*infoPtr));
if (!infoPtr) return FALSE;
--
2.47.2

View File

@@ -0,0 +1,2 @@
Fixes: [52278] comctl32: Animate support AVI msvc codex.

View File

@@ -1,231 +0,0 @@
From e6c1c1fe3fe2f4fe7d3e421b94d925c40063af22 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Fri, 5 Jul 2019 13:20:23 +0800
Subject: [PATCH] cryptext: Implement CryptExtOpenCER.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
configure | 1 +
configure.ac | 1 +
dlls/cryptext/Makefile.in | 3 +-
dlls/cryptext/cryptext.spec | 4 +--
dlls/cryptext/cryptext_main.c | 64 +++++++++++++++++++++++++++++++++
dlls/cryptext/tests/Makefile.in | 4 +++
dlls/cryptext/tests/cryptext.c | 61 +++++++++++++++++++++++++++++++
7 files changed, 135 insertions(+), 3 deletions(-)
create mode 100644 dlls/cryptext/tests/Makefile.in
create mode 100644 dlls/cryptext/tests/cryptext.c
diff --git a/configure b/configure
index ca6e87d4740..7033499399f 100755
--- a/configure
+++ b/configure
@@ -21660,6 +21660,7 @@ wine_fn_config_makefile dlls/crypt32/tests enable_tests
wine_fn_config_makefile dlls/cryptdlg enable_cryptdlg
wine_fn_config_makefile dlls/cryptdll enable_cryptdll
wine_fn_config_makefile dlls/cryptext enable_cryptext
+wine_fn_config_makefile dlls/cryptext/tests enable_tests
wine_fn_config_makefile dlls/cryptnet enable_cryptnet
wine_fn_config_makefile dlls/cryptnet/tests enable_tests
wine_fn_config_makefile dlls/cryptowinrt enable_cryptowinrt
diff --git a/configure.ac b/configure.ac
index cba55126869..57064a05fe5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2477,6 +2477,7 @@ WINE_CONFIG_MAKEFILE(dlls/crypt32/tests)
WINE_CONFIG_MAKEFILE(dlls/cryptdlg)
WINE_CONFIG_MAKEFILE(dlls/cryptdll)
WINE_CONFIG_MAKEFILE(dlls/cryptext)
+WINE_CONFIG_MAKEFILE(dlls/cryptext/tests)
WINE_CONFIG_MAKEFILE(dlls/cryptnet)
WINE_CONFIG_MAKEFILE(dlls/cryptnet/tests)
WINE_CONFIG_MAKEFILE(dlls/cryptowinrt)
diff --git a/dlls/cryptext/Makefile.in b/dlls/cryptext/Makefile.in
index 5598bfb78e0..acda4e4ac6d 100644
--- a/dlls/cryptext/Makefile.in
+++ b/dlls/cryptext/Makefile.in
@@ -1,4 +1,5 @@
-MODULE = cryptext.dll
+MODULE = cryptext.dll
+IMPORTS = crypt32 cryptui user32
EXTRADLLFLAGS = -Wb,--prefer-native
diff --git a/dlls/cryptext/cryptext.spec b/dlls/cryptext/cryptext.spec
index ee3e155f457..24b4794c198 100644
--- a/dlls/cryptext/cryptext.spec
+++ b/dlls/cryptext/cryptext.spec
@@ -12,8 +12,8 @@
@ stub CryptExtAddSPCW
@ stub CryptExtOpenCAT
@ stub CryptExtOpenCATW
-@ stub CryptExtOpenCER
-@ stub CryptExtOpenCERW
+@ stdcall CryptExtOpenCER(long ptr str long)
+@ stdcall CryptExtOpenCERW(long ptr wstr long)
@ stub CryptExtOpenCRL
@ stub CryptExtOpenCRLW
@ stub CryptExtOpenCTL
diff --git a/dlls/cryptext/cryptext_main.c b/dlls/cryptext/cryptext_main.c
index 537ba66cd3b..a4314518eac 100644
--- a/dlls/cryptext/cryptext_main.c
+++ b/dlls/cryptext/cryptext_main.c
@@ -22,10 +22,29 @@
#include "windef.h"
#include "winbase.h"
+#include "winnls.h"
+#include "wincrypt.h"
+#include "winuser.h"
+#include "cryptuiapi.h"
+
+#include "wine/heap.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(cryptext);
+static WCHAR *heap_strdupAtoW(const char *str)
+{
+ WCHAR *ret;
+ INT len;
+
+ if (!str) return NULL;
+ len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
+ ret = heap_alloc(len * sizeof(WCHAR));
+ if (ret)
+ MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len);
+ return ret;
+}
+
/***********************************************************************
* CryptExtAddPFX (CRYPTEXT.@)
*/
@@ -43,3 +62,48 @@ HRESULT WINAPI CryptExtAddPFXW(LPCWSTR filename)
FIXME("stub: %s\n", debugstr_w(filename));
return E_NOTIMPL;
}
+
+/***********************************************************************
+ * CryptExtOpenCERW (CRYPTEXT.@)
+ */
+HRESULT WINAPI CryptExtOpenCERW(HWND hwnd, HINSTANCE hinst, LPCWSTR filename, DWORD showcmd)
+{
+ PCCERT_CONTEXT ctx;
+ CRYPTUI_VIEWCERTIFICATE_STRUCTW info;
+
+ TRACE("(%p, %p, %s, %lu)\n", hwnd, hinst, debugstr_w(filename), showcmd);
+
+ if (!CryptQueryObject(CERT_QUERY_OBJECT_FILE, filename, CERT_QUERY_CONTENT_FLAG_CERT,
+ CERT_QUERY_FORMAT_FLAG_ALL, 0, NULL, NULL, NULL, NULL, NULL,
+ (const void **)&ctx))
+ {
+ /* FIXME: move to the resources */
+ static const WCHAR msg[] = {'T','h','i','s',' ','i','s',' ','n','o','t',' ','a',' ','v','a','l','i','d',' ','c','e','r','t','i','f','i','c','a','t','e',0};
+ MessageBoxW(NULL, msg, filename, MB_OK | MB_ICONERROR);
+ return S_OK; /* according to the tests */
+ }
+
+ memset(&info, 0, sizeof(info));
+ info.dwSize = sizeof(info);
+ info.pCertContext = ctx;
+ CryptUIDlgViewCertificateW(&info, NULL);
+ CertFreeCertificateContext(ctx);
+
+ return S_OK;
+}
+
+/***********************************************************************
+ * CryptExtOpenCER (CRYPTEXT.@)
+ */
+HRESULT WINAPI CryptExtOpenCER(HWND hwnd, HINSTANCE hinst, LPCSTR filename, DWORD showcmd)
+{
+ HRESULT hr;
+ LPWSTR filenameW;
+
+ TRACE("(%p, %p, %s, %lu)\n", hwnd, hinst, debugstr_a(filename), showcmd);
+
+ filenameW = heap_strdupAtoW(filename);
+ hr = CryptExtOpenCERW(hwnd, hinst, filenameW, showcmd);
+ heap_free(filenameW);
+ return hr;
+}
diff --git a/dlls/cryptext/tests/Makefile.in b/dlls/cryptext/tests/Makefile.in
new file mode 100644
index 00000000000..c3f4551fc00
--- /dev/null
+++ b/dlls/cryptext/tests/Makefile.in
@@ -0,0 +1,4 @@
+TESTDLL = cryptext.dll
+
+SOURCES = \
+ cryptext.c
diff --git a/dlls/cryptext/tests/cryptext.c b/dlls/cryptext/tests/cryptext.c
new file mode 100644
index 00000000000..ab1007dbd82
--- /dev/null
+++ b/dlls/cryptext/tests/cryptext.c
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2019 Dmitry Timoshkov
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <stdarg.h>
+#include <assert.h>
+#include <windef.h>
+#include <winbase.h>
+#include <winuser.h>
+#include <winerror.h>
+
+#include "wine/test.h"
+
+static HRESULT (WINAPI *pCryptExtOpenCER)(HWND,HINSTANCE,LPCSTR,DWORD);
+
+static void test_CryptExtOpenCER(void)
+{
+ HRESULT hr;
+
+ if (!pCryptExtOpenCER)
+ {
+ win_skip("CryptExtOpenCER is not available on this platform\n");
+ return;
+ }
+
+ if (!winetest_interactive)
+ {
+ skip("CryptExtOpenCER test needs user interaction\n");
+ return;
+ }
+
+ SetLastError(0xdeadbeef);
+ hr = pCryptExtOpenCER(0, 0, "dead.beef", SW_HIDE);
+ ok(hr == S_OK, "got %#lx\n", hr);
+
+ hr = pCryptExtOpenCER(0, 0, "VeriSign Class 3 Public Primary Certification Authority - G4.txt", SW_SHOW);
+ ok(hr == S_OK, "got %#lx\n", hr);
+}
+
+START_TEST(cryptext)
+{
+ HMODULE hmod = LoadLibraryA("cryptext.dll");
+
+ pCryptExtOpenCER = (void *)GetProcAddress(hmod, "CryptExtOpenCER");
+
+ test_CryptExtOpenCER();
+}
--
2.43.0

View File

@@ -1,2 +0,0 @@
# Taken from the mailing list - July 2019.
Fixes: cryptext: Implement CryptExtOpenCER.

View File

@@ -0,0 +1,267 @@
From e4d55d451648b67c9269241efce8eee63faf70a4 Mon Sep 17 00:00:00 2001
From: Philipp Knechtges <philipp-dev@knechtges.com>
Date: Fri, 13 Sep 2024 11:16:44 +0200
Subject: [PATCH] d2d1: Add tests for drawing ID2D1GeometryGroup
The functionality to draw ID2D1GeometryGroup is currently missing.
Nothing is drawn. This causes the blank pages in the bug below.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51139
---
dlls/d2d1/tests/d2d1.c | 219 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 219 insertions(+)
diff --git a/dlls/d2d1/tests/d2d1.c b/dlls/d2d1/tests/d2d1.c
index 40bcf5079b8..41b36ef0dd5 100644
--- a/dlls/d2d1/tests/d2d1.c
+++ b/dlls/d2d1/tests/d2d1.c
@@ -7061,6 +7061,7 @@ static void test_gradient(BOOL d3d11)
static void test_draw_geometry(BOOL d3d11)
{
ID2D1TransformedGeometry *transformed_geometry[4];
+ ID2D1GeometryGroup *geometry_group;
ID2D1RectangleGeometry *rect_geometry[2];
D2D1_POINT_2F point = {0.0f, 0.0f};
D2D1_ROUNDED_RECT rounded_rect;
@@ -7970,6 +7971,117 @@ static void test_draw_geometry(BOOL d3d11)
hr = ID2D1PathGeometry_Open(geometry, &sink);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ set_point(&point, -0.402914f, 0.915514f);
+ ID2D1GeometrySink_BeginFigure(sink, point, D2D1_FIGURE_BEGIN_HOLLOW);
+ quadratic_to(sink, -0.310379f, 0.882571f, -0.116057f, 0.824000f);
+ quadratic_to(sink, 0.008350f, 0.693614f, -0.052343f, 0.448886f);
+ quadratic_to(sink, -0.154236f, 0.246072f, -0.279229f, 0.025343f);
+ quadratic_to(sink, -0.370064f, -0.588586f, -0.383029f, -0.924114f);
+ quadratic_to(sink, -0.295479f, -0.958764f, -0.017086f, -0.988400f);
+ quadratic_to(sink, 0.208836f, -0.954157f, 0.272200f, -0.924114f);
+ quadratic_to(sink, 0.295614f, -0.569071f, 0.230143f, 0.022886f);
+ quadratic_to(sink, 0.101664f, 0.220643f, 0.012057f, 0.451571f);
+ quadratic_to(sink, -0.028764f, 0.709014f, 0.104029f, 0.833943f);
+ quadratic_to(sink, 0.319414f, 0.913057f, 0.403229f, 0.942628f);
+ quadratic_to(sink, 0.317721f, 1.023450f, -0.017086f, 1.021771f);
+ quadratic_to(sink, -0.310843f, 1.007472f, -0.402914f, 0.915514f);
+ ID2D1GeometrySink_EndFigure(sink, D2D1_FIGURE_END_CLOSED);
+
+ hr = ID2D1GeometrySink_Close(sink);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ ID2D1GeometrySink_Release(sink);
+
+ set_matrix_identity(&matrix);
+ translate_matrix(&matrix, 40.0f, 160.0f);
+ scale_matrix(&matrix, 20.0f, 80.0f);
+ hr = ID2D1Factory_CreateTransformedGeometry(factory,
+ (ID2D1Geometry *)geometry, &matrix, &transformed_geometry[0]);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+ set_matrix_identity(&matrix);
+ translate_matrix(&matrix, 160.0f, 640.0f);
+ scale_matrix(&matrix, 40.0f, 160.0f);
+ rotate_matrix(&matrix, M_PI / -5.0f);
+ hr = ID2D1Factory_CreateTransformedGeometry(factory,
+ (ID2D1Geometry *)geometry, &matrix, &transformed_geometry[1]);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ ID2D1PathGeometry_Release(geometry);
+
+ set_matrix_identity(&matrix);
+ scale_matrix(&matrix, 0.5f, 1.0f);
+ translate_matrix(&matrix, -80.0f, 0.0f);
+ hr = ID2D1Factory_CreateTransformedGeometry(factory,
+ (ID2D1Geometry *)transformed_geometry[1], &matrix, &transformed_geometry[2]);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+ set_matrix_identity(&matrix);
+ rotate_matrix(&matrix, M_PI / 2.0f);
+ translate_matrix(&matrix, 80.0f, -320.0f);
+ scale_matrix(&matrix, 2.0f, 0.25f);
+ hr = ID2D1Factory_CreateTransformedGeometry(factory,
+ (ID2D1Geometry *)transformed_geometry[2], &matrix, &transformed_geometry[3]);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+ hr = ID2D1Factory_CreateGeometryGroup(factory, D2D1_FILL_MODE_WINDING,
+ (ID2D1Geometry**) &transformed_geometry, 4, &geometry_group);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ ID2D1TransformedGeometry_Release(transformed_geometry[3]);
+ ID2D1TransformedGeometry_Release(transformed_geometry[2]);
+ ID2D1TransformedGeometry_Release(transformed_geometry[1]);
+ ID2D1TransformedGeometry_Release(transformed_geometry[0]);
+
+ ID2D1RenderTarget_BeginDraw(rt);
+ ID2D1RenderTarget_Clear(rt, &color);
+ ID2D1RenderTarget_DrawGeometry(rt, (ID2D1Geometry *)geometry_group, (ID2D1Brush *)brush, 10.0f, NULL);
+ hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ ID2D1GeometryGroup_Release(geometry_group);
+
+ match = compare_figure(&ctx, 0, 0, 160, 160, 0xff652e89, 256,
+ "iTANiwEagQEkeSp0LnIWAhZyFAYUchQGFHIUBhRyFAYUchQGFHIUBhRyFAYUchQGFHIUBhRyFAYU"
+ "cxQFFHMUBRRzFAUUcxQFFHMUBRRzFAUUcxQFFHMUBRRzFAUUcxQFFHQUBBR0FAQUdBQDFHUUAxR1"
+ "FAMUdRQDFHUUAxR1FQIUdhQCFHYUAhR2FAIUdhQCFHYUAhR2FAIUdhQBFHgoeCh4KHkmeiZ7JHwk"
+ "fSJ+In8ggAEfggEeggEdhAEchQEbhQEahwEZhwEYiQEXiQEWigEWigEWigEWiwEViwEViwEViwEV"
+ "igEXiQEXiQEXiQEYhwEZhgEbgwEefyR5KXQvbxgEGG4VBxhtMnAudCp6IoMBGOMu");
+ ok(match, "Figure does not match.\n");
+ match = compare_figure(&ctx, 160, 0, 320, 160, 0xff652e89, 512,
+ "xpcBB7QCEqkCG6ACJJgCLI8CNYcCHgMc/gEeDBr4AR4UGPIBHR0W7AEdIxbmAR0pFt8BHTAV2gEd"
+ "MBrWARwuIdMBGiwi1gEYKiPZARYoJNwBFiQk4AEWHyWxAQQvFhsltgEKKBYWJrwBECBOwQEXF0rI"
+ "ARwOSM4Ba9UBYeABRf0BOIoCMZECLJYCKJoCJ5wCJp0CJJ8CIqICH6QCHagCGa4CFLoCB/yUAQAA");
+ ok(match, "Figure does not match.\n");
+ match = compare_figure(&ctx, 0, 160, 160, 320, 0xff652e89, 512,
+ "yWQBnQEEmQEHlgELkwENkAEQjgETiwEVigEXhwEZhgEahQEcgwEdggEfgAEgfyF+I30jfCR8JXom"
+ "eid4KHgodxQCFHYUAhR1FAMUdBUEFHMUBRRyFQUUchQHFHEUBxRwFAgUcBQJFG4UChRuFAoUbRUL"
+ "FGwUDBRsFAwUbBQNFGwUDBRsFAwUbRQMFGwUDBRsFAwUbRQLFWwUDBRtFAsUbRQLFG0VCxRtFAsU"
+ "bRQLFG4UCxRtFAsUbhQKFG4UCxRuFAoUbhQKFG4VCRRvFAoUbhQKFG8UCRRvFAoUbxQJFG8UCRRw"
+ "FAgVbxQJFHAUCBRwFAgUcBUIFHAUCBRwFAgUcRQHFHEUBxRyFAYUchQGFHMUBRRzFAUUdBQEFHQU"
+ "BBR1FAQUdBQEFHUUAxR1FAMUdhQCFHYUAhR2FQEUdxQBFHcpeCh4KHkneSd6JnoneiZ7JXwkfSN+"
+ "In8hgAEggQEfgwEdhAEdhAEchQEbhgEahwEZiAEYGAFwGBYCcRcUBHEXEgZyFhEHchcOCXMWDAtz"
+ "FgsMdBYIDnQWBhB1FgQQdhYCEnYqdyl3KXcpeCd5J3kneSd5JnomeyR8JHwkfCN9I30ifiF/IX4h"
+ "fyF/IH8ggAEgfyCAASCAAR+AAR+BAR6CAR6BAR6CAR2CAR2DARyEARuEARuFARqGARmGARiKARSR"
+ "AQqhYwAA");
+ ok(match, "Figure does not match.\n");
+ match = compare_figure(&ctx, 160, 160, 320, 320, 0xff652e89, 1024,
+ "ytABA7gCCbICD60CFKkCF6cCGqMCHqACIZ0CJJoCJpgCKZUCFgIUkgIWBBWPAhYHFI4CFQoUjAIV"
+ "DBSKAhUNFYgCFQ8UhwIVERSFAhUTFIMCFRQVgQIUFxSAAhQZFP4BFBoV/AEUHBT7ARQeFPkBFB8V"
+ "9wEUIRT2ARQjFPQBFSMV8gEVJRTxARUnFPABFCgV7gEUKhTtARQsFOwBFCwV7AEULBTsARUsFOwB"
+ "FSsV7AEULBTtARQsFO0BFCsU7QEVKxTtARUqFe0BFSoU7gEUKxTuARQqFe4BFCoU7wEUKhTuARUp"
+ "FO8BFSkU7wEVKBXvARUoFPABFCkU8AEUKBTxARQoFPEBFCcV8QEUJxTxARUnFPEBFSYU8gEVJhTy"
+ "ARUlFfIBFSUU8wEUJRXzARQlFPQBFCUU9AEUJBT1ARQkFPUBFCMU9gEUIhT2ARUhFPcBFSAU+AEV"
+ "HxT5ARUeFPoBFR4U+gEVHRT7ARUcFPwBFRsU/QEVGhT+ARUZFP8BFBkUgAIUGBSBAhQXFIICFBcU"
+ "ggIUFhSDAhQVFIQCFBQUhQIUExSGAhQSFIcCFBIUhwIUERSIAhUPFIkCFg0UigIXCxSNAhYJFI8C"
+ "FggUkAIXBRSSAhcDFJQCFwEUlgIrlwIpmgImnAIkngIjnwIhoQIfowIepAIcpgIbpgIaqAIZqAIZ"
+ "qAIYKwP7ARgnBf0BGCMI/QEZHgz+ARgbD/8BGBcSgAIYEhaAAhoNGIICGggcgwIaBB+DAjyEAjyF"
+ "AjqGAjmIAjiIAiECFIkCFAIIBBSKAhQNFIsCFAwUjAIUCxSNAhQKFI4CFAkUjwIUBxWQAhQGFZEC"
+ "FAUVkQIUBRWRAhQFFZECFQMVkwIUAxWTAhQDFZMCFAIVlAIVARWVAiqVAimWAimWAiiYAiaZAiaZ"
+ "AiWaAiScAiKdAiGeAh+hAhyjAhmuAg3GxgEA");
+ ok(match, "Figure does not match.\n");
+
+ hr = ID2D1Factory_CreatePathGeometry(factory, &geometry);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ hr = ID2D1PathGeometry_Open(geometry, &sink);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
set_point(&point, 20.0f, 80.0f);
ID2D1GeometrySink_BeginFigure(sink, point, D2D1_FIGURE_BEGIN_HOLLOW);
quadratic_to(sink, 20.0f, 160.0f, 60.0f, 160.0f);
@@ -8011,6 +8123,7 @@ static void test_draw_geometry(BOOL d3d11)
static void test_fill_geometry(BOOL d3d11)
{
ID2D1TransformedGeometry *transformed_geometry[4];
+ ID2D1GeometryGroup *geometry_group;
ID2D1RectangleGeometry *rect_geometry[2];
D2D1_POINT_2F point = {0.0f, 0.0f};
D2D1_ROUNDED_RECT rounded_rect;
@@ -8728,6 +8841,112 @@ static void test_fill_geometry(BOOL d3d11)
hr = ID2D1PathGeometry_Open(geometry, &sink);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ set_point(&point, -0.402914f, 0.915514f);
+ ID2D1GeometrySink_BeginFigure(sink, point, D2D1_FIGURE_BEGIN_FILLED);
+ quadratic_to(sink, -0.310379f, 0.882571f, -0.116057f, 0.824000f);
+ quadratic_to(sink, 0.008350f, 0.693614f, -0.052343f, 0.448886f);
+ quadratic_to(sink, -0.154236f, 0.246072f, -0.279229f, 0.025343f);
+ quadratic_to(sink, -0.370064f, -0.588586f, -0.383029f, -0.924114f);
+ quadratic_to(sink, -0.295479f, -0.958764f, -0.017086f, -0.988400f);
+ quadratic_to(sink, 0.208836f, -0.954157f, 0.272200f, -0.924114f);
+ quadratic_to(sink, 0.295614f, -0.569071f, 0.230143f, 0.022886f);
+ quadratic_to(sink, 0.101664f, 0.220643f, 0.012057f, 0.451571f);
+ quadratic_to(sink, -0.028764f, 0.709014f, 0.104029f, 0.833943f);
+ quadratic_to(sink, 0.319414f, 0.913057f, 0.403229f, 0.942628f);
+ quadratic_to(sink, 0.317721f, 1.023450f, -0.017086f, 1.021771f);
+ quadratic_to(sink, -0.310843f, 1.007472f, -0.402914f, 0.915514f);
+ ID2D1GeometrySink_EndFigure(sink, D2D1_FIGURE_END_CLOSED);
+
+ hr = ID2D1GeometrySink_Close(sink);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ ID2D1GeometrySink_Release(sink);
+
+ set_matrix_identity(&matrix);
+ translate_matrix(&matrix, 40.0f, 160.0f);
+ scale_matrix(&matrix, 20.0f, 80.0f);
+ hr = ID2D1Factory_CreateTransformedGeometry(factory,
+ (ID2D1Geometry *)geometry, &matrix, &transformed_geometry[0]);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+ set_matrix_identity(&matrix);
+ translate_matrix(&matrix, 160.0f, 640.0f);
+ scale_matrix(&matrix, 40.0f, 160.0f);
+ rotate_matrix(&matrix, M_PI / -5.0f);
+ hr = ID2D1Factory_CreateTransformedGeometry(factory,
+ (ID2D1Geometry *)geometry, &matrix, &transformed_geometry[1]);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ ID2D1PathGeometry_Release(geometry);
+
+ set_matrix_identity(&matrix);
+ scale_matrix(&matrix, 0.5f, 1.0f);
+ translate_matrix(&matrix, -80.0f, 0.0f);
+ hr = ID2D1Factory_CreateTransformedGeometry(factory,
+ (ID2D1Geometry *)transformed_geometry[1], &matrix, &transformed_geometry[2]);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+ set_matrix_identity(&matrix);
+ rotate_matrix(&matrix, M_PI / 2.0f);
+ translate_matrix(&matrix, 80.0f, -320.0f);
+ scale_matrix(&matrix, 2.0f, 0.25f);
+ hr = ID2D1Factory_CreateTransformedGeometry(factory,
+ (ID2D1Geometry *)transformed_geometry[2], &matrix, &transformed_geometry[3]);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+ hr = ID2D1Factory_CreateGeometryGroup(factory, D2D1_FILL_MODE_WINDING,
+ (ID2D1Geometry**) &transformed_geometry, 4, &geometry_group);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ ID2D1TransformedGeometry_Release(transformed_geometry[3]);
+ ID2D1TransformedGeometry_Release(transformed_geometry[2]);
+ ID2D1TransformedGeometry_Release(transformed_geometry[1]);
+ ID2D1TransformedGeometry_Release(transformed_geometry[0]);
+
+ ID2D1RenderTarget_BeginDraw(rt);
+ ID2D1RenderTarget_Clear(rt, &color);
+ ID2D1RenderTarget_FillGeometry(rt, (ID2D1Geometry *)geometry_group, (ID2D1Brush *)brush, NULL);
+ hr = ID2D1RenderTarget_EndDraw(rt, NULL, NULL);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ ID2D1GeometryGroup_Release(geometry_group);
+
+ match = compare_figure(&ctx, 0, 0, 160, 160, 0xff652e89, 32,
+ "zzIBlwEOjQEXiAEahgEahgEahgEahgEahgEahgEahgEahgEahgEahgEahwEZhwEZhwEZhwEZhwEZ"
+ "hwEZhwEZhwEZhwEZhwEZiAEYiAEYiAEXiQEXiQEXiQEXiQEXiQEXigEWigEWigEWigEWigEWigEW"
+ "igEVjAEUjAEUjAEUjQESjgESjwEQkAEQkQEOkgENlAEMlAELlgEKlwEImAEImQEHmQEGmwEFmwEE"
+ "nQEDnQECngECngECngECnwEBnwEBnwEBnwEBngEDnQEDnQEDnQEEmwEFmgEHmQEHlwELkQERjAEX"
+ "hgEdhAEfgwEchwEWjwEMqTEA");
+ ok(match, "Figure does not match.\n");
+ match = compare_figure(&ctx, 160, 0, 320, 160, 0xff652e89, 32,
+ "h58BBrUCD6wCGKQCIJsCKZMCMIwCNoUCPf8BQ/kBSPQBTu0BTu4BTfEBSfUBRfkBQf0BPYECOYUC"
+ "NIoCMI4CK+UBAS0W/AEHIweQAgsZBpcCEAwIngIepAIZqQIWrAITsAIRswIOtQIMuAIJuwIHwAIB"
+ "ypwB");
+ ok(match, "Figure does not match.\n");
+ match = compare_figure(&ctx, 0, 160, 160, 320, 0xff652e89, 32,
+ "wW4DnAEEmwEFmgEHmAEIlwEKlQELlAEMkwEOkQEPkAEQkAERjgESjgESjQEUjAEUiwEWigEWiQEX"
+ "iQEYhwEZhwEZhgEbhQEbhAEchAEdggEeggEeggEfgAEggAEggAEhgAEggAEggQEggAEggAEggQEf"
+ "gQEggQEfgQEfggEfgQEfgQEfggEfgQEfggEeggEfggEeggEeggEegwEeggEegwEdgwEegwEdgwEd"
+ "hAEchAEdhAEchAEchAEdhAEchAEchQEbhQEbhgEahgEahwEZhwEZiAEYiAEYiQEYiAEYiQEXiQEX"
+ "igEWigEWiwEViwEVjAEUjAEUjAEUjQETjQETjgESjgETjgESjwERkAEQkgEOkwENlAEMlQELlgEK"
+ "lwEJmAEJmAEImQEHmgEGmwEFnAEEnQEEnQEDnQEDngECngEDngECngECnwECngECnwECngECngED"
+ "ngECEgGLAQMQAosBAw4EjAEDCwWNAQQJBo0BBQYIjQEHAgqNARKOARKPARCQARCQARCQAQ+RAQ6S"
+ "AQ6SAQ2TAQ2SAQ2TAQ2TAQyTAQyUAQyTAQyUAQuVAQuUAQuVAQqWAQmWAQqWAQmXAQiXAQiYAQeY"
+ "AQeZAQWbAQSDZwAA");
+ ok(match, "Figure does not match.\n");
+ match = compare_figure(&ctx, 160, 160, 320, 320, 0xff652e89, 32,
+ "g90BBLkCCLYCC7ICDrACEa0CFKoCF6cCGqQCHKMCHqECIJ8CIpwCJJsCJpkCKJcCKZYCK5QCLZIC"
+ "L5ACMI8CMo0CNIsCNYoCN4gCOYcCOYYCO4QCPYICPoECQIACQYACQIECQIACQIECQIECQIECP4IC"
+ "P4ICP4ECP4ICP4ICPoMCPoMCPoMCPYQCPYMCPYQCPYQCPYQCPIUCPIUCPIUCO4YCO4YCOoYCO4YC"
+ "OocCOocCOocCOYgCOYgCOIkCOIkCN4oCNosCNYwCNI0CM44CMo4CM44CMo8CMZACMJECL5ICLpMC"
+ "LZQCLJUCK5YCK5YCKpcCKZgCKJkCJ5oCJpsCJpsCJZwCJJ4CIqACIKICH6MCHaUCG6cCGakCF6wC"
+ "Fa0CE68CEbECD7MCDrQCDLYCCrgCCbkCB7sCBrsCBbwCBbwCBL0CBL0CBL0CBL0CA70CBL0CBL0C"
+ "BLwCBSUBlgIFIQSXAgYbCJcCBxcKmQIIEQ6ZAgoMEJoCDQUTnAIknAIjnQIingIhnwIgoAIfoQIe"
+ "ogIdowIcpAIbpQIapQIZpgIZpgIZpwIYpwIXqAIXqAIXqQIVqgIVqgIUqwITrQISrQIRrgIQsAIO"
+ "sQIMswILtQIIhs4B");
+ ok(match, "Figure does not match.\n");
+
+ hr = ID2D1Factory_CreatePathGeometry(factory, &geometry);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ hr = ID2D1PathGeometry_Open(geometry, &sink);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
set_point(&point, -0.402914f, 0.915514f);
ID2D1GeometrySink_BeginFigure(sink, point, D2D1_FIGURE_BEGIN_HOLLOW);
quadratic_to(sink, -0.310379f, 0.882571f, -0.116057f, 0.824000f);
--
2.45.2

View File

@@ -0,0 +1,279 @@
From be0fbef50483da8fe3fd0c4b74469d15a5c9f1ea Mon Sep 17 00:00:00 2001
From: Philipp Knechtges <philipp-dev@knechtges.com>
Date: Fri, 13 Sep 2024 16:37:31 +0200
Subject: [PATCH] d2d1: Implement drawing for ID2D1GeometryGroup
Drawing of ID2D1GeometryGroup was so far unimplemented and resulted in
blank drawing buffers. This partially fixes the rendering issues mentioned
in the bug below.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51139
---
dlls/d2d1/geometry.c | 236 ++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 235 insertions(+), 1 deletion(-)
diff --git a/dlls/d2d1/geometry.c b/dlls/d2d1/geometry.c
index 3da3ad2e65b..93925408077 100644
--- a/dlls/d2d1/geometry.c
+++ b/dlls/d2d1/geometry.c
@@ -5497,8 +5497,13 @@ static const struct ID2D1GeometryGroupVtbl d2d_geometry_group_vtbl =
HRESULT d2d_geometry_group_init(struct d2d_geometry *geometry, ID2D1Factory *factory,
D2D1_FILL_MODE fill_mode, ID2D1Geometry **geometries, unsigned int geometry_count)
{
- unsigned int i;
+ unsigned int i, j;
+ struct d2d_geometry *other_geom;
+ D2D_MATRIX_3X2_F g, gplain;
+ size_t f_vertex_count, f_face_count, f_bezier_vertex_count, f_arc_vertex_count;
+ size_t o_vertex_count, o_face_count, o_bezier_count, o_bezier_face_count, o_arc_count, o_arc_face_count;
+ FIXME("Ignoring fill_mode=%#x!\n", fill_mode);
d2d_geometry_init(geometry, factory, &identity, (ID2D1GeometryVtbl *)&d2d_geometry_group_vtbl);
if (!(geometry->u.group.src_geometries = calloc(geometry_count, sizeof(*geometries))))
@@ -5507,13 +5512,242 @@ HRESULT d2d_geometry_group_init(struct d2d_geometry *geometry, ID2D1Factory *fac
return E_OUTOFMEMORY;
}
+ geometry->fill.vertex_count = 0;
+ geometry->fill.face_count = 0;
+ geometry->fill.bezier_vertex_count = 0;
+ geometry->fill.arc_vertex_count = 0;
+ geometry->outline.vertex_count = 0;
+ geometry->outline.face_count = 0;
+ geometry->outline.bezier_count = 0;
+ geometry->outline.bezier_face_count = 0;
+ geometry->outline.arc_count = 0;
+ geometry->outline.arc_face_count = 0;
for (i = 0; i < geometry_count; ++i)
{
ID2D1Geometry_AddRef(geometry->u.group.src_geometries[i] = geometries[i]);
+ other_geom = unsafe_impl_from_ID2D1Geometry(geometries[i]);
+ geometry->fill.vertex_count += other_geom->fill.vertex_count;
+ geometry->fill.face_count += other_geom->fill.face_count;
+ geometry->fill.bezier_vertex_count += other_geom->fill.bezier_vertex_count;
+ geometry->fill.arc_vertex_count += other_geom->fill.arc_vertex_count;
+ geometry->outline.vertex_count += other_geom->outline.vertex_count;
+ geometry->outline.face_count += other_geom->outline.face_count;
+ geometry->outline.bezier_count += other_geom->outline.bezier_count;
+ geometry->outline.bezier_face_count += other_geom->outline.bezier_face_count;
+ geometry->outline.arc_count += other_geom->outline.arc_count;
+ geometry->outline.arc_face_count += other_geom->outline.arc_face_count;
}
geometry->u.group.geometry_count = geometry_count;
geometry->u.group.fill_mode = fill_mode;
+ if (!(geometry->fill.vertices = calloc(geometry->fill.vertex_count, sizeof(D2D1_POINT_2F))))
+ {
+ for (i = 0; i < geometry->u.group.geometry_count; ++i)
+ ID2D1Geometry_Release(geometry->u.group.src_geometries[i]);
+ d2d_geometry_cleanup(geometry);
+ return E_OUTOFMEMORY;
+ }
+ if (!(geometry->fill.faces = calloc(geometry->fill.face_count, sizeof(struct d2d_face))))
+ {
+ for (i = 0; i < geometry->u.group.geometry_count; ++i)
+ ID2D1Geometry_Release(geometry->u.group.src_geometries[i]);
+ d2d_geometry_cleanup(geometry);
+ return E_OUTOFMEMORY;
+ }
+ geometry->fill.faces_size = geometry->fill.face_count;
+ if (!(geometry->fill.bezier_vertices = calloc(geometry->fill.bezier_vertex_count, sizeof(struct d2d_curve_vertex))))
+ {
+ for (i = 0; i < geometry->u.group.geometry_count; ++i)
+ ID2D1Geometry_Release(geometry->u.group.src_geometries[i]);
+ d2d_geometry_cleanup(geometry);
+ return E_OUTOFMEMORY;
+ }
+ geometry->fill.bezier_vertices_size = geometry->fill.bezier_vertex_count;
+ if (!(geometry->fill.arc_vertices = calloc(geometry->fill.arc_vertex_count, sizeof(struct d2d_curve_vertex))))
+ {
+ for (i = 0; i < geometry->u.group.geometry_count; ++i)
+ ID2D1Geometry_Release(geometry->u.group.src_geometries[i]);
+ d2d_geometry_cleanup(geometry);
+ return E_OUTOFMEMORY;
+ }
+ geometry->fill.arc_vertices_size = geometry->fill.arc_vertex_count;
+ if (!(geometry->outline.vertices = calloc(geometry->outline.vertex_count, sizeof(struct d2d_outline_vertex))))
+ {
+ for (i = 0; i < geometry->u.group.geometry_count; ++i)
+ ID2D1Geometry_Release(geometry->u.group.src_geometries[i]);
+ d2d_geometry_cleanup(geometry);
+ return E_OUTOFMEMORY;
+ }
+ geometry->outline.vertices_size = geometry->outline.vertex_count;
+ if (!(geometry->outline.faces = calloc(geometry->outline.face_count, sizeof(struct d2d_face))))
+ {
+ for (i = 0; i < geometry->u.group.geometry_count; ++i)
+ ID2D1Geometry_Release(geometry->u.group.src_geometries[i]);
+ d2d_geometry_cleanup(geometry);
+ return E_OUTOFMEMORY;
+ }
+ geometry->outline.faces_size = geometry->outline.face_count;
+ if (!(geometry->outline.beziers = calloc(geometry->outline.bezier_count, sizeof(struct d2d_curve_outline_vertex))))
+ {
+ for (i = 0; i < geometry->u.group.geometry_count; ++i)
+ ID2D1Geometry_Release(geometry->u.group.src_geometries[i]);
+ d2d_geometry_cleanup(geometry);
+ return E_OUTOFMEMORY;
+ }
+ geometry->outline.beziers_size = geometry->outline.bezier_count;
+ if (!(geometry->outline.bezier_faces = calloc(geometry->outline.bezier_face_count, sizeof(struct d2d_face))))
+ {
+ for (i = 0; i < geometry->u.group.geometry_count; ++i)
+ ID2D1Geometry_Release(geometry->u.group.src_geometries[i]);
+ d2d_geometry_cleanup(geometry);
+ return E_OUTOFMEMORY;
+ }
+ geometry->outline.bezier_faces_size = geometry->outline.bezier_face_count;
+ if (!(geometry->outline.arcs = calloc(geometry->outline.arc_count, sizeof(struct d2d_curve_outline_vertex))))
+ {
+ for (i = 0; i < geometry->u.group.geometry_count; ++i)
+ ID2D1Geometry_Release(geometry->u.group.src_geometries[i]);
+ d2d_geometry_cleanup(geometry);
+ return E_OUTOFMEMORY;
+ }
+ geometry->outline.arcs_size = geometry->outline.arc_count;
+ if (!(geometry->outline.arc_faces = calloc(geometry->outline.arc_face_count, sizeof(struct d2d_face))))
+ {
+ for (i = 0; i < geometry->u.group.geometry_count; ++i)
+ ID2D1Geometry_Release(geometry->u.group.src_geometries[i]);
+ d2d_geometry_cleanup(geometry);
+ return E_OUTOFMEMORY;
+ }
+ geometry->outline.arc_faces_size = geometry->outline.arc_face_count;
+
+ f_vertex_count = 0;
+ f_face_count = 0;
+ f_bezier_vertex_count = 0;
+ f_arc_vertex_count = 0;
+ o_vertex_count = 0;
+ o_face_count = 0;
+ o_bezier_count = 0;
+ o_bezier_face_count = 0;
+ o_arc_count = 0;
+ o_arc_face_count = 0;
+ for (i = 0; i < geometry_count; ++i)
+ {
+ other_geom = unsafe_impl_from_ID2D1Geometry(geometries[i]);
+ g = other_geom->transform;
+ gplain = g;
+ gplain.dx = 0.0f;
+ gplain.dy = 0.0f;
+
+ for (j = 0; j < other_geom->fill.vertex_count; ++j) {
+ d2d_point_transform(&geometry->fill.vertices[j+f_vertex_count], &g,
+ other_geom->fill.vertices[j].x, other_geom->fill.vertices[j].y);
+ }
+ for (j = 0; j < other_geom->fill.face_count; ++j) {
+ geometry->fill.faces[f_face_count+j].v[0] = other_geom->fill.faces[j].v[0]
+ + (UINT16) f_vertex_count;
+ geometry->fill.faces[f_face_count+j].v[1] = other_geom->fill.faces[j].v[1]
+ + (UINT16) f_vertex_count;
+ geometry->fill.faces[f_face_count+j].v[2] = other_geom->fill.faces[j].v[2]
+ + (UINT16) f_vertex_count;
+ }
+ f_vertex_count += other_geom->fill.vertex_count;
+ f_face_count += other_geom->fill.face_count;
+
+ for (j = 0; j < other_geom->fill.bezier_vertex_count; ++j) {
+ d2d_point_transform(&geometry->fill.bezier_vertices[j+f_bezier_vertex_count].position,
+ &g, other_geom->fill.bezier_vertices[j].position.x,
+ other_geom->fill.bezier_vertices[j].position.y);
+ geometry->fill.bezier_vertices[j+f_bezier_vertex_count].texcoord
+ = other_geom->fill.bezier_vertices[j].texcoord;
+ }
+ f_bezier_vertex_count += other_geom->fill.bezier_vertex_count;
+
+ for (j = 0; j < other_geom->fill.arc_vertex_count; ++j) {
+ d2d_point_transform(&geometry->fill.arc_vertices[j+f_arc_vertex_count].position,
+ &g, other_geom->fill.arc_vertices[j].position.x,
+ other_geom->fill.arc_vertices[j].position.y);
+ geometry->fill.arc_vertices[j+f_arc_vertex_count].texcoord
+ = other_geom->fill.arc_vertices[j].texcoord;
+
+ }
+ f_arc_vertex_count += other_geom->fill.arc_vertex_count;
+
+ for (j = 0; j < other_geom->outline.vertex_count; ++j) {
+ d2d_point_transform(&geometry->outline.vertices[j+o_vertex_count].position, &g,
+ other_geom->outline.vertices[j].position.x, other_geom->outline.vertices[j].position.y);
+ d2d_point_transform(&geometry->outline.vertices[j+o_vertex_count].prev, &gplain,
+ other_geom->outline.vertices[j].prev.x, other_geom->outline.vertices[j].prev.y);
+ d2d_point_normalise(&geometry->outline.vertices[j+o_vertex_count].prev);
+ d2d_point_transform(&geometry->outline.vertices[j+o_vertex_count].next, &gplain,
+ other_geom->outline.vertices[j].next.x, other_geom->outline.vertices[j].next.y);
+ d2d_point_normalise(&geometry->outline.vertices[j+o_vertex_count].next);
+ }
+ for (j = 0; j < other_geom->outline.face_count; ++j) {
+ geometry->outline.faces[o_face_count+j].v[0] = other_geom->outline.faces[j].v[0]
+ + (UINT16) o_vertex_count;
+ geometry->outline.faces[o_face_count+j].v[1] = other_geom->outline.faces[j].v[1]
+ + (UINT16) o_vertex_count;
+ geometry->outline.faces[o_face_count+j].v[2] = other_geom->outline.faces[j].v[2]
+ + (UINT16) o_vertex_count;
+ }
+ o_vertex_count += other_geom->outline.vertex_count;
+ o_face_count += other_geom->outline.face_count;
+
+ for (j = 0; j < other_geom->outline.bezier_count; ++j) {
+ d2d_point_transform(&geometry->outline.beziers[j+o_bezier_count].position, &g,
+ other_geom->outline.beziers[j].position.x, other_geom->outline.beziers[j].position.y);
+ d2d_point_transform(&geometry->outline.beziers[j+o_bezier_count].prev, &gplain,
+ other_geom->outline.beziers[j].prev.x, other_geom->outline.beziers[j].prev.y);
+ d2d_point_normalise(&geometry->outline.beziers[j+o_bezier_count].prev);
+ d2d_point_transform(&geometry->outline.beziers[j+o_bezier_count].next, &gplain,
+ other_geom->outline.beziers[j].next.x, other_geom->outline.beziers[j].next.y);
+ d2d_point_normalise(&geometry->outline.beziers[j+o_bezier_count].next);
+ d2d_point_transform(&geometry->outline.beziers[j+o_bezier_count].p0, &g,
+ other_geom->outline.beziers[j].p0.x, other_geom->outline.beziers[j].p0.y);
+ d2d_point_transform(&geometry->outline.beziers[j+o_bezier_count].p1, &g,
+ other_geom->outline.beziers[j].p1.x, other_geom->outline.beziers[j].p1.y);
+ d2d_point_transform(&geometry->outline.beziers[j+o_bezier_count].p2, &g,
+ other_geom->outline.beziers[j].p2.x, other_geom->outline.beziers[j].p2.y);
+ }
+ for (j = 0; j < other_geom->outline.bezier_face_count; ++j) {
+ geometry->outline.bezier_faces[o_bezier_face_count+j].v[0]
+ = other_geom->outline.bezier_faces[j].v[0] + (UINT16) o_bezier_count;
+ geometry->outline.bezier_faces[o_bezier_face_count+j].v[1]
+ = other_geom->outline.bezier_faces[j].v[1] + (UINT16) o_bezier_count;
+ geometry->outline.bezier_faces[o_bezier_face_count+j].v[2]
+ = other_geom->outline.bezier_faces[j].v[2] + (UINT16) o_bezier_count;
+ }
+ o_bezier_count += other_geom->outline.bezier_count;
+ o_bezier_face_count += other_geom->outline.bezier_face_count;
+
+ for (j = 0; j < other_geom->outline.arc_count; ++j) {
+ d2d_point_transform(&geometry->outline.arcs[j+o_arc_count].position, &g,
+ other_geom->outline.arcs[j].position.x, other_geom->outline.arcs[j].position.y);
+ d2d_point_transform(&geometry->outline.arcs[j+o_arc_count].prev, &gplain,
+ other_geom->outline.arcs[j].prev.x, other_geom->outline.arcs[j].prev.y);
+ d2d_point_normalise(&geometry->outline.arcs[j+o_arc_count].prev);
+ d2d_point_transform(&geometry->outline.arcs[j+o_arc_count].next, &gplain,
+ other_geom->outline.arcs[j].next.x, other_geom->outline.arcs[j].next.y);
+ d2d_point_normalise(&geometry->outline.arcs[j+o_arc_count].next);
+ d2d_point_transform(&geometry->outline.arcs[j+o_arc_count].p0, &g,
+ other_geom->outline.arcs[j].p0.x, other_geom->outline.arcs[j].p0.y);
+ d2d_point_transform(&geometry->outline.arcs[j+o_arc_count].p1, &g,
+ other_geom->outline.arcs[j].p1.x, other_geom->outline.arcs[j].p1.y);
+ d2d_point_transform(&geometry->outline.arcs[j+o_arc_count].p2, &g,
+ other_geom->outline.arcs[j].p2.x, other_geom->outline.arcs[j].p2.y);
+ }
+ for (j = 0; j < other_geom->outline.arc_face_count; ++j) {
+ geometry->outline.arc_faces[o_arc_face_count+j].v[0]
+ = other_geom->outline.arc_faces[j].v[0] + (UINT16) o_arc_count;
+ geometry->outline.arc_faces[o_arc_face_count+j].v[1]
+ = other_geom->outline.arc_faces[j].v[1] + (UINT16) o_arc_count;
+ geometry->outline.arc_faces[o_arc_face_count+j].v[2]
+ = other_geom->outline.arc_faces[j].v[2] + (UINT16) o_arc_count;
+ }
+ o_arc_count += other_geom->outline.arc_count;
+ o_arc_face_count += other_geom->outline.arc_face_count;
+ }
+
return S_OK;
}
--
2.45.2

View File

@@ -0,0 +1,3 @@
Fixes: [51139] d2d1: Implement drawing of ID2D1GeometryGroup
# MR https://gitlab.winehq.org/wine/wine/-/merge_requests/6492

View File

@@ -1,24 +0,0 @@
From 170a6d9df910f617585791df31aa72b79622ed0b Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Mon, 16 May 2016 13:20:39 +0200
Subject: d3dx9_36: Add format description for X8L8V8U8 for format conversions.
---
dlls/d3dx9_36/util.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/d3dx9_36/util.c b/dlls/d3dx9_36/util.c
index d8cd43a..12b9c2c 100644
--- a/dlls/d3dx9_36/util.c
+++ b/dlls/d3dx9_36/util.c
@@ -90,6 +90,7 @@ static const struct pixel_format_desc formats[] =
{D3DFMT_G32R32F, { 0, 32, 32, 0}, { 0, 0, 32, 0}, 8, 1, 1, 8, FORMAT_ARGBF, NULL, NULL },
{D3DFMT_A32B32G32R32F, {32, 32, 32, 32}, {96, 0, 32, 64}, 16, 1, 1, 16, FORMAT_ARGBF, NULL, NULL },
{D3DFMT_P8, { 8, 8, 8, 8}, { 0, 0, 0, 0}, 1, 1, 1, 1, FORMAT_INDEX, NULL, index_to_rgba},
+ {D3DFMT_X8L8V8U8, { 0, 8, 8, 8}, { 0, 0, 8, 16}, 4, 1, 1, 4, FORMAT_ARGB, NULL, NULL },
/* marks last element */
{D3DFMT_UNKNOWN, { 0, 0, 0, 0}, { 0, 0, 0, 0}, 0, 1, 1, 0, FORMAT_UNKNOWN, NULL, NULL },
};
--
2.8.0

View File

@@ -1 +0,0 @@
Fixes: Recognize bump luminance X8L8V8U8 when loading dds file

View File

@@ -1,371 +0,0 @@
From 3eb7b781849135fefeece9ca257ca9673b1545fd Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Sun, 16 Jul 2017 18:13:31 +0200
Subject: d3dx9_36: Add semi-stub for D3DXOptimizeVertices.
---
dlls/d3dx9_24/d3dx9_24.spec | 2 +-
dlls/d3dx9_25/d3dx9_25.spec | 2 +-
dlls/d3dx9_26/d3dx9_26.spec | 2 +-
dlls/d3dx9_27/d3dx9_27.spec | 2 +-
dlls/d3dx9_28/d3dx9_28.spec | 2 +-
dlls/d3dx9_29/d3dx9_29.spec | 2 +-
dlls/d3dx9_30/d3dx9_30.spec | 2 +-
dlls/d3dx9_31/d3dx9_31.spec | 2 +-
dlls/d3dx9_32/d3dx9_32.spec | 2 +-
dlls/d3dx9_33/d3dx9_33.spec | 2 +-
dlls/d3dx9_34/d3dx9_34.spec | 2 +-
dlls/d3dx9_35/d3dx9_35.spec | 2 +-
dlls/d3dx9_36/d3dx9_36.spec | 2 +-
dlls/d3dx9_36/mesh.c | 27 +++++++++++++++++++++++++++
dlls/d3dx9_36/tests/mesh.c | 22 ++++++++++++++++++++++
dlls/d3dx9_37/d3dx9_37.spec | 2 +-
dlls/d3dx9_38/d3dx9_38.spec | 2 +-
dlls/d3dx9_39/d3dx9_39.spec | 2 +-
dlls/d3dx9_40/d3dx9_40.spec | 2 +-
dlls/d3dx9_41/d3dx9_41.spec | 2 +-
dlls/d3dx9_42/d3dx9_42.spec | 2 +-
dlls/d3dx9_43/d3dx9_43.spec | 2 +-
22 files changed, 69 insertions(+), 20 deletions(-)
diff --git a/dlls/d3dx9_24/d3dx9_24.spec b/dlls/d3dx9_24/d3dx9_24.spec
index 0ca8777efe6..9b52c2bf307 100644
--- a/dlls/d3dx9_24/d3dx9_24.spec
+++ b/dlls/d3dx9_24/d3dx9_24.spec
@@ -226,7 +226,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_25/d3dx9_25.spec b/dlls/d3dx9_25/d3dx9_25.spec
index a5449810a43..fc75dfd9c04 100644
--- a/dlls/d3dx9_25/d3dx9_25.spec
+++ b/dlls/d3dx9_25/d3dx9_25.spec
@@ -226,7 +226,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_26/d3dx9_26.spec b/dlls/d3dx9_26/d3dx9_26.spec
index 9e1200442f4..85d9fc5332e 100644
--- a/dlls/d3dx9_26/d3dx9_26.spec
+++ b/dlls/d3dx9_26/d3dx9_26.spec
@@ -230,7 +230,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_27/d3dx9_27.spec b/dlls/d3dx9_27/d3dx9_27.spec
index 9e1200442f4..85d9fc5332e 100644
--- a/dlls/d3dx9_27/d3dx9_27.spec
+++ b/dlls/d3dx9_27/d3dx9_27.spec
@@ -230,7 +230,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_28/d3dx9_28.spec b/dlls/d3dx9_28/d3dx9_28.spec
index b316a23baf1..62673ccd7af 100644
--- a/dlls/d3dx9_28/d3dx9_28.spec
+++ b/dlls/d3dx9_28/d3dx9_28.spec
@@ -230,7 +230,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_29/d3dx9_29.spec b/dlls/d3dx9_29/d3dx9_29.spec
index b316a23baf1..62673ccd7af 100644
--- a/dlls/d3dx9_29/d3dx9_29.spec
+++ b/dlls/d3dx9_29/d3dx9_29.spec
@@ -230,7 +230,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_30/d3dx9_30.spec b/dlls/d3dx9_30/d3dx9_30.spec
index e00fa547862..2c7575d88fc 100644
--- a/dlls/d3dx9_30/d3dx9_30.spec
+++ b/dlls/d3dx9_30/d3dx9_30.spec
@@ -230,7 +230,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_31/d3dx9_31.spec b/dlls/d3dx9_31/d3dx9_31.spec
index d308939ef67..a41eb3e9af2 100644
--- a/dlls/d3dx9_31/d3dx9_31.spec
+++ b/dlls/d3dx9_31/d3dx9_31.spec
@@ -227,7 +227,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_32/d3dx9_32.spec b/dlls/d3dx9_32/d3dx9_32.spec
index c2292dff396..eab56b3c9ee 100644
--- a/dlls/d3dx9_32/d3dx9_32.spec
+++ b/dlls/d3dx9_32/d3dx9_32.spec
@@ -227,7 +227,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_33/d3dx9_33.spec b/dlls/d3dx9_33/d3dx9_33.spec
index c2292dff396..eab56b3c9ee 100644
--- a/dlls/d3dx9_33/d3dx9_33.spec
+++ b/dlls/d3dx9_33/d3dx9_33.spec
@@ -227,7 +227,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_34/d3dx9_34.spec b/dlls/d3dx9_34/d3dx9_34.spec
index c2292dff396..eab56b3c9ee 100644
--- a/dlls/d3dx9_34/d3dx9_34.spec
+++ b/dlls/d3dx9_34/d3dx9_34.spec
@@ -227,7 +227,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_35/d3dx9_35.spec b/dlls/d3dx9_35/d3dx9_35.spec
index c2292dff396..eab56b3c9ee 100644
--- a/dlls/d3dx9_35/d3dx9_35.spec
+++ b/dlls/d3dx9_35/d3dx9_35.spec
@@ -227,7 +227,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec
index 0fdf4e135e1..6201657d4a5 100644
--- a/dlls/d3dx9_36/d3dx9_36.spec
+++ b/dlls/d3dx9_36/d3dx9_36.spec
@@ -229,7 +229,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c
index 6294ce624fe..12cb7eb7258 100644
--- a/dlls/d3dx9_36/mesh.c
+++ b/dlls/d3dx9_36/mesh.c
@@ -7184,6 +7184,33 @@ cleanup:
return hr;
}
+
+/*************************************************************************
+ * D3DXOptimizeVertices (D3DX9_36.@)
+ */
+HRESULT WINAPI D3DXOptimizeVertices(const void *indices, UINT num_faces,
+ UINT num_vertices, BOOL indices_are_32bit, DWORD *vertex_remap)
+{
+ UINT i;
+
+ FIXME("indices %p, num_faces %u, num_vertices %u, indices_are_32bit %#x, vertex_remap %p semi-stub.\n",
+ indices, num_faces, num_vertices, indices_are_32bit, vertex_remap);
+
+ if (!vertex_remap)
+ {
+ WARN("vertex remap pointer is NULL.\n");
+ return D3DERR_INVALIDCALL;
+ }
+
+ for (i = 0; i < num_vertices; i++)
+ {
+ vertex_remap[i] = i;
+ }
+
+ return D3D_OK;
+}
+
+
/*************************************************************************
* D3DXOptimizeFaces (D3DX9_36.@)
*
diff --git a/dlls/d3dx9_36/tests/mesh.c b/dlls/d3dx9_36/tests/mesh.c
index f437a83cbd8..c5faae520c9 100644
--- a/dlls/d3dx9_36/tests/mesh.c
+++ b/dlls/d3dx9_36/tests/mesh.c
@@ -10403,6 +10403,27 @@ cleanup:
free_test_context(test_context);
}
+static void test_optimize_vertices(void)
+{
+ HRESULT hr;
+ DWORD vertex_remap[3];
+ const DWORD indices[] = {0, 1, 2};
+ const UINT num_faces = 1;
+ const UINT num_vertices = 3;
+
+ hr = D3DXOptimizeVertices(indices, num_faces,
+ num_vertices, FALSE,
+ vertex_remap);
+ ok(hr == D3D_OK, "D3DXOptimizeVertices failed. Got %lx, expected D3D_OK.\n", hr);
+
+ /* vertex_remap must not be NULL */
+ hr = D3DXOptimizeVertices(indices, num_faces,
+ num_vertices, FALSE,
+ NULL);
+ ok(hr == D3DERR_INVALIDCALL, "D3DXOptimizeVertices passed NULL vertex_remap "
+ "pointer. Got %lx, expected D3DERR_INVALIDCALL.\n", hr);
+}
+
static void test_optimize_faces(void)
{
HRESULT hr;
@@ -11291,6 +11312,7 @@ START_TEST(mesh)
test_weld_vertices();
test_clone_mesh();
test_valid_mesh();
+ test_optimize_vertices();
test_optimize_faces();
test_compute_normals();
test_D3DXFrameFind();
diff --git a/dlls/d3dx9_37/d3dx9_37.spec b/dlls/d3dx9_37/d3dx9_37.spec
index 0fdf4e135e1..6201657d4a5 100644
--- a/dlls/d3dx9_37/d3dx9_37.spec
+++ b/dlls/d3dx9_37/d3dx9_37.spec
@@ -229,7 +229,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_38/d3dx9_38.spec b/dlls/d3dx9_38/d3dx9_38.spec
index 0fdf4e135e1..6201657d4a5 100644
--- a/dlls/d3dx9_38/d3dx9_38.spec
+++ b/dlls/d3dx9_38/d3dx9_38.spec
@@ -229,7 +229,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_39/d3dx9_39.spec b/dlls/d3dx9_39/d3dx9_39.spec
index 0fdf4e135e1..6201657d4a5 100644
--- a/dlls/d3dx9_39/d3dx9_39.spec
+++ b/dlls/d3dx9_39/d3dx9_39.spec
@@ -229,7 +229,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_40/d3dx9_40.spec b/dlls/d3dx9_40/d3dx9_40.spec
index 0fdf4e135e1..6201657d4a5 100644
--- a/dlls/d3dx9_40/d3dx9_40.spec
+++ b/dlls/d3dx9_40/d3dx9_40.spec
@@ -229,7 +229,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_41/d3dx9_41.spec b/dlls/d3dx9_41/d3dx9_41.spec
index 0fdf4e135e1..6201657d4a5 100644
--- a/dlls/d3dx9_41/d3dx9_41.spec
+++ b/dlls/d3dx9_41/d3dx9_41.spec
@@ -229,7 +229,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_42/d3dx9_42.spec b/dlls/d3dx9_42/d3dx9_42.spec
index 2f2ac5fd619..7cfc439f84b 100644
--- a/dlls/d3dx9_42/d3dx9_42.spec
+++ b/dlls/d3dx9_42/d3dx9_42.spec
@@ -222,7 +222,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
diff --git a/dlls/d3dx9_43/d3dx9_43.spec b/dlls/d3dx9_43/d3dx9_43.spec
index 2f2ac5fd619..7cfc439f84b 100644
--- a/dlls/d3dx9_43/d3dx9_43.spec
+++ b/dlls/d3dx9_43/d3dx9_43.spec
@@ -222,7 +222,7 @@
@ stdcall D3DXMatrixTranslation(ptr float float float)
@ stdcall D3DXMatrixTranspose(ptr ptr)
@ stdcall D3DXOptimizeFaces(ptr long long long ptr)
-@ stub D3DXOptimizeVertices(ptr long long long ptr)
+@ stdcall D3DXOptimizeVertices(ptr long long long ptr)
@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr)
@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr)
@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr)
--
2.14.2

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