You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Compare commits
212 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
da0ea43746 | ||
|
8afa18829a | ||
|
fa3bf612ea | ||
|
521e8aa38c | ||
|
c1ee00741d | ||
|
9127b8c30a | ||
|
41cad2ab96 | ||
|
6d2bd768c8 | ||
|
17eccd79dc | ||
|
def2378b7a | ||
|
9e39b598ad | ||
|
05cb27bb21 | ||
|
89e58b5105 | ||
|
0f1cce7ba2 | ||
|
2cba978c4d | ||
|
150c6dce28 | ||
|
ef97a06e99 | ||
|
48c5b12ec2 | ||
|
3c1f26970c | ||
|
20e97e50b3 | ||
|
e3616aa15c | ||
|
e7b99e4558 | ||
|
c02bdae45d | ||
|
4a8df258cd | ||
|
6b31c6f9e2 | ||
|
274fe74055 | ||
|
db827ac766 | ||
|
4d3a96536e | ||
|
cb7f47b637 | ||
|
6038eeee95 | ||
|
ce2930fb30 | ||
|
e86c1653d8 | ||
|
3efff4cb88 | ||
|
985f04d9ba | ||
|
6cf3424356 | ||
|
67e8c4d0a9 | ||
|
6c1e7ddfb2 | ||
|
99bf902a97 | ||
|
c9d3b931f7 | ||
|
d4871a1b6e | ||
|
1564f9cd05 | ||
|
aac61f746b | ||
|
348fe1182f | ||
|
96bb4ddd1d | ||
|
ec8049fcf5 | ||
|
e7b9fc8d16 | ||
|
8cc25d0fe4 | ||
|
cd62b5bedc | ||
|
9e9b76a6a9 | ||
|
5d4b0f6a7b | ||
|
a9622970cd | ||
|
2672abd9e0 | ||
|
9146caa7ae | ||
|
480bab002e | ||
|
2de8f84fb0 | ||
|
e01d563654 | ||
|
cc1368ba9e | ||
|
a63ea08036 | ||
|
b4c665d65a | ||
|
870feed3e2 | ||
|
ec1b9737d0 | ||
|
6b6bb2edce | ||
|
98c6f8974b | ||
|
f133ccbf40 | ||
|
b74ea4b14d | ||
|
7d2b751466 | ||
|
dd12b420e8 | ||
|
d25e78cefb | ||
|
8f64b37ee2 | ||
|
11fe964c46 | ||
|
8b3e8d11a8 | ||
|
eaefcc8a3f | ||
|
a412b6082a | ||
|
50b6ba8394 | ||
|
c1eea67020 | ||
|
f11e82495a | ||
|
5261bd8a89 | ||
|
b7777f405b | ||
|
1b4d215dd7 | ||
|
6c276e039c | ||
|
f354e38ec0 | ||
|
282bb25d73 | ||
|
44ea94f633 | ||
|
8f19269b34 | ||
|
3bfb699f09 | ||
|
591c89dcaa | ||
|
65895dcd33 | ||
|
ea6d6ce494 | ||
|
d734456470 | ||
|
eea70481fe | ||
|
ea9f209292 | ||
|
9717d3f69e | ||
|
1078096afe | ||
|
eab42cde10 | ||
|
c3d4426edd | ||
|
6a98a1f8aa | ||
|
9afb8c2b6d | ||
|
dc04777d5a | ||
|
3f9cc193b7 | ||
|
a40b3e341a | ||
|
2000faae13 | ||
|
28bd360291 | ||
|
3f60978f12 | ||
|
d8772033dd | ||
|
65c1bc4fd2 | ||
|
16f0d70b79 | ||
|
5188eda906 | ||
|
1ffd40e9de | ||
|
e8d4cc0cb0 | ||
|
c1ae413bcc | ||
|
d329354032 | ||
|
e2cd273303 | ||
|
b7770327f1 | ||
|
b8c9d22e4c | ||
|
2b2f2d70ab | ||
|
c81eb4cfa6 | ||
|
221a419640 | ||
|
f1b08404b8 | ||
|
28fc684ff9 | ||
|
cb402d63de | ||
|
865083f801 | ||
|
b70612a236 | ||
|
340a8a9e73 | ||
|
39787f3608 | ||
|
f2831c4a36 | ||
|
6a5466cff1 | ||
|
fbf97b4ef0 | ||
|
cfdc80f823 | ||
|
1b9fa30106 | ||
|
99fc70333a | ||
|
dac872a3f7 | ||
|
94558a24fb | ||
|
1eeba48e51 | ||
|
70b8d10d2f | ||
|
95d7e3c5a9 | ||
|
647efb0b9b | ||
|
1ac4ac7302 | ||
|
af245c20be | ||
|
e51f6d2439 | ||
|
96b6186af1 | ||
|
cfdd73e2c4 | ||
|
e3c329b656 | ||
|
aab0c9dd62 | ||
|
42ef436373 | ||
|
8d231bde1d | ||
|
a5566f1e8e | ||
|
a3813c45a0 | ||
|
0c2b776e83 | ||
|
e65c2c7954 | ||
|
9ee1d8c391 | ||
|
4b62bd0dbc | ||
|
ca5f61a043 | ||
|
c2f1a759c3 | ||
|
71658e9cd3 | ||
|
685c0f7d39 | ||
|
0d7e53d834 | ||
|
791f33b9b7 | ||
|
ed9a66862f | ||
|
cc484c6d23 | ||
|
425be312a8 | ||
|
09bf9a7d65 | ||
|
c85677af86 | ||
|
8cf7585f01 | ||
|
be82b0f592 | ||
|
7a84e26713 | ||
|
ab14a7dba0 | ||
|
804b80bb94 | ||
|
2271acca98 | ||
|
1b792e51fb | ||
|
dcc1885175 | ||
|
29bbba1e0f | ||
|
1d5798b7d0 | ||
|
525dcd012f | ||
|
6a1d2cdd7b | ||
|
6a10f6d38f | ||
|
0121248145 | ||
|
fbe41916cb | ||
|
f64437a901 | ||
|
ddbbcb6c0f | ||
|
372c004139 | ||
|
277cf9f50f | ||
|
69032a489b | ||
|
2a8899bd4f | ||
|
0c33c34ab3 | ||
|
87b4b86756 | ||
|
93224a7bf4 | ||
|
1b743a18ea | ||
|
ffac1eec98 | ||
|
417adfe869 | ||
|
294abd9164 | ||
|
56a8b5698c | ||
|
3a77266255 | ||
|
8692907421 | ||
|
3e7445275a | ||
|
603ba80d41 | ||
|
d50c673144 | ||
|
60d18d4610 | ||
|
93764fd3d4 | ||
|
fce30bb8f1 | ||
|
7c3eb20866 | ||
|
322a32547f | ||
|
b7ec4c3294 | ||
|
2e7eef2694 | ||
|
4d5f020d44 | ||
|
ce0a7a882b | ||
|
0d07d50b91 | ||
|
32d5e2d8e9 | ||
|
e55bb43544 | ||
|
2c708426cc | ||
|
ecd57240d0 | ||
|
a6b41279d8 | ||
|
7d9c7855c2 |
@@ -7,7 +7,7 @@ are part of **Wine Staging** and are licensed under the terms of the
|
||||
[LGPLv2.1](#gnu-lgpl-version-21), to stay compatible with Wine:
|
||||
|
||||
```
|
||||
Copyright (C) 2014 the Wine Staging project authors.
|
||||
Copyright (C) 2014-2015 the Wine Staging project authors.
|
||||
|
||||
Wine Staging is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
|
96
README.md
96
README.md
@@ -23,11 +23,12 @@ How to install and use Wine Staging
|
||||
|
||||
Ready-to-use packages for Wine Staging are available for a variety
|
||||
of different Linux distributions directly for download. Just follow the
|
||||
instructions available on the [website](http://www.wine-staging.com/install.html).
|
||||
instructions available on the
|
||||
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Installation).
|
||||
|
||||
When using Wine Staging there are a few differences compared to regular
|
||||
Wine. The main difference is that it is not sufficient to type `wine` to
|
||||
run it, but instead you will have to type `/opt/wine-compholio/bin/wine`.
|
||||
run it, but instead you will have to type `/opt/wine-staging/bin/wine`.
|
||||
Besides that there are also some other differences, for example additional
|
||||
configuration options to tweak performance, which are not available in regular
|
||||
Wine. All those differences are also documented on the
|
||||
@@ -37,103 +38,158 @@ Wine. All those differences are also documented on the
|
||||
Included bug fixes and improvements
|
||||
===================================
|
||||
|
||||
**Bugs fixed in Wine Staging 1.7.34-1 [135]:**
|
||||
**Bugs fixed in Wine Staging 1.7.38 [190]:**
|
||||
|
||||
* ATL IOCS data should not be stored in GWLP_USERDATA ([Wine Bug #21767](https://bugs.winehq.org/show_bug.cgi?id=21767))
|
||||
* Add Dynamic DST exceptions for Israel Standard Time ([Wine Bug #36374](https://bugs.winehq.org/show_bug.cgi?id=36374))
|
||||
* Add default ACLs for user shell folders
|
||||
* Add implementation for CreateThreadpool ([Wine Bug #35192](https://bugs.winehq.org/show_bug.cgi?id=35192))
|
||||
* Add nvapi stubs required for GPU PhysX support
|
||||
* Add performance library registry keys needed by MS SQL Server Management Studio Express 2008 R2 ([Wine Bug #33661](https://bugs.winehq.org/show_bug.cgi?id=33661))
|
||||
* Add semi-stub for GetFileVersionInfoExA/W ([Wine Bug #38098](https://bugs.winehq.org/show_bug.cgi?id=38098))
|
||||
* Add semi-stub for GetFileVersionInfoSizeExA/W ([Wine Bug #38090](https://bugs.winehq.org/show_bug.cgi?id=38090))
|
||||
* Add stub for D3DXComputeNormalMap
|
||||
* Add stub for D3DXComputeTangentFrameEx ([Wine Bug #31984](https://bugs.winehq.org/show_bug.cgi?id=31984))
|
||||
* Add stub for D3DXIntersect
|
||||
* Add stub for NtSetLdtEntries/ZwSetLdtEntries ([Wine Bug #26268](https://bugs.winehq.org/show_bug.cgi?id=26268))
|
||||
* Add stub for gdiplus.GdipCreateEffect ([Wine Bug #32163](https://bugs.winehq.org/show_bug.cgi?id=32163))
|
||||
* Add stub for ntoskrnl.ExAcquireResourceExclusiveLite
|
||||
* Add stub for ntoskrnl.ExDeleteResourceLite
|
||||
* Add stub for ntoskrnl.ExReleaseResourceForThread
|
||||
* Add stub for ntoskrnl.KeWaitForMultipleObjects
|
||||
* Add stub for ntoskrnl.Mm{Map,Unmap}LockedPages
|
||||
* Add stubs for D3DXCreateAnimationController interface
|
||||
* Add support for CopyFileEx progress callback ([Wine Bug #22692](https://bugs.winehq.org/show_bug.cgi?id=22692))
|
||||
* Add support for GetPropValue to PulseAudio backend
|
||||
* Adobe Reader needs ITextSelection_fnGetDuplicate implementation
|
||||
* Allow selection of audio device for PulseAudio backend
|
||||
* Allow special characters in pipe names ([Wine Bug #28995](https://bugs.winehq.org/show_bug.cgi?id=28995))
|
||||
* Anno 1602 installer depends on Windows 98 behavior of SHFileOperationW
|
||||
* Allow to cancel a file operation via progress callback ([Wine Bug #22690](https://bugs.winehq.org/show_bug.cgi?id=22690))
|
||||
* Allow to override number of quality levels for D3DMULTISAMPLE_NONMASKABLE. ([Wine Bug #12652](https://bugs.winehq.org/show_bug.cgi?id=12652))
|
||||
* Anno 1602 installer depends on Windows 98 behavior of SHFileOperationW ([Wine Bug #37916](https://bugs.winehq.org/show_bug.cgi?id=37916))
|
||||
* Audio stuttering and performance drops in multiple applications ([Wine Bug #30639](https://bugs.winehq.org/show_bug.cgi?id=30639))
|
||||
* Avoid crashing when broken app tries to release surface although refcount is zero ([Wine Bug #18477](https://bugs.winehq.org/show_bug.cgi?id=18477))
|
||||
* Avoid race-conditions in NtReadFile() operations with write watches.
|
||||
* Avoid race-conditions of async WSARecv() operations with write watches.
|
||||
* Avoid race-conditions with write watches in WS2_async_accept.
|
||||
* Avoid unloading msctf library while textservices are activated ([Wine Bug #31579](https://bugs.winehq.org/show_bug.cgi?id=31579))
|
||||
* Avseq crashes when multisampling is enabled ([Wine Bug #31998](https://bugs.winehq.org/show_bug.cgi?id=31998))
|
||||
* Basic handling of write watches triggered while we're on the signal stack.
|
||||
* Basic support for CUDA
|
||||
* Black & White needs DXTn software decoding support ([Wine Bug #14939](https://bugs.winehq.org/show_bug.cgi?id=14939))
|
||||
* Correctly treat '.' when checking for empty directories ([Wine Bug #26272](https://bugs.winehq.org/show_bug.cgi?id=26272))
|
||||
* CPU-Z fails to start because GetLogicalProcessorInformationEx returns FALSE
|
||||
* Child of Light expects FindConnectionPoint to succeed and increase the refcount ([Wine Bug #36408](https://bugs.winehq.org/show_bug.cgi?id=36408))
|
||||
* CreateProcess does not prioritize the working directory over the system search path ([Wine Bug #23934](https://bugs.winehq.org/show_bug.cgi?id=23934))
|
||||
* D3DCompileShader should filter specific warning messages ([Wine Bug #33770](https://bugs.winehq.org/show_bug.cgi?id=33770))
|
||||
* Do not append duplicate NULL characters when importing keys with regedit ([Wine Bug #37575](https://bugs.winehq.org/show_bug.cgi?id=37575))
|
||||
* Do not fail when a used context is passed to wglShareLists ([Wine Bug #11436](https://bugs.winehq.org/show_bug.cgi?id=11436))
|
||||
* Don't fill KdHelp structure for usermode applications ([Wine Bug #37272](https://bugs.winehq.org/show_bug.cgi?id=37272))
|
||||
* EA Origin needs support for job objects ([Wine Bug #33723](https://bugs.winehq.org/show_bug.cgi?id=33723))
|
||||
* Emulate access to KI_USER_SHARED_DATA kernel page on x86_64 ([Wine Bug #33849](https://bugs.winehq.org/show_bug.cgi?id=33849))
|
||||
* Enforce that surfaces are flushed after ReleaseDC
|
||||
* Ensure NtProtectVirtualMemory and NtCreateSection are on separate pages ([Wine Bug #33162](https://bugs.winehq.org/show_bug.cgi?id=33162))
|
||||
* Ensure X11 input events are handled even without explicit message loop ([Wine Bug #8854](https://bugs.winehq.org/show_bug.cgi?id=8854))
|
||||
* Exception during start of fr-043 caused by missing DXTn support ([Wine Bug #37391](https://bugs.winehq.org/show_bug.cgi?id=37391))
|
||||
* Expose PKEY_AudioEndpoint_PhysicalSpeakers device property in PulseAudio driver
|
||||
* FEAR 1 installer expects basic_string_wchar_dtor to return NULL ([Wine Bug #37358](https://bugs.winehq.org/show_bug.cgi?id=37358))
|
||||
* Fallback to global key state for threads without a queue ([Wine Bug #27238](https://bugs.winehq.org/show_bug.cgi?id=27238))
|
||||
* Fix NULL dereference in ICSeqCompressFrameStart ([Wine Bug #27595](https://bugs.winehq.org/show_bug.cgi?id=27595))
|
||||
* Fix access violation when calling GetStringTypeW with NULL src. ([Wine Bug #37759](https://bugs.winehq.org/show_bug.cgi?id=37759))
|
||||
* Fix black screen on startup introduced by pixelformat changes. ([Wine Bug #35950](https://bugs.winehq.org/show_bug.cgi?id=35950))
|
||||
* Fix color key regression causing pink rectangles around text ([Wine Bug #37748](https://bugs.winehq.org/show_bug.cgi?id=37748))
|
||||
* Fix check for end_frame in RtlUnwindEx on x86_64. ([Wine Bug #34254](https://bugs.winehq.org/show_bug.cgi?id=34254))
|
||||
* Fix comparison of punctuation characters in lstrcmp ([Wine Bug #10767](https://bugs.winehq.org/show_bug.cgi?id=10767))
|
||||
* Fix condition mask handling in RtlVerifyVersionInfo ([Wine Bug #36143](https://bugs.winehq.org/show_bug.cgi?id=36143))
|
||||
* Fix crash in Space Rangers2 caused by missing DXTn support ([Wine Bug #24983](https://bugs.winehq.org/show_bug.cgi?id=24983))
|
||||
* Fix crash in clip_cursor_notify caused by uninitialized TLS ([Wine Bug #36915](https://bugs.winehq.org/show_bug.cgi?id=36915))
|
||||
* Fix crash of Trine Demo on start ([Wine Bug #19231](https://bugs.winehq.org/show_bug.cgi?id=19231))
|
||||
* Fix crash of winedevice when relocation entry crosses page boundary ([Wine Bug #28254](https://bugs.winehq.org/show_bug.cgi?id=28254))
|
||||
* Fix cursor clip regression / broken raw input in multiple games ([Wine Bug #33479](https://bugs.winehq.org/show_bug.cgi?id=33479))
|
||||
* Fix flickering introduced by pixelformat changes. ([Wine Bug #35718](https://bugs.winehq.org/show_bug.cgi?id=35718))
|
||||
* Fix for ConnectNamedPort return value in overlapped mode ([Wine Bug #16550](https://bugs.winehq.org/show_bug.cgi?id=16550))
|
||||
* Fix for programs leaking wndproc slots ([Wine Bug #32451](https://bugs.winehq.org/show_bug.cgi?id=32451))
|
||||
* Fix graphical corruption in FarCry 3 with NVIDIA drivers ([Wine Bug #35062](https://bugs.winehq.org/show_bug.cgi?id=35062))
|
||||
* Fix gray screen on startup introduced by pixelformat changes. ([Wine Bug #35975](https://bugs.winehq.org/show_bug.cgi?id=35975))
|
||||
* Fix handling of empty section and key name for profile files. ([Wine Bug #8036](https://bugs.winehq.org/show_bug.cgi?id=8036))
|
||||
* Fix handling of invert_y in DrawTextExW ([Wine Bug #22109](https://bugs.winehq.org/show_bug.cgi?id=22109))
|
||||
* Fix handling of subdirectory in FtpFindFirstFile ([Wine Bug #16526](https://bugs.winehq.org/show_bug.cgi?id=16526))
|
||||
* Fix issues when driver dispatch routine returns different status codes ([Wine Bug #30155](https://bugs.winehq.org/show_bug.cgi?id=30155))
|
||||
* Fix handling of window attributes for WS_EX_LAYERED | WS_EX_COMPOSITED ([Wine Bug #37876](https://bugs.winehq.org/show_bug.cgi?id=37876))
|
||||
* Fix issues with dragging layers between images in Adobe Photoshop 7.0 ([Wine Bug #12007](https://bugs.winehq.org/show_bug.cgi?id=12007))
|
||||
* Fix missing video introduced by pixelformat changes. ([Wine Bug #36900](https://bugs.winehq.org/show_bug.cgi?id=36900))
|
||||
* Fix parameters for ConvertToIndexedBlendedMesh stub ([Wine Bug #36449](https://bugs.winehq.org/show_bug.cgi?id=36449))
|
||||
* Fix possible segfault in pulse_rd_loop of PulseAudio backend
|
||||
* Fix race-condition when threads are killed during shutdown
|
||||
* Fix return value of ScrollWindowEx for invisible windows ([Wine Bug #37706](https://bugs.winehq.org/show_bug.cgi?id=37706))
|
||||
* Fix texture corruption in CSI: Fatal Conspiracy ([Wine Bug #33768](https://bugs.winehq.org/show_bug.cgi?id=33768))
|
||||
* Fix unintentional leaks with ntdll internals
|
||||
* Fix wined3d performance drop introduced by pixelformat changes. ([Wine Bug #35655](https://bugs.winehq.org/show_bug.cgi?id=35655))
|
||||
* Fix wrong colors in Wolfenstein (2009) ([Wine Bug #34692](https://bugs.winehq.org/show_bug.cgi?id=34692))
|
||||
* Fix wrong defition of ntoskrnl.IoReleaseCancelSpinLock function.
|
||||
* Games For Windows Live 1.x expects a valid linker version in the PE header ([Wine Bug #28768](https://bugs.winehq.org/show_bug.cgi?id=28768))
|
||||
* GetMonitorInfo returns the same name for all monitors ([Wine Bug #37709](https://bugs.winehq.org/show_bug.cgi?id=37709))
|
||||
* GetSecurityInfo returns NULL DACL for process object ([Wine Bug #15980](https://bugs.winehq.org/show_bug.cgi?id=15980))
|
||||
* Graphical issues in Inquisitor ([Wine Bug #32490](https://bugs.winehq.org/show_bug.cgi?id=32490))
|
||||
* Hearthstone fails to start ([Wine Bug #36216](https://bugs.winehq.org/show_bug.cgi?id=36216))
|
||||
* IOCTL_DVD_READ_STRUCTURE expects the wrong size of output buffer for some requests ([Wine Bug #37767](https://bugs.winehq.org/show_bug.cgi?id=37767))
|
||||
* Ignore unsupported alpha channels in TIFF decoder ([Wine Bug #38027](https://bugs.winehq.org/show_bug.cgi?id=38027))
|
||||
* Ignore unsupported flags for CoInternetSetFeatureEnabled ([Wine Bug #35197](https://bugs.winehq.org/show_bug.cgi?id=35197))
|
||||
* Implement D3DXGetShaderOutputSemantics
|
||||
* Implement ID3DXEffect::FindNextValidTechnique ([Wine Bug #34101](https://bugs.winehq.org/show_bug.cgi?id=34101))
|
||||
* Implement IDXGIOutput::GetDesc
|
||||
* Implement SetFileInformationByHandle
|
||||
* Implement a Microsoft Yahei replacement font ([Wine Bug #13829](https://bugs.winehq.org/show_bug.cgi?id=13829))
|
||||
* Implement additional stubs for vcomp dlls ([Wine Bug #31640](https://bugs.winehq.org/show_bug.cgi?id=31640))
|
||||
* Implement an Arial replacement font ([Wine Bug #32323](https://bugs.winehq.org/show_bug.cgi?id=32323))
|
||||
* Implement exclusive mode in PulseAudio backend ([Wine Bug #37042](https://bugs.winehq.org/show_bug.cgi?id=37042))
|
||||
* Implement ntoskrnl driver testing framework.
|
||||
* Implement ntoskrnl.KeInitializeMutex
|
||||
* Implement stub for ntoskrnl.IoGetAttachedDeviceReference
|
||||
* Implement stub for ntoskrnl.KeDelayExecutionThread.
|
||||
* Implement stubs for ntoskrnl.Ex{Acquire,Release}FastMutexUnsafe
|
||||
* Implement stubs for ntoskrnl.ObReferenceObjectByPointer and ntoskrnl.ObDereferenceObject
|
||||
* Implement threadpool timers ([Wine Bug #37306](https://bugs.winehq.org/show_bug.cgi?id=37306))
|
||||
* Implement threadpool wait objects
|
||||
* Implement threadpool work items ([Wine Bug #32531](https://bugs.winehq.org/show_bug.cgi?id=32531))
|
||||
* Improve stub for AEV_GetVolumeRange ([Wine Bug #35658](https://bugs.winehq.org/show_bug.cgi?id=35658))
|
||||
* Improve stubs for AEV_{Get,Set}MasterVolumeLevel
|
||||
* Improve stubs for AEV_{Get,Set}Mute
|
||||
* Improvement for heap allocation performance
|
||||
* Initialize irp.Tail.Overlay.OriginalFileObject with stub file object ([Wine Bug #37537](https://bugs.winehq.org/show_bug.cgi?id=37537))
|
||||
* Increase wineconsole commandline buffer size ([Wine Bug #34814](https://bugs.winehq.org/show_bug.cgi?id=34814))
|
||||
* Jedi Knight: Dark Forces II crashes with winmm set to native ([Wine Bug #37983](https://bugs.winehq.org/show_bug.cgi?id=37983))
|
||||
* Lego Stunt Rally requires DXTn software de/encoding support ([Wine Bug #25486](https://bugs.winehq.org/show_bug.cgi?id=25486))
|
||||
* Limit cross thread access to ImmSet* functions ([Wine Bug #35361](https://bugs.winehq.org/show_bug.cgi?id=35361))
|
||||
* Lockfree algorithm for filedescriptor cache (improves file access speed)
|
||||
* MSVCRT crashes when NULL is passed as string to atof or strtod ([Wine Bug #32550](https://bugs.winehq.org/show_bug.cgi?id=32550))
|
||||
* MSYS2 expects correct handling of WRITECOPY memory protection ([Wine Bug #35561](https://bugs.winehq.org/show_bug.cgi?id=35561))
|
||||
* Make it possible to change media center / tablet pc status ([Wine Bug #18732](https://bugs.winehq.org/show_bug.cgi?id=18732))
|
||||
* MediaCoder needs CUDA for video encoding ([Wine Bug #37664](https://bugs.winehq.org/show_bug.cgi?id=37664))
|
||||
* Multiple applications need EnumDisplayDevicesW implementation ([Wine Bug #34978](https://bugs.winehq.org/show_bug.cgi?id=34978))
|
||||
* Multiple applications start wrong executable if whitespace present in name ([Wine Bug #19666](https://bugs.winehq.org/show_bug.cgi?id=19666))
|
||||
* Need for Speed 3 installer requires devices in HKEY_DYN_DATA ([Wine Bug #7115](https://bugs.winehq.org/show_bug.cgi?id=7115))
|
||||
* Other Pipelight-specific enhancements
|
||||
* Port Royale doesn't display ocean correctly ([Wine Bug #17913](https://bugs.winehq.org/show_bug.cgi?id=17913))
|
||||
* Prevent window managers from grouping all wine programs together ([Wine Bug #32699](https://bugs.winehq.org/show_bug.cgi?id=32699))
|
||||
* Process APC calls before starting process
|
||||
* Process Hacker 2.x needs ntoskrnl.ProbeForRead ([Wine Bug #38103](https://bugs.winehq.org/show_bug.cgi?id=38103))
|
||||
* Properly track handle count of wineserver objects
|
||||
* Reduced SetTimer minimum value from 10 ms to 5 ms (improves Silverlight framerates)
|
||||
* Return an error when trying to open a terminated process ([Wine Bug #37087](https://bugs.winehq.org/show_bug.cgi?id=37087))
|
||||
* Return correct IMediaSeeking stream positions in quartz ([Wine Bug #23174](https://bugs.winehq.org/show_bug.cgi?id=23174))
|
||||
* Return correct values for GetThreadTimes function ([Wine Bug #20230](https://bugs.winehq.org/show_bug.cgi?id=20230))
|
||||
* Return more context attributes in schan_InitializeSecurityContextW ([Wine Bug #37527](https://bugs.winehq.org/show_bug.cgi?id=37527))
|
||||
* SO_CONNECT_TIME returns the appropriate time
|
||||
* Scrolling causes mouse and screen to lock in Call to Power II ([Wine Bug #34559](https://bugs.winehq.org/show_bug.cgi?id=34559))
|
||||
* Send WM_PAINT event during dialog creation ([Wine Bug #35652](https://bugs.winehq.org/show_bug.cgi?id=35652))
|
||||
* Set last error when GetRawInputDeviceList fails ([Wine Bug #37667](https://bugs.winehq.org/show_bug.cgi?id=37667))
|
||||
* Super Mario 3: Mario Forever fails to load keyboard mapping from profile files. ([Wine Bug #18099](https://bugs.winehq.org/show_bug.cgi?id=18099))
|
||||
* Support for AllocateAndGetTcpExTableFromStack ([Wine Bug #34372](https://bugs.winehq.org/show_bug.cgi?id=34372))
|
||||
* Support for BindImageEx ([Wine Bug #3591](https://bugs.winehq.org/show_bug.cgi?id=3591))
|
||||
* Support for CSMT (command stream) to increase graphic performance ([Wine Bug #11674](https://bugs.winehq.org/show_bug.cgi?id=11674))
|
||||
* Support for CUDA GPU video decoding
|
||||
* Support for D3DXComputeNormals ([Wine Bug #26379](https://bugs.winehq.org/show_bug.cgi?id=26379))
|
||||
* Support for D3DXGetShaderInputSemantics ([Wine Bug #22682](https://bugs.winehq.org/show_bug.cgi?id=22682))
|
||||
* Support for DDS file format in D3DXSaveTextureToFileInMemory ([Wine Bug #26898](https://bugs.winehq.org/show_bug.cgi?id=26898))
|
||||
* Support for DOS hidden/system file attributes ([Wine Bug #9158](https://bugs.winehq.org/show_bug.cgi?id=9158))
|
||||
* Support for Dynamic DST (daylight saving time) information in registry
|
||||
* Support for GdipCreateRegionRgnData ([Wine Bug #34843](https://bugs.winehq.org/show_bug.cgi?id=34843))
|
||||
* Support for GetFinalPathNameByHandle ([Wine Bug #36073](https://bugs.winehq.org/show_bug.cgi?id=36073))
|
||||
* Support for GetFinalPathNameByHandle ([Wine Bug #34851](https://bugs.winehq.org/show_bug.cgi?id=34851))
|
||||
* Support for GetSystemTimes ([Wine Bug #19813](https://bugs.winehq.org/show_bug.cgi?id=19813))
|
||||
* Support for GetVolumePathName
|
||||
* Support for H264 DXVA2 GPU video decoding through vaapi
|
||||
* Support for ID3DXFont::DrawTextA/W ([Wine Bug #24754](https://bugs.winehq.org/show_bug.cgi?id=24754))
|
||||
* Support for ID3DXSkinInfoImpl_UpdateSkinnedMesh ([Wine Bug #32572](https://bugs.winehq.org/show_bug.cgi?id=32572))
|
||||
* Support for ITextDocument_fnRange function ([Wine Bug #12458](https://bugs.winehq.org/show_bug.cgi?id=12458))
|
||||
@@ -141,6 +197,8 @@ Included bug fixes and improvements
|
||||
* Support for Junction Points ([Wine Bug #12401](https://bugs.winehq.org/show_bug.cgi?id=12401))
|
||||
* Support for KF_FLAG_DEFAULT_PATH in SHGetKnownFolderPath ([Wine Bug #30385](https://bugs.winehq.org/show_bug.cgi?id=30385))
|
||||
* Support for LoadIconMetric ([Wine Bug #35375](https://bugs.winehq.org/show_bug.cgi?id=35375))
|
||||
* Support for MPEG2 DXVA2 GPU video decoding through vaapi
|
||||
* Support for NVIDIA video encoder library (nvencodeapi)
|
||||
* Support for NtQuerySection ([Wine Bug #37338](https://bugs.winehq.org/show_bug.cgi?id=37338))
|
||||
* Support for NtSetInformationFile class FileDispositionInformation ([Wine Bug #30397](https://bugs.winehq.org/show_bug.cgi?id=30397))
|
||||
* Support for PulseAudio backend for audio ([Wine Bug #10495](https://bugs.winehq.org/show_bug.cgi?id=10495))
|
||||
@@ -149,29 +207,27 @@ Included bug fixes and improvements
|
||||
* Support for SLGetWindowsInformationDWORD ([Wine Bug #36709](https://bugs.winehq.org/show_bug.cgi?id=36709))
|
||||
* Support for TOOLTIPS_GetTipText edge cases ([Wine Bug #30648](https://bugs.winehq.org/show_bug.cgi?id=30648))
|
||||
* Support for TransmitFile ([Wine Bug #5048](https://bugs.winehq.org/show_bug.cgi?id=5048))
|
||||
* Support for UTF7 encoding/decoding ([Wine Bug #27388](https://bugs.winehq.org/show_bug.cgi?id=27388))
|
||||
* Support for WTSEnumerateProcessesW ([Wine Bug #29903](https://bugs.winehq.org/show_bug.cgi?id=29903))
|
||||
* Support for extra large and jumbo icon lists in shell32 ([Wine Bug #24721](https://bugs.winehq.org/show_bug.cgi?id=24721))
|
||||
* Support for inherited file ACLs ([Wine Bug #34406](https://bugs.winehq.org/show_bug.cgi?id=34406))
|
||||
* Support for interface change notifications ([Wine Bug #32328](https://bugs.winehq.org/show_bug.cgi?id=32328))
|
||||
* Support for loader dll redirections
|
||||
* Support for named pipe message mode (Linux only) ([Wine Bug #17195](https://bugs.winehq.org/show_bug.cgi?id=17195))
|
||||
* Support for non-blocking SIO_ADDRESS_LIST_CHANGE requests ([Wine Bug #38062](https://bugs.winehq.org/show_bug.cgi?id=38062))
|
||||
* Support for pasting HTML from Unix applications ([Wine Bug #7372](https://bugs.winehq.org/show_bug.cgi?id=7372))
|
||||
* Support for process ACLs ([Wine Bug #22006](https://bugs.winehq.org/show_bug.cgi?id=22006))
|
||||
* Support for setcap on wine-preloader ([Wine Bug #26256](https://bugs.winehq.org/show_bug.cgi?id=26256))
|
||||
* Support for stored file ACLs ([Wine Bug #31858](https://bugs.winehq.org/show_bug.cgi?id=31858))
|
||||
* Support for shell32 file operation progress dialog
|
||||
* Support for stored file ACLs ([Wine Bug #33576](https://bugs.winehq.org/show_bug.cgi?id=33576))
|
||||
* Try harder to get the host name address in getaddrinfo() ([Wine Bug #29609](https://bugs.winehq.org/show_bug.cgi?id=29609))
|
||||
* Tumblebugs 2 requires DXTn software encoding support ([Wine Bug #29586](https://bugs.winehq.org/show_bug.cgi?id=29586))
|
||||
* Update a XIM candidate position when cursor location changes ([Wine Bug #30938](https://bugs.winehq.org/show_bug.cgi?id=30938))
|
||||
* Use actual program name if available to describe PulseAudio streams
|
||||
* Use manual relay for RunDLL_CallEntry16 in shell32 ([Wine Bug #23033](https://bugs.winehq.org/show_bug.cgi?id=23033))
|
||||
* Voobly expects correct handling of WRITECOPY memory protection ([Wine Bug #29384](https://bugs.winehq.org/show_bug.cgi?id=29384))
|
||||
* WSARecv should call SetLastError on success ([Wine Bug #31438](https://bugs.winehq.org/show_bug.cgi?id=31438))
|
||||
* Wine ignores IDF_CHECKFIRST flag in SetupPromptForDisk ([Wine Bug #20465](https://bugs.winehq.org/show_bug.cgi?id=20465))
|
||||
* Workaround for shlwapi URLs with relative paths
|
||||
* XEMBED support for embedding Wine windows inside Linux applications
|
||||
* nVidia driver for high-end laptop cards does not list all supported resolutions
|
||||
* eRacer Demo doesn't correctly display text ([Wine Bug #29598](https://bugs.winehq.org/show_bug.cgi?id=29598))
|
||||
* ntdll is missing WinSqm[Start|End]Session implementation ([Wine Bug #31971](https://bugs.winehq.org/show_bug.cgi?id=31971))
|
||||
* wglDescribePixelFormat should return max index for NULL descriptor ([Wine Bug #6176](https://bugs.winehq.org/show_bug.cgi?id=6176))
|
||||
* wininet should allow Accept-Encoding header for HTTP/1.0 ([Wine Bug #37046](https://bugs.winehq.org/show_bug.cgi?id=37046))
|
||||
|
||||
|
144
debian/changelog
vendored
144
debian/changelog
vendored
@@ -1,3 +1,147 @@
|
||||
wine-staging (1.7.38) unstable; urgency=low
|
||||
* Various improvements to patchupdate.py.
|
||||
* Various improvements to dxva2 vaapi support.
|
||||
* Long overdue update to the TransmitFile patches.
|
||||
* Disabled patchset for reg.exe cleanup (partially accepted upstream).
|
||||
* Added patch to report the correct refresh rates for some NVIDIA cards.
|
||||
* Added patch to mark DllCanUnloadNow and DllGetClassObject as private (by Amine Khaldi, wine-patched/pull/3).
|
||||
* Added patch to skip Wine specific __wine_check_for_events calls in ReactOS (by Amine Khaldi, wine-patched/pull/4).
|
||||
* Added patch to declare pDirectInputCreateEx in a MSVC compatible way (by Amine Khaldi, wine-patched/pull/5).
|
||||
* Added patch to complete and properly pack DNS_HEADER structure (by Amine Khaldi, wine-patched/pull/6).
|
||||
* Added patch to fix race-condition when threads are killed during shutdown.
|
||||
* Added patch to avoid deadlock by using _exit() in NtTerminateProcess.
|
||||
* Added patch to fallback to global key state for threads without a queue.
|
||||
* Added patch to implement SetFileInformationByHandle.
|
||||
* Added patch for CopyFileEx progress callback and cancellation support.
|
||||
* Added first set of patches for job objects (by Andrew Cook).
|
||||
* Added patch for stub of gdiplus.GdipCreateEffect.
|
||||
* Added patches for ntoskrnl.ProbeFor{Read,Write}.
|
||||
* Added patch for support of shell32 file operation progress dialog.
|
||||
* Added patch for basic implementation of job objects.
|
||||
* Added patch to display animations for SHFileOperation progress dialog.
|
||||
* Added patch to enforce that surfaces are flushed after ReleaseDC.
|
||||
* Added patch to implement IProgressDialog::SetAnimation.
|
||||
* Added patch in order to allow to override number of quality levels for D3DMULTISAMPLE_NONMASKABLE.
|
||||
* Added patch for job object completion support.
|
||||
* Added patch to properly track handle count of wineserver objects.
|
||||
* Added patch to implement JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE.
|
||||
* Added patch to implement PROGDLG_AUTOTIME for IProgressDialog.
|
||||
* Added patch to implement support for NULL job handles in IsProcessInJob.
|
||||
* Added patch to implement support for waiting on job object.
|
||||
* Added patch to fix crash in clip_cursor_notify caused by uninitialized TLS.
|
||||
* Added patches to make various functions in d3d8 / ddraw hotpatchable (required for fraps).
|
||||
* Added patch to make GetLogicalProcessorInformationEx a stub which returns TRUE.
|
||||
* Added patches to fix race-condition when closing browseui IProcessDialog.
|
||||
* Added patch to avoid unloading msctf library while textservices are activated.
|
||||
* Added patch to correct DDSCAPS2 and DDSURFACEDESC2 structure (by Amine Khaldi, wine-patched/pull/7).
|
||||
* Added patch to fix crash when trying to switch back to a 16-bit stack.
|
||||
* Added patches to improve performance by reusing old async IO structure if possible.
|
||||
* Added patch to increase wineconsole commandline buffer size.
|
||||
* Added patch to replace hardcoded values with sizeof(GUID) for d3dxof.
|
||||
* Added patch to implement cuModuleLoad wrapper function.
|
||||
* Added patch to process APC calls before starting process.
|
||||
* Removed patch to properly call DriverUnload when unloading device drivers (accepted upstream).
|
||||
* Removed patch to allow Accept-Encoding for HTTP/1.0 in wininet (accepted upstream).
|
||||
* Removed patch to declare pDirectInputCreateEx in a MSVC compatible way (accepted upstream).
|
||||
* Removed patch to limit cross thread access to ImmSet* functions (accepted upstream).
|
||||
* Removed patch to fix arguments for OSMesaMakeCurrent when using 16 bit formats (accepted upstream).
|
||||
* Removed patch to fix memory leak in ApplicationAssociationRegistration_QueryCurrentDefault (accepted upstream).
|
||||
* Removed patch to complete and properly pack DNS_HEADER structure (accepted upstream).
|
||||
* Removed patch to avoid accessing stack below ESP when restoring thread context (accepted upstream).
|
||||
* Removed patch to fix mouse jittering in Planetside 2 (accepted upstream).
|
||||
* Removed patch to handle write watches while we're on the signal stack (accepted upstream).
|
||||
* Removed patch with tests for NtQueryLicenseKey (accepted upstream).
|
||||
* Removed patch to fix crash when trying to switch back to a 16-bit stack (accepted upstream).
|
||||
* Removed patch to fix definition of SECTION_BASIC_INFORMATION and SECTION_IMAGE_INFORMATION (accepted upstream).
|
||||
* Removed patch to add library override instead of closing winecfg when pressing ENTER (accepted upstream).
|
||||
* Removed patch to fix init of LONGLONG variable with a negative value in TGA decoder (accepted upstream).
|
||||
* Removed patch to fix parameters for ConvertToIndexedBlendedMesh stub (accepted upstream).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Sat, 07 Mar 2015 23:09:11 +0100
|
||||
|
||||
wine-staging (1.7.37) unstable; urgency=low
|
||||
* Fix a TRACE line in the iphlpapi-TCP_Table patchset.
|
||||
* Fix an issue in the d3dx9_36-GetShaderSemantics patchset.
|
||||
* Update patchset for RtlUnwindEx on x86_64 and fix a second bug.
|
||||
* Updated patch for DXTn support to avoid libtxc_dxtn as compile time dependency.
|
||||
* Added patch to avoid race-conditions in NtReadFile() operations with write watches.
|
||||
* Added patch to avoid race-conditions with write watches in WS2_async_accept.
|
||||
* Added patch to implement D3DXGetShaderOutputSemantics.
|
||||
* Added patch to implement basic handling of write watches while we're on the signal stack.
|
||||
* Added patch to add stub for ntoskrnl.ExAcquireResourceExclusiveLite.
|
||||
* Added patch to add stub for ntoskrnl.ExReleaseResourceForThread.
|
||||
* Added patch to add stub for ntoskrnl.ExDeleteResourceLite.
|
||||
* Added patch to avoid accessing stack below ESP when restoring thread context.
|
||||
* Added patch to implement IApplicationAssociationRegistration::QueryCurrentDefault.
|
||||
* Added patch to improve stubs for AEV_{Get,Set}MasterVolumeLevel.
|
||||
* Added patch to improve stubs for AEV_{Get,Set}Mute.
|
||||
* Added patch to implement semi-stub for GetFileVersionInfoSizeExA/W.
|
||||
* Added patch to implement semi-stub for GetFileVersionInfoExA/W.
|
||||
* Added patch to ignore unsupported alpha channels in TIFF decoder.
|
||||
* Added patch to add stub for ntoskrnl.Mm{Map,Unmap}LockedPages.
|
||||
* Added patch to implement ntoskrnl.KeInitializeMutex.
|
||||
* Added patch for support of non-blocking SIO_ADDRESS_LIST_CHANGE requests.
|
||||
* Added patch for MPEG2/H264 DXVA2 video decoding through vaapi.
|
||||
* Removed patches for UTF7 support (accepted upstream).
|
||||
* Removed patches for SIO_ADDRESS_LIST_CHANGE ioctl (accepted upstream).
|
||||
* Removed patch for IApplicationAssociationRegistration::QueryCurrentDefault (accepted upstream).
|
||||
* Removed patch for IDirectPlayVoiceClient::GetCompressionTypes (accepted upstream).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Sun, 22 Feb 2015 06:58:09 +0100
|
||||
|
||||
wine-staging (1.7.36) unstable; urgency=low
|
||||
* Fix an incompatibility of patchinstall.sh with non-bash shells under specific situations.
|
||||
* Improve dinput-Events patch to be compatible with applications which do not explicitly poll for input.
|
||||
* Added patch to properly call DriverUnload when unloading device drivers.
|
||||
* Added patch to fix check for end_frame in RtlUnwindEx on x86_64.
|
||||
* Added patch to fix mouse jittering in Planetside 2.
|
||||
* Added patch to implement additional stubs for vcomp dlls.
|
||||
* Added patchset to implement Vista+ threadpool functions for work / timers.
|
||||
* Added patchset for Vista+ threadpool wait objects.
|
||||
* Added patch to fix crash in Jedi Knight: Dark Forces II when winmm is set to native.
|
||||
* Added patch to fix arguments for OSMesaMakeCurrent when using 16 bit formats.
|
||||
* Added patch to add library override instead of closing winecfg when pressing ENTER over the combobox.
|
||||
* Added patchset for various improvements and cleanup of reg.exe.
|
||||
* Added patch to add performance library registry keys needed by MS SQL Server Management Studio Express 2008 R2.
|
||||
* Added patch to implement NVIDIA video encoder library (nvencodeapi).
|
||||
* Added patch to make nvcuda.dll compatible with CUDA 7.0.
|
||||
* Added patch to implement stub for ntoskrnl.IoGetAttachedDeviceReference.
|
||||
* Added patch to implement stubs for ntoskrnl.Ex{Acquire,Release}FastMutexUnsafe.
|
||||
* Added patch to implement stubs for ntoskrnl.ObReferenceObjectByPointer and ntoskrnl.ObDereferenceObject.
|
||||
* Added patch to implement stub for ntoskrnl.KeDelayExecutionThread.
|
||||
* Added patch to improve various ntoskrnl stub functions.
|
||||
* Added patch to fix wrong defition of ntoskrnl.IoReleaseCancelSpinLock function.
|
||||
* Added patch to improve stub for AEV_GetVolumeRange.
|
||||
* Removed patch to add additional tests for SLGetWindowsInformationDWORD (accepted upstream).
|
||||
* Removed patch to avoid filling KdHelp structure for usermode applications (accepted upstream).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Sun, 08 Feb 2015 19:14:24 +0100
|
||||
|
||||
wine-staging (1.7.35) unstable; urgency=low
|
||||
* Add stub for KeWaitForMultipleObjects.
|
||||
* Add support for patchinstall.sh parameters '--no-patchlist' and '--no-autoconf'.
|
||||
* Add support for Gentoo epatch backend to patchinstall.sh.
|
||||
* Fix compile warnings on x86_64 in several patchsets.
|
||||
* Automatically enable fallback method to apply patches when running from inside of a git subdirectory.
|
||||
* Synchronize CSMT patchset with https://github.com/stefand/wine.
|
||||
* Several improvements to make nvcuvid (CUDA video decoding) better compatible with x86_64.
|
||||
* Properly wrap CUDA stream callbacks by forwarding them to a separate worker thread.
|
||||
* Added patch to quote program name in ShellExecute[Ex] when it contains spaces.
|
||||
* Added patch to implement support for DDS file format in D3DXSaveTextureToFileInMemory.
|
||||
* Added patch to avoid appending duplicate NULL character when importing keys with regedit.
|
||||
* Added patch for IConnectionPoint/INetworkListManagerEvents stub interface.
|
||||
* Added patch to fix init of LONGLONG variable with a negative value in TGA decoder.
|
||||
* Added patch to implement stubs for D3DXCreateAnimationController interface.
|
||||
* Added patch to implement semi-stub for IDirectPlayVoiceClient::GetCompressionTypes.
|
||||
* Added patch to fix cursor clip regression / broken raw input in multiple games.
|
||||
* Added patches to implement ntoskrnl driver testing framework.
|
||||
* Added patch to fix handling of window attributes for WS_EX_LAYERED | WS_EX_COMPOSITED.
|
||||
* Removed patch to fix RandR on some broken nVidia systems (accepted upstream).
|
||||
* Removed patch to set last error on success in WSARecv (accepted upstream).
|
||||
* Removed patch to fix handling of subdirectory in FtpFindFirstFile (accepted upstream).
|
||||
* Removed patch to initialize irp.Tail.Overlay.OriginalFileObject with stub file object (accepted upstream).
|
||||
* Removed patch to fix incorrect behaviour of PathIsDirectoryEmptyW (accepted upstream).
|
||||
* Removed patch to store IOCS data in a property instead of GWLP_USERDATA (accepted upstream).
|
||||
* Removed patch to fix color key regression (fixed upstream).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Sat, 24 Jan 2015 16:03:35 +0100
|
||||
|
||||
wine-staging (1.7.34-1) unstable; urgency=low
|
||||
* Debian/Ubuntu specific package dependency fix (no changes for other distros).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Sun, 11 Jan 2015 19:14:09 +0100
|
||||
|
5
debian/control
vendored
5
debian/control
vendored
@@ -48,6 +48,7 @@ Build-Depends: autotools-dev,
|
||||
libtiff5-dev | libtiff4-dev | libtiff-dev,
|
||||
libtxc-dxtn-s2tc-dev,
|
||||
libv4l-dev,
|
||||
libva-dev,
|
||||
libx11-dev,
|
||||
libxcomposite-dev,
|
||||
libxcursor-dev,
|
||||
@@ -95,6 +96,8 @@ Recommends: libcapi20-3,
|
||||
libtiff5 | libtiff4,
|
||||
libtxc-dxtn-s2tc0,
|
||||
libv4l-0,
|
||||
libva-drm1,
|
||||
libva-x11-1,
|
||||
libxcomposite1,
|
||||
libxcursor1,
|
||||
libxi6,
|
||||
@@ -149,6 +152,8 @@ Recommends: libcapi20-3,
|
||||
libtiff5 | libtiff4,
|
||||
libtxc-dxtn-s2tc0,
|
||||
libv4l-0,
|
||||
libva-drm1,
|
||||
libva-x11-1,
|
||||
libxcomposite1,
|
||||
libxcursor1,
|
||||
libxi6,
|
||||
|
5
debian/tools/README.md.in
vendored
5
debian/tools/README.md.in
vendored
@@ -23,11 +23,12 @@ How to install and use Wine Staging
|
||||
|
||||
Ready-to-use packages for Wine Staging are available for a variety
|
||||
of different Linux distributions directly for download. Just follow the
|
||||
instructions available on the [website](http://www.wine-staging.com/install.html).
|
||||
instructions available on the
|
||||
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Installation).
|
||||
|
||||
When using Wine Staging there are a few differences compared to regular
|
||||
Wine. The main difference is that it is not sufficient to type `wine` to
|
||||
run it, but instead you will have to type `/opt/wine-compholio/bin/wine`.
|
||||
run it, but instead you will have to type `/opt/wine-staging/bin/wine`.
|
||||
Besides that there are also some other differences, for example additional
|
||||
configuration options to tweak performance, which are not available in regular
|
||||
Wine. All those differences are also documented on the
|
||||
|
232
debian/tools/patchinstall.sh.in
vendored
232
debian/tools/patchinstall.sh.in
vendored
@@ -31,15 +31,18 @@ usage()
|
||||
echo ""
|
||||
echo "Configuration:"
|
||||
echo " DESTDIR=path Specify the path to the wine source tree"
|
||||
echo " --all Select all patches"
|
||||
echo " --help Display this help and exit"
|
||||
echo " --no-autoupdate Do not apply patchlist and don't auto-update files"
|
||||
echo " -W patchset Exclude a specific patchset"
|
||||
echo " --all Select all patches"
|
||||
echo " --help Display this help and exit"
|
||||
echo " --no-patchlist Do not apply patchlist (needed for 'wine --patches')"
|
||||
echo " --no-autoconf Do not run autoreconf and tools/make_requests"
|
||||
echo " -W patchset Exclude a specific patchset"
|
||||
echo ""
|
||||
echo "Backends:"
|
||||
echo " --backend=patch Use regular 'patch' utility to apply patches (default)"
|
||||
echo " --backend=epatch Use 'epatch' to apply patches (Gentoo only)"
|
||||
echo " --backend=git-am Use 'git am' to apply patches"
|
||||
echo " --backend=git-apply Use 'git apply' to apply patches"
|
||||
echo " --backend=stg Import the patches using stacked git"
|
||||
echo ""
|
||||
}}
|
||||
|
||||
@@ -50,15 +53,33 @@ abort()
|
||||
exit 1
|
||||
}}
|
||||
|
||||
# Show a warning
|
||||
warning()
|
||||
{{
|
||||
echo "WARNING: $1" >&2
|
||||
}}
|
||||
|
||||
{patch_helpers}
|
||||
|
||||
# Default settings
|
||||
patch_enable_all 0
|
||||
enable_autoupdate=1
|
||||
enable_patchlist=1
|
||||
enable_autoconf=1
|
||||
patchlist="/dev/null"
|
||||
backend="patch"
|
||||
enable=1
|
||||
|
||||
# Find location of patches
|
||||
patchdir="$(dirname "$(readlink -f "$0")")"
|
||||
if test ! -f "$patchdir/patchinstall.sh"; then
|
||||
if test -f ./patchinstall.sh; then
|
||||
patchdir="$(pwd)"
|
||||
else
|
||||
abort "Failed to find patch directory."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Parse commandline arguments
|
||||
if test "$#" -eq 0; then
|
||||
abort "No commandline arguments given, don't know what to do."
|
||||
fi
|
||||
@@ -95,8 +116,13 @@ while test "$#" -gt 0; do
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--no-autoupdate)
|
||||
enable_autoupdate=0
|
||||
--no-patchlist)
|
||||
enable_patchlist=0
|
||||
shift
|
||||
;;
|
||||
|
||||
--no-autoconf)
|
||||
enable_autoconf=0
|
||||
shift
|
||||
;;
|
||||
|
||||
@@ -115,24 +141,86 @@ if test "$enable" -ne 1; then
|
||||
abort "Missing argument for -W, expected patchname."
|
||||
fi
|
||||
|
||||
# Determine DESTDIR if not explicitly specified
|
||||
if test -z "$DESTDIR" -a -f ./tools/make_requests; then
|
||||
DESTDIR="$(pwd)"
|
||||
|
||||
elif test ! -f "$DESTDIR/tools/make_requests"; then
|
||||
abort "DESTDIR does not point to the Wine source tree."
|
||||
fi
|
||||
|
||||
# Change directory to DESTDIR, epatch depends on that
|
||||
if ! cd "$DESTDIR"; then
|
||||
abort "Unable to change directory to $DESTDIR."
|
||||
fi
|
||||
|
||||
# Most backends will try to use git, either directly or indirectly.
|
||||
# Unfortunately this does not work when "$DESTDIR" points to a
|
||||
# subdirectory of a git tree, which has the effect that no patches
|
||||
# are applied, but the exitcode is zero. To avoid broken builds we
|
||||
# will workaround this issue or abort. For more information see
|
||||
# https://github.com/wine-compholio/wine-staging/issues/7
|
||||
test ! -d ".git" && git rev-parse --git-dir >/dev/null 2>&1
|
||||
workaround_git_bug="$?"
|
||||
|
||||
# Apply the patches using gitapply.sh, a small wrapper around 'patch'
|
||||
if test "$backend" = "patch"; then
|
||||
|
||||
patch_apply ()
|
||||
if test "$workaround_git_bug" -eq 0; then
|
||||
gitapply_args="--nogit"
|
||||
else
|
||||
gitapply_args=""
|
||||
fi
|
||||
|
||||
patch_apply_file ()
|
||||
{{
|
||||
echo "Applying $1"
|
||||
if ! ../debian/tools/gitapply.sh -d "$DESTDIR" < "$1"; then
|
||||
if ! "$patchdir/../debian/tools/gitapply.sh" $gitapply_args < "$1"; then
|
||||
abort "Failed to apply patch, aborting!"
|
||||
fi
|
||||
}}
|
||||
|
||||
# 'epatch' backend - used on Gentoo
|
||||
elif test "$backend" = "epatch"; then
|
||||
|
||||
if test "$workaround_git_bug" -eq 0; then
|
||||
gitapply_args="--nogit"
|
||||
else
|
||||
gitapply_args=""
|
||||
fi
|
||||
|
||||
if ! command -v epatch >/dev/null 2>&1 || \
|
||||
! command -v ebegin >/dev/null 2>&1 || \
|
||||
! command -v eend >/dev/null 2>&1 || \
|
||||
! command -v die >/dev/null 2>&1; then
|
||||
abort "Shell functions epatch/ebegin/eend not found. You have to source this script from your ebuild."
|
||||
fi
|
||||
|
||||
patch_apply_file ()
|
||||
{{
|
||||
shortname="$(basename "$1")"
|
||||
if grep -q "^GIT binary patch" "$1"; then
|
||||
ebegin "Applying $shortname"
|
||||
"$patchdir/../debian/tools/gitapply.sh" $gitapply_args < "$1" || \
|
||||
die "Failed Patch: $1!"
|
||||
eend
|
||||
|
||||
else
|
||||
epatch "$1" # epatch calls die upon failure
|
||||
fi
|
||||
}}
|
||||
|
||||
# GIT backend - apply patches using 'git am'
|
||||
elif test "$backend" = "git" -o "$backend" = "git-am"; then
|
||||
|
||||
patch_apply ()
|
||||
if test "$workaround_git_bug" -eq 0; then
|
||||
abort "Backend 'git-am' not possible when DESTDIR points to a git subdirectory."
|
||||
fi
|
||||
|
||||
patch_apply_file ()
|
||||
{{
|
||||
echo "Applying $1"
|
||||
if ! cat "$1" | (cd "$DESTDIR" && git am); then
|
||||
if ! git am "$1"; then
|
||||
abort "Failed to apply patch, aborting!"
|
||||
fi
|
||||
}}
|
||||
@@ -140,10 +228,14 @@ elif test "$backend" = "git" -o "$backend" = "git-am"; then
|
||||
# Git apply backend
|
||||
elif test "$backend" = "git-apply"; then
|
||||
|
||||
patch_apply ()
|
||||
if test "$workaround_git_bug" -eq 0; then
|
||||
abort "Backend 'git-apply' not possible when DESTDIR points to a git subdirectory."
|
||||
fi
|
||||
|
||||
patch_apply_file ()
|
||||
{{
|
||||
echo "Applying $1"
|
||||
if ! cat "$1" | (cd "$DESTDIR" && git apply); then
|
||||
if ! git apply "$1"; then
|
||||
abort "Failed to apply patch, aborting!"
|
||||
fi
|
||||
}}
|
||||
@@ -151,14 +243,20 @@ elif test "$backend" = "git-apply"; then
|
||||
# Stacked GIT backend - import the patches (mainly for developers)
|
||||
elif test "$backend" = "stg"; then
|
||||
|
||||
if test "$workaround_git_bug" -eq 0; then
|
||||
abort "Backend 'stg' not possible when DESTDIR points to a git subdirectory."
|
||||
fi
|
||||
|
||||
# Only import the regular patches, no autogenerated ones -
|
||||
# moreover, don't run autoreconf or ./tools/make_requests.
|
||||
enable_autoupdate=0
|
||||
enable_patchlist=0
|
||||
enable_autoconf=0
|
||||
|
||||
patch_apply ()
|
||||
patch_apply_file ()
|
||||
{{
|
||||
echo "Applying $1"
|
||||
if ! echo "staging/$1" | cat - "$1" | (cd "$DESTDIR" && stg import); then
|
||||
shortname="$(basename "$1")"
|
||||
if ! echo "staging/$shortname" | cat - "$1" | stg import; then
|
||||
abort "Failed to apply patch, aborting!"
|
||||
fi
|
||||
}}
|
||||
@@ -167,30 +265,25 @@ else
|
||||
abort "Selected backend $backend not supported."
|
||||
fi
|
||||
|
||||
patch_apply ()
|
||||
{{
|
||||
patch_apply_file "$patchdir/$1"
|
||||
}}
|
||||
|
||||
|
||||
{patch_resolver}
|
||||
|
||||
|
||||
if test -z "$DESTDIR" -a -f ./tools/make_requests; then
|
||||
DESTDIR="$(pwd)"
|
||||
|
||||
elif test ! -f "$DESTDIR/tools/make_requests"; then
|
||||
abort "DESTDIR does not point to the Wine source tree."
|
||||
fi
|
||||
|
||||
# To make sure we find all the patches and tools switch to the patches directory now
|
||||
script="$(readlink -f "$0")"
|
||||
curdir="$(dirname "$script")"
|
||||
if ! cd "$curdir"; then
|
||||
abort "Failed to change working directory to $curdir."
|
||||
fi
|
||||
|
||||
# If autoupdate is enabled then create a tempfile to keep track of all patches
|
||||
if test "$enable_autoupdate" -eq 1; then
|
||||
patchlist=$(mktemp)
|
||||
if test ! -f "$patchlist"; then
|
||||
echo "ERROR: Unable to create temporary file for patchlist." >&2
|
||||
exit 1
|
||||
if test "$enable_patchlist" -eq 1; then
|
||||
if test "$enable_Staging" -eq 1; then
|
||||
patchlist=$(mktemp)
|
||||
if test ! -f "$patchlist"; then
|
||||
abort "Unable to create temporary file for patchlist."
|
||||
fi
|
||||
else
|
||||
warning "Skipping generation of patchlist because 'Staging' patchset is disabled."
|
||||
enable_patchlist=0
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -198,33 +291,22 @@ fi
|
||||
{patch_apply}
|
||||
|
||||
|
||||
if test "$enable_autoupdate" -eq 1; then
|
||||
if test "$enable_patchlist" -eq 1; then
|
||||
|
||||
# Generate a temporary patch containing the patchlist and apply it
|
||||
patch_data=$(cat "$patchlist" | sort)
|
||||
patch_lines=$(echo "$patch_data" | wc -l)
|
||||
if test ! -z "$patch_data"; then
|
||||
patch_lines=$((${{patch_lines}}+23))
|
||||
patch_lines=$(echo "$patch_data" | wc -l)
|
||||
patch_lines=$((${{patch_lines}}+21))
|
||||
cat > "$patchlist" <<EOF
|
||||
From: Wine Staging Team <webmaster@fds-team.de>
|
||||
Subject: Autogenerated patch list.
|
||||
|
||||
diff --git a/include/wine/library.h b/include/wine/library.h
|
||||
--- a/include/wine/library.h
|
||||
+++ b/include/wine/library.h
|
||||
@@ -43,6 +43,7 @@ extern const char *wine_get_data_dir(void);
|
||||
extern const char *wine_get_server_dir(void);
|
||||
extern const char *wine_get_user_name(void);
|
||||
extern const char *wine_get_version(void);
|
||||
+extern const void *wine_get_patches(void);
|
||||
extern const char *wine_get_build_id(void);
|
||||
extern void wine_init_argv0_path( const char *argv0 );
|
||||
extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var );
|
||||
diff --git a/libs/wine/config.c b/libs/wine/config.c
|
||||
index a273502..0a3182f 100644
|
||||
index 5262c76..0a3182f 100644
|
||||
--- a/libs/wine/config.c
|
||||
+++ b/libs/wine/config.c
|
||||
@@ -478,6 +478,${{patch_lines}} @@ const char *wine_get_version(void)
|
||||
@@ -478,10 +478,${{patch_lines}} @@ const char *wine_get_version(void)
|
||||
return PACKAGE_VERSION;
|
||||
}}
|
||||
|
||||
@@ -240,49 +322,25 @@ ${{patch_data}}
|
||||
+ {{ NULL, NULL, 0 }}
|
||||
+}};
|
||||
+
|
||||
+/* return the applied non-standard patches */
|
||||
+const void *wine_get_patches(void)
|
||||
+{{
|
||||
+ return &wine_patch_data[0];
|
||||
+}}
|
||||
+
|
||||
/* return the build id string */
|
||||
const char *wine_get_build_id(void)
|
||||
/* return the applied non-standard patches */
|
||||
const void *wine_get_patches(void)
|
||||
{{
|
||||
diff --git a/libs/wine/wine.def b/libs/wine/wine.def
|
||||
index ed315bd..5b42029 100644
|
||||
--- a/libs/wine/wine.def
|
||||
+++ b/libs/wine/wine.def
|
||||
@@ -83,6 +83,7 @@ EXPORTS
|
||||
wine_get_sortkey
|
||||
wine_get_user_name
|
||||
wine_get_version
|
||||
+ wine_get_patches
|
||||
wine_init
|
||||
wine_init_argv0_path
|
||||
wine_is_dbcs_leadbyte
|
||||
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
|
||||
index 2159fac..7cb2918 100644
|
||||
--- a/libs/wine/wine.map
|
||||
+++ b/libs/wine/wine.map
|
||||
@@ -90,6 +90,7 @@ WINE_1.0
|
||||
wine_get_ss;
|
||||
wine_get_user_name;
|
||||
wine_get_version;
|
||||
+ wine_get_patches;
|
||||
wine_init;
|
||||
wine_init_argv0_path;
|
||||
wine_is_dbcs_leadbyte;
|
||||
- return NULL;
|
||||
+ return &wine_patch_data[0];
|
||||
}}
|
||||
|
||||
/* return the build id string */
|
||||
EOF
|
||||
patch_apply "$patchlist"
|
||||
patch_apply_file "$patchlist"
|
||||
fi
|
||||
rm "$patchlist"
|
||||
fi
|
||||
|
||||
# Other autogenerated changes
|
||||
if ! (cd "$DESTDIR" && autoreconf -f); then
|
||||
if test "$enable_autoconf" -eq 1; then
|
||||
if ! autoreconf -f; then
|
||||
abort "'autoreconf -f' failed."
|
||||
fi
|
||||
if ! (cd "$DESTDIR" && ./tools/make_requests); then
|
||||
if ! ./tools/make_requests; then
|
||||
abort "'./tools/make_requests' failed."
|
||||
fi
|
||||
fi
|
||||
|
235
debian/tools/patchupdate.py
vendored
235
debian/tools/patchupdate.py
vendored
@@ -21,6 +21,8 @@
|
||||
|
||||
import binascii
|
||||
import cPickle as pickle
|
||||
import contextlib
|
||||
import fnmatch
|
||||
import hashlib
|
||||
import itertools
|
||||
import math
|
||||
@@ -35,6 +37,8 @@ import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import textwrap
|
||||
import urllib
|
||||
import xml.dom.minidom
|
||||
|
||||
_devnull = open(os.devnull, 'wb')
|
||||
|
||||
@@ -73,6 +77,7 @@ class PatchSet(object):
|
||||
self.patches = []
|
||||
self.modified_files = set()
|
||||
self.depends = set()
|
||||
self.auto_depends = set()
|
||||
|
||||
self.verify_time = None
|
||||
|
||||
@@ -133,6 +138,34 @@ def _parse_int(val, default=0):
|
||||
except AttributeError:
|
||||
return default
|
||||
|
||||
def _winebugs_query(bugids):
|
||||
"""Query short_desc from multiple wine bugzilla bugs at the same time."""
|
||||
bugids = list(set(bugids)) # Remove duplicates and convert to fixed order
|
||||
if len(bugids) == 0: return {}
|
||||
|
||||
# Query bugzilla
|
||||
url = "http://bugs.winehq.org/show_bug.cgi?%s&ctype=xml&field=short_desc&field=bug_status&field=resolution" % \
|
||||
"&".join(["id=%d" % bugid for bugid in bugids])
|
||||
with contextlib.closing(urllib.urlopen(url)) as fp:
|
||||
data = xml.dom.minidom.parseString(fp.read())
|
||||
|
||||
# convert xml in a dictionary containing all bugs we found
|
||||
result = {}
|
||||
for element in data.getElementsByTagName('bug_id'):
|
||||
bugids.remove(int(element.firstChild.data))
|
||||
|
||||
def _get_text(n):
|
||||
return n.firstChild.data if (n and n.firstChild) else None
|
||||
|
||||
for bugid, element in zip(bugids, data.getElementsByTagName('bug')):
|
||||
if element.getElementsByTagName('bug_id'): continue
|
||||
result[bugid] = {
|
||||
'short_desc': _get_text(element.getElementsByTagName('short_desc')[0]),
|
||||
'bug_status': _get_text(element.getElementsByTagName('bug_status')[0]),
|
||||
'resolution': _get_text(element.getElementsByTagName('resolution')[0]) }
|
||||
|
||||
return result
|
||||
|
||||
def _read_changelog():
|
||||
"""Read information from changelog."""
|
||||
with open(config.path_changelog) as fp:
|
||||
@@ -146,11 +179,12 @@ def _stable_compholio_version():
|
||||
if distro.lower() != "unreleased":
|
||||
return version
|
||||
|
||||
def _latest_wine_commit():
|
||||
def _latest_wine_commit(commit=None):
|
||||
"""Get latest wine commit."""
|
||||
if not os.path.isdir(config.path_wine):
|
||||
raise PatchUpdaterError("Please create a symlink to the wine repository in %s" % config.path_wine)
|
||||
commit = subprocess.check_output(["git", "rev-parse", "origin/master"], cwd=config.path_wine).strip()
|
||||
if commit is None:
|
||||
commit = subprocess.check_output(["git", "rev-parse", "origin/master"], cwd=config.path_wine).strip()
|
||||
assert len(commit) == 40
|
||||
return commit
|
||||
|
||||
@@ -187,65 +221,12 @@ def enum_directories(revision, path):
|
||||
|
||||
return dirs
|
||||
|
||||
def read_definition(revision, filename, name_to_id):
|
||||
"""Read a definition file and return information as tuple (depends, fixes)."""
|
||||
filename = os.path.join(filename, "definition")
|
||||
if revision is None:
|
||||
with open(filename) as fp:
|
||||
content = fp.read()
|
||||
else:
|
||||
filename = "%s:%s" % (revision, filename)
|
||||
try:
|
||||
content = subprocess.check_output(["git", "show", filename], stderr=_devnull)
|
||||
except subprocess.CalledProcessError:
|
||||
raise IOError("Failed to load %s" % filename)
|
||||
|
||||
depends = set()
|
||||
fixes = []
|
||||
disabled = False
|
||||
ifdefined = None
|
||||
|
||||
for line in content.split("\n"):
|
||||
if line.startswith("#"):
|
||||
continue
|
||||
tmp = line.split(":", 1)
|
||||
if len(tmp) != 2:
|
||||
continue
|
||||
|
||||
key, val = tmp[0].lower(), tmp[1].strip()
|
||||
if key == "depends":
|
||||
if name_to_id is not None:
|
||||
if not name_to_id.has_key(val):
|
||||
raise PatchUpdaterError("Definition file %s references unknown dependency %s" % (filename, val))
|
||||
depends.add(name_to_id[val])
|
||||
|
||||
elif key == "fixes":
|
||||
r = re.match("^[0-9]+$", val)
|
||||
if r:
|
||||
fixes.append((int(val), None))
|
||||
continue
|
||||
r = re.match("^\\[ *([0-9]+) *\\](.*)$", val)
|
||||
if r:
|
||||
fixes.append((int(r.group(1)), r.group(2).strip()))
|
||||
continue
|
||||
fixes.append((None, val))
|
||||
|
||||
elif key == "disabled":
|
||||
disabled = _parse_int(val)
|
||||
|
||||
elif key == "ifdefined":
|
||||
ifdefined = val
|
||||
|
||||
elif revision is None:
|
||||
print "WARNING: Ignoring unknown command in definition file %s: %s" % (filename, line)
|
||||
|
||||
return depends, fixes, disabled, ifdefined
|
||||
|
||||
def read_patchset(revision = None):
|
||||
"""Read information about all patchsets for a specific revision."""
|
||||
unique_id = itertools.count()
|
||||
all_patches = {}
|
||||
name_to_id = {}
|
||||
all_bugids = set()
|
||||
|
||||
# Read in sorted order (to ensure created Makefile doesn't change too much)
|
||||
for name, directory in sorted(enum_directories(revision, config.path_patches)):
|
||||
@@ -282,10 +263,72 @@ def read_patchset(revision = None):
|
||||
# Now read the definition files in a second step
|
||||
for i, patch in all_patches.iteritems():
|
||||
try:
|
||||
patch.depends, patch.fixes, patch.disabled, patch.ifdefined = \
|
||||
read_definition(revision, os.path.join(config.path_patches, patch.name), name_to_id)
|
||||
except IOError:
|
||||
patch.depends, patch.fixes, patch.disabled, patch.ifdefined = set(), [], False, None
|
||||
filename = os.path.join(os.path.join(config.path_patches, patch.name), "definition")
|
||||
if revision is None:
|
||||
with open(filename) as fp:
|
||||
content = fp.read()
|
||||
else:
|
||||
filename = "%s:%s" % (revision, filename)
|
||||
content = subprocess.check_output(["git", "show", filename], stderr=_devnull)
|
||||
except (IOError, subprocess.CalledProcessError):
|
||||
continue # Skip this definition file
|
||||
|
||||
for line in content.split("\n"):
|
||||
if line.startswith("#"):
|
||||
continue
|
||||
tmp = line.split(":", 1)
|
||||
if len(tmp) != 2:
|
||||
continue
|
||||
|
||||
key, val = tmp[0].lower(), tmp[1].strip()
|
||||
if key == "depends":
|
||||
if not name_to_id.has_key(val):
|
||||
raise PatchUpdaterError("Definition file %s references unknown dependency %s" % (filename, val))
|
||||
patch.depends.add(name_to_id[val])
|
||||
|
||||
elif key == "apply-after":
|
||||
for j, other_patch in all_patches.iteritems():
|
||||
if i != j and any([fnmatch.fnmatch(f, val) for f in other_patch.modified_files]):
|
||||
patch.auto_depends.add(j)
|
||||
|
||||
elif key == "fixes":
|
||||
r = re.match("^[0-9]+$", val)
|
||||
if r:
|
||||
bugid = int(val)
|
||||
patch.fixes.append((bugid, None))
|
||||
all_bugids.add(bugid)
|
||||
continue
|
||||
r = re.match("^\\[ *([0-9]+) *\\](.*)$", val)
|
||||
if r:
|
||||
bugid = int(r.group(1))
|
||||
patch.fixes.append((bugid, r.group(2).strip()))
|
||||
all_bugids.add(bugid)
|
||||
continue
|
||||
patch.fixes.append((None, val))
|
||||
|
||||
elif key == "disabled":
|
||||
patch.disabled = _parse_int(val)
|
||||
|
||||
elif key == "ifdefined":
|
||||
patch.ifdefined = val
|
||||
|
||||
elif revision is None:
|
||||
print "WARNING: Ignoring unknown command in definition file %s: %s" % (filename, line)
|
||||
|
||||
# To simplify the task of keeping the bug list up-to-date, list all bugs
|
||||
# which might require attention.
|
||||
if revision is None:
|
||||
once = True
|
||||
for bugid, bug in sorted(_winebugs_query(all_bugids).items()):
|
||||
if bug['bug_status'] not in ["UNCONFIRMED", "NEW", "REOPENED"]:
|
||||
if once:
|
||||
print ""
|
||||
print "WARNING: The following bugs might require attention:"
|
||||
print ""
|
||||
once = False
|
||||
print " #%d - \"%s\" - %s %s" % (bugid, bug['short_desc'], bug['bug_status'],
|
||||
bug['resolution'] if bug['resolution'] else "")
|
||||
print ""
|
||||
|
||||
return all_patches
|
||||
|
||||
@@ -374,6 +417,7 @@ def resolve_dependencies(all_patches, index = None, depends = None):
|
||||
# Recusively resolve dependencies
|
||||
all_patches[i].verify_resolved = -1
|
||||
_resolve(all_patches[i].depends)
|
||||
_resolve(all_patches[i].auto_depends)
|
||||
all_patches[i].verify_resolved = 1
|
||||
resolved.append(i)
|
||||
|
||||
@@ -457,46 +501,59 @@ def generate_script(all_patches):
|
||||
modified_files[f].append(i)
|
||||
|
||||
# Check dependencies
|
||||
for filename, indices in modified_files.iteritems():
|
||||
pool = multiprocessing.pool.ThreadPool(processes=4)
|
||||
try:
|
||||
for filename, indices in modified_files.iteritems():
|
||||
|
||||
# If one of patches is a binary patch, then we cannot / won't verify it - require dependencies in this case
|
||||
if contains_binary_patch(all_patches, indices, filename):
|
||||
if not causal_time_relation_any(all_patches, indices):
|
||||
raise PatchUpdaterError("Because of binary patch modifying file %s the following patches need explicit dependencies: %s" %
|
||||
(filename, ", ".join([all_patches[i].name for i in indices])))
|
||||
continue
|
||||
# If one of patches is a binary patch, then we cannot / won't verify it - require dependencies in this case
|
||||
if contains_binary_patch(all_patches, indices, filename):
|
||||
if not causal_time_relation_any(all_patches, indices):
|
||||
raise PatchUpdaterError("Because of binary patch modifying file %s the following patches need explicit dependencies: %s" %
|
||||
(filename, ", ".join([all_patches[i].name for i in indices])))
|
||||
continue
|
||||
|
||||
original_content = get_wine_file(filename)
|
||||
selected_patches = select_patches(all_patches, indices, filename)
|
||||
original_content = get_wine_file(filename)
|
||||
selected_patches = select_patches(all_patches, indices, filename)
|
||||
|
||||
# Show a progress bar while applying the patches - this task might take some time
|
||||
with progressbar.ProgressBar(desc=filename, total=2 ** len(indices)) as progress:
|
||||
for k, bitstring in enumerate(itertools.product([0,1], repeat=len(indices))):
|
||||
progress.update(k)
|
||||
# Show a progress bar while applying the patches - this task might take some time
|
||||
chunk_size = 20
|
||||
with progressbar.ProgressBar(desc=filename, total=2 ** len(indices) / chunk_size) as progress:
|
||||
|
||||
set_apply = [(i, all_patches[i]) for u, i in zip(bitstring, indices) if u]
|
||||
set_skip = [(i, all_patches[i]) for u, i in zip(bitstring, indices) if not u]
|
||||
test_apply = True
|
||||
def test_apply(bitstring):
|
||||
set_apply = [(i, all_patches[i]) for u, i in zip(bitstring, indices) if u]
|
||||
set_skip = [(i, all_patches[i]) for u, i in zip(bitstring, indices) if not u]
|
||||
|
||||
# Check if there is any patch2 which depends directly or indirectly on patch1.
|
||||
# If this is the case we found an impossible situation, we can be skipped in this test.
|
||||
for i, patch1 in set_apply:
|
||||
for j, patch2 in set_skip:
|
||||
if causal_time_smaller(patch2.verify_time, patch1.verify_time):
|
||||
test_apply = False
|
||||
break
|
||||
if not test_apply:
|
||||
break
|
||||
# Check if there is any patch2 which depends directly or indirectly on patch1.
|
||||
# If this is the case we found an impossible situation, we can be skipped in this test.
|
||||
for i, patch1 in set_apply:
|
||||
for j, patch2 in set_skip:
|
||||
if causal_time_smaller(patch2.verify_time, patch1.verify_time):
|
||||
return True # we can skip this test
|
||||
|
||||
if test_apply:
|
||||
try:
|
||||
original = original_content
|
||||
for i, patch in set_apply:
|
||||
original = patchutils.apply_patch(original, selected_patches[i][1], fuzz=0)
|
||||
except patchutils.PatchApplyError:
|
||||
return False
|
||||
|
||||
return True # everything is fine
|
||||
|
||||
def test_apply_seq(bitstrings):
|
||||
for bitstring in bitstrings:
|
||||
if not test_apply(bitstring):
|
||||
return False
|
||||
return True
|
||||
|
||||
it = _split_seq(itertools.product([0,1], repeat=len(indices)), chunk_size)
|
||||
for k, res in enumerate(pool.imap_unordered(test_apply_seq, it)):
|
||||
if not res:
|
||||
progress.finish("<failed to apply>")
|
||||
raise PatchUpdaterError("Changes to file %s don't apply: %s" %
|
||||
(filename, ", ".join([all_patches[i].name for i in indices])))
|
||||
progress.update(k)
|
||||
finally:
|
||||
pool.close()
|
||||
|
||||
# Generate code for helper functions
|
||||
lines = []
|
||||
@@ -504,7 +561,7 @@ def generate_script(all_patches):
|
||||
lines.append("patch_enable_all ()\n")
|
||||
lines.append("{\n")
|
||||
for i, patch in sorted([(i, all_patches[i]) for i in resolved], key=lambda x:x[1].name):
|
||||
patch.variable = "enable_%s" % patch.name.replace("-","_")
|
||||
patch.variable = "enable_%s" % patch.name.replace("-","_").replace(".","_")
|
||||
lines.append("\t%s=\"$1\"\n" % patch.variable)
|
||||
lines.append("}\n")
|
||||
lines.append("\n")
|
||||
@@ -588,7 +645,7 @@ def generate_markdown(all_patches, stable_patches, stable_compholio_version):
|
||||
return "* %s ([Wine Bug #%d](https://bugs.winehq.org/show_bug.cgi?id=%d))" % \
|
||||
(bugname, bugid, bugid) #, short_desc.replace("\\", "\\\\").replace("\"", "\\\""))
|
||||
|
||||
all_fixes = {}
|
||||
all_fixes = {}
|
||||
|
||||
# Get fixes for current version
|
||||
for _, patch in all_patches.iteritems():
|
||||
@@ -650,7 +707,7 @@ if __name__ == "__main__":
|
||||
try:
|
||||
|
||||
# Get information about Wine and Compholio version
|
||||
latest_wine_commit = _latest_wine_commit()
|
||||
latest_wine_commit = _latest_wine_commit(sys.argv[1] if len(sys.argv) >= 2 else None)
|
||||
stable_compholio_version = _stable_compholio_version()
|
||||
|
||||
# Read current and stable patches
|
||||
|
6
debian/tools/patchutils.py
vendored
6
debian/tools/patchutils.py
vendored
@@ -375,7 +375,7 @@ def generate_ifdef_patch(original, patched, ifdef):
|
||||
"""Generate a patch which adds #ifdef where necessary to keep both the original and patched version."""
|
||||
|
||||
def _preprocess_source(fp):
|
||||
"""Simple C preprocessor to determine where we can savely add #ifdef instructions."""
|
||||
"""Simple C preprocessor to determine where we can safely add #ifdef instructions."""
|
||||
|
||||
_re_state0 = re.compile("(\"|/[/*])")
|
||||
_re_state1 = re.compile("(\\\"|\")")
|
||||
@@ -418,7 +418,7 @@ def generate_ifdef_patch(original, patched, ifdef):
|
||||
elif match.group(0) == "/*":
|
||||
state = 2 # Begin of comment
|
||||
elif match.group(0) == "//":
|
||||
break # Rest of the line is a comment, which can be savely ignored
|
||||
break # Rest of the line is a comment, which can be safely ignored
|
||||
else:
|
||||
assert 0
|
||||
|
||||
@@ -460,7 +460,7 @@ def generate_ifdef_patch(original, patched, ifdef):
|
||||
# The basic of idea of this algorithm is as following:
|
||||
#
|
||||
# (1) determine diff between original file and patched file
|
||||
# (2) run the preprocessor, to determine where #ifdefs can be savely added
|
||||
# (2) run the preprocessor, to determine where #ifdefs can be safely added
|
||||
# (3) use diff and preprocessor information to create a merged version containing #ifdefs
|
||||
# (4) create another diff to apply the changes on the patched version
|
||||
#
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 8c7754a1da9f43cf15057a8467c0b76c9da2ce40 Mon Sep 17 00:00:00 2001
|
||||
From 5a4827d5c16aefd82029583710b9032a2356917b Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 22 Nov 2014 05:49:30 +0100
|
||||
Subject: ntdll: Fix issues with write watches when using Exagear.
|
||||
@@ -8,10 +8,10 @@ Subject: ntdll: Fix issues with write watches when using Exagear.
|
||||
1 file changed, 21 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
|
||||
index 1a8e4a4..4140323 100644
|
||||
index f7aae0b..3fa2027 100644
|
||||
--- a/dlls/ntdll/virtual.c
|
||||
+++ b/dlls/ntdll/virtual.c
|
||||
@@ -1558,6 +1558,26 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err )
|
||||
@@ -1558,6 +1558,26 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err, BOOL on_signal_stack )
|
||||
{
|
||||
void *page = ROUND_ADDR( addr, page_mask );
|
||||
BYTE *vprot = &view->prot[((const char *)page - (const char *)view->base) >> page_shift];
|
||||
@@ -38,14 +38,14 @@ index 1a8e4a4..4140323 100644
|
||||
if (err & EXCEPTION_WRITE_FAULT)
|
||||
{
|
||||
if ((view->protect & VPROT_WRITEWATCH) && (*vprot & VPROT_WRITEWATCH))
|
||||
@@ -1573,6 +1593,7 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err )
|
||||
@@ -1573,6 +1593,7 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err, BOOL on_signal_stack )
|
||||
/* ignore fault if page is writable now */
|
||||
if (VIRTUAL_GetUnixProt( *vprot ) & PROT_WRITE) ret = STATUS_SUCCESS;
|
||||
}
|
||||
+#endif
|
||||
if (*vprot & VPROT_GUARD)
|
||||
if (!on_signal_stack && (*vprot & VPROT_GUARD))
|
||||
{
|
||||
VIRTUAL_SetProt( view, page, page_size, *vprot & ~VPROT_GUARD );
|
||||
--
|
||||
2.1.3
|
||||
2.2.2
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From f56694f318ce0134317b812ff32f6c35875c31b3 Mon Sep 17 00:00:00 2001
|
||||
From aa76ae0448583e87dbe7f374101eb5b20d55dea8 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Fri, 8 Aug 2014 19:33:14 -0600
|
||||
Subject: Appease the blessed version of gcc (4.5) when -Werror is enabled.
|
||||
@@ -12,10 +12,10 @@ Subject: Appease the blessed version of gcc (4.5) when -Werror is enabled.
|
||||
5 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
|
||||
index 117c8eb..3988628 100644
|
||||
index 0c10ffa..2f35992 100644
|
||||
--- a/dlls/d3d9/tests/visual.c
|
||||
+++ b/dlls/d3d9/tests/visual.c
|
||||
@@ -11163,7 +11163,7 @@ static void yuv_layout_test(void)
|
||||
@@ -11161,7 +11161,7 @@ static void yuv_layout_test(void)
|
||||
IDirect3D9 *d3d;
|
||||
D3DCOLOR color;
|
||||
DWORD ref_color;
|
||||
@@ -38,10 +38,10 @@ index d2a61fa..bb7ac1c 100644
|
||||
|
||||
if (servername && !(server = strdup_unixcp( servername ))) return ERROR_OUTOFMEMORY;
|
||||
diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c
|
||||
index a4c02bf..909db53 100644
|
||||
index e32cb54..ddf972d 100644
|
||||
--- a/dlls/winealsa.drv/mmdevdrv.c
|
||||
+++ b/dlls/winealsa.drv/mmdevdrv.c
|
||||
@@ -353,7 +353,7 @@ static WCHAR *construct_device_id(EDataFlow flow, const WCHAR *chunk1, const cha
|
||||
@@ -359,7 +359,7 @@ static WCHAR *construct_device_id(EDataFlow flow, const WCHAR *chunk1, const cha
|
||||
{
|
||||
WCHAR *ret;
|
||||
const WCHAR *prefix;
|
||||
@@ -51,13 +51,13 @@ index a4c02bf..909db53 100644
|
||||
static const WCHAR dashW[] = {' ','-',' ',0};
|
||||
static const size_t dashW_len = (sizeof(dashW) / sizeof(*dashW)) - 1;
|
||||
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
|
||||
index 34cc567..4f2a6c6 100644
|
||||
index f3e921c..fa64436 100644
|
||||
--- a/dlls/wined3d/glsl_shader.c
|
||||
+++ b/dlls/wined3d/glsl_shader.c
|
||||
@@ -5784,7 +5784,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
|
||||
GLhandleARB vs_id = 0;
|
||||
GLhandleARB gs_id = 0;
|
||||
GLhandleARB ps_id = 0;
|
||||
@@ -5834,7 +5834,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
|
||||
GLuint vs_id = 0;
|
||||
GLuint gs_id = 0;
|
||||
GLuint ps_id = 0;
|
||||
- struct list *ps_list, *vs_list;
|
||||
+ struct list *ps_list = NULL, *vs_list = NULL;
|
||||
|
||||
@@ -77,5 +77,5 @@ index 54aab45..103422e 100644
|
||||
expand = get_make_variable( make, name );
|
||||
if (!expand) return NULL;
|
||||
--
|
||||
2.1.1
|
||||
2.2.1
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,13 +1,17 @@
|
||||
From 6661529d2422f99287336b764fe7a5b61484b8ad Mon Sep 17 00:00:00 2001
|
||||
From f23512417cb3d149a8be4f757282d17cc1f99f9a Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Thu, 29 May 2014 23:43:45 +0200
|
||||
Subject: loader: Add commandline option --patches to show the patch list.
|
||||
|
||||
---
|
||||
dlls/ntdll/misc.c | 8 ++++++++
|
||||
dlls/ntdll/ntdll.spec | 1 +
|
||||
loader/main.c | 36 +++++++++++++++++++++++++++++++++++-
|
||||
3 files changed, 44 insertions(+), 1 deletion(-)
|
||||
dlls/ntdll/misc.c | 8 ++++++++
|
||||
dlls/ntdll/ntdll.spec | 1 +
|
||||
include/wine/library.h | 1 +
|
||||
libs/wine/config.c | 6 ++++++
|
||||
libs/wine/wine.def | 1 +
|
||||
libs/wine/wine.map | 1 +
|
||||
loader/main.c | 42 +++++++++++++++++++++++++++++++++++++++++-
|
||||
7 files changed, 59 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c
|
||||
index ad1b43b..1f985e7 100644
|
||||
@@ -29,7 +33,7 @@ index ad1b43b..1f985e7 100644
|
||||
*/
|
||||
const char * CDECL NTDLL_wine_get_build_id(void)
|
||||
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
|
||||
index 7e95969..f9483aa 100644
|
||||
index 51de6e7..ee4ed49 100644
|
||||
--- a/dlls/ntdll/ntdll.spec
|
||||
+++ b/dlls/ntdll/ntdll.spec
|
||||
@@ -1421,6 +1421,7 @@
|
||||
@@ -40,8 +44,61 @@ index 7e95969..f9483aa 100644
|
||||
@ cdecl wine_get_build_id() NTDLL_wine_get_build_id
|
||||
@ cdecl wine_get_host_version(ptr ptr) NTDLL_wine_get_host_version
|
||||
|
||||
diff --git a/include/wine/library.h b/include/wine/library.h
|
||||
index 242bb69..fae73fe 100644
|
||||
--- a/include/wine/library.h
|
||||
+++ b/include/wine/library.h
|
||||
@@ -43,6 +43,7 @@ extern const char *wine_get_data_dir(void);
|
||||
extern const char *wine_get_server_dir(void);
|
||||
extern const char *wine_get_user_name(void);
|
||||
extern const char *wine_get_version(void);
|
||||
+extern const void *wine_get_patches(void);
|
||||
extern const char *wine_get_build_id(void);
|
||||
extern void wine_init_argv0_path( const char *argv0 );
|
||||
extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var );
|
||||
diff --git a/libs/wine/config.c b/libs/wine/config.c
|
||||
index a273502..5262c76 100644
|
||||
--- a/libs/wine/config.c
|
||||
+++ b/libs/wine/config.c
|
||||
@@ -478,6 +478,12 @@ const char *wine_get_version(void)
|
||||
return PACKAGE_VERSION;
|
||||
}
|
||||
|
||||
+/* return the applied non-standard patches */
|
||||
+const void *wine_get_patches(void)
|
||||
+{
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
/* return the build id string */
|
||||
const char *wine_get_build_id(void)
|
||||
{
|
||||
diff --git a/libs/wine/wine.def b/libs/wine/wine.def
|
||||
index ed315bd..5b42029 100644
|
||||
--- a/libs/wine/wine.def
|
||||
+++ b/libs/wine/wine.def
|
||||
@@ -83,6 +83,7 @@ EXPORTS
|
||||
wine_get_sortkey
|
||||
wine_get_user_name
|
||||
wine_get_version
|
||||
+ wine_get_patches
|
||||
wine_init
|
||||
wine_init_argv0_path
|
||||
wine_is_dbcs_leadbyte
|
||||
diff --git a/libs/wine/wine.map b/libs/wine/wine.map
|
||||
index 2159fac..7cb2918 100644
|
||||
--- a/libs/wine/wine.map
|
||||
+++ b/libs/wine/wine.map
|
||||
@@ -90,6 +90,7 @@ WINE_1.0
|
||||
wine_get_ss;
|
||||
wine_get_user_name;
|
||||
wine_get_version;
|
||||
+ wine_get_patches;
|
||||
wine_init;
|
||||
wine_init_argv0_path;
|
||||
wine_is_dbcs_leadbyte;
|
||||
diff --git a/loader/main.c b/loader/main.c
|
||||
index ac67290..b1df463 100644
|
||||
index ce21173..4794e51 100644
|
||||
--- a/loader/main.c
|
||||
+++ b/loader/main.c
|
||||
@@ -89,7 +89,8 @@ static void check_command_line( int argc, char *argv[] )
|
||||
@@ -54,7 +111,7 @@ index ac67290..b1df463 100644
|
||||
|
||||
if (argc <= 1)
|
||||
{
|
||||
@@ -106,6 +107,39 @@ static void check_command_line( int argc, char *argv[] )
|
||||
@@ -106,6 +107,45 @@ static void check_command_line( int argc, char *argv[] )
|
||||
printf( "%s\n", wine_get_build_id() );
|
||||
exit(0);
|
||||
}
|
||||
@@ -68,6 +125,12 @@ index ac67290..b1df463 100644
|
||||
+ }
|
||||
+ *next, *cur = wine_get_patches();
|
||||
+
|
||||
+ if (!cur)
|
||||
+ {
|
||||
+ fprintf( stderr, "Patchlist not available.\n" );
|
||||
+ exit(1);
|
||||
+ }
|
||||
+
|
||||
+ while (cur->author)
|
||||
+ {
|
||||
+ next = cur + 1;
|
||||
@@ -77,7 +140,7 @@ index ac67290..b1df463 100644
|
||||
+ next++;
|
||||
+ }
|
||||
+
|
||||
+ printf( "%s (%d):\n", cur->author, next - cur );
|
||||
+ printf( "%s (%d):\n", cur->author, (int)(next - cur) );
|
||||
+ while (cur < next)
|
||||
+ {
|
||||
+ printf( " %s", cur->subject );
|
||||
@@ -95,5 +158,5 @@ index ac67290..b1df463 100644
|
||||
|
||||
|
||||
--
|
||||
2.1.3
|
||||
2.2.1
|
||||
|
||||
|
@@ -1,71 +0,0 @@
|
||||
From 4d79656ea8c30f14fcd4a8e6a901e7b50ea50eef Mon Sep 17 00:00:00 2001
|
||||
From: Qian Hong <qhong@codeweavers.com>
|
||||
Date: Thu, 17 Apr 2014 04:34:30 +0800
|
||||
Subject: atl: Don't use GWLP_USERDATA to store IOCS to avoid conflict with
|
||||
Apps.
|
||||
|
||||
---
|
||||
dlls/atl/atl_ax.c | 12 +++++++-----
|
||||
1 file changed, 7 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/atl/atl_ax.c b/dlls/atl/atl_ax.c
|
||||
index 5bafbf1..45936e8 100644
|
||||
--- a/dlls/atl/atl_ax.c
|
||||
+++ b/dlls/atl/atl_ax.c
|
||||
@@ -38,6 +38,8 @@
|
||||
|
||||
#include "wine/unicode.h"
|
||||
|
||||
+#define WINE_IOCS_PROPERTY "WINE_IOCS"
|
||||
+
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(atl);
|
||||
|
||||
typedef struct IOCS {
|
||||
@@ -150,7 +152,7 @@ static HRESULT IOCS_Detach( IOCS *This ) /* remove subclassing */
|
||||
if ( This->hWnd )
|
||||
{
|
||||
SetWindowLongPtrW( This->hWnd, GWLP_WNDPROC, (ULONG_PTR) This->OrigWndProc );
|
||||
- SetWindowLongPtrW( This->hWnd, GWLP_USERDATA, 0 );
|
||||
+ RemovePropA( This->hWnd, WINE_IOCS_PROPERTY );
|
||||
This->hWnd = NULL;
|
||||
}
|
||||
if ( This->control )
|
||||
@@ -906,7 +908,7 @@ static LRESULT IOCS_OnWndProc( IOCS *This, HWND hWnd, UINT uMsg, WPARAM wParam,
|
||||
|
||||
static LRESULT CALLBACK AtlHost_wndproc( HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
- IOCS *This = (IOCS*) GetWindowLongPtrW( hWnd, GWLP_USERDATA );
|
||||
+ IOCS *This = (IOCS *)GetPropA( hWnd, WINE_IOCS_PROPERTY );
|
||||
return IOCS_OnWndProc( This, hWnd, wMsg, wParam, lParam );
|
||||
}
|
||||
|
||||
@@ -915,7 +917,7 @@ static HRESULT IOCS_Attach( IOCS *This, HWND hWnd, IUnknown *pUnkControl ) /* su
|
||||
This->hWnd = hWnd;
|
||||
IUnknown_QueryInterface( pUnkControl, &IID_IOleObject, (void**)&This->control );
|
||||
IOleObject_SetClientSite( This->control, &This->IOleClientSite_iface );
|
||||
- SetWindowLongPtrW( hWnd, GWLP_USERDATA, (ULONG_PTR) This );
|
||||
+ SetPropA( hWnd, WINE_IOCS_PROPERTY, This );
|
||||
This->OrigWndProc = (WNDPROC)SetWindowLongPtrW( hWnd, GWLP_WNDPROC, (ULONG_PTR) AtlHost_wndproc );
|
||||
|
||||
return S_OK;
|
||||
@@ -1329,7 +1331,7 @@ HRESULT WINAPI AtlAxGetHost(HWND hWnd, IUnknown **host)
|
||||
|
||||
*host = NULL;
|
||||
|
||||
- This = (IOCS*) GetWindowLongPtrW( hWnd, GWLP_USERDATA );
|
||||
+ This = (IOCS *)GetPropA( hWnd, WINE_IOCS_PROPERTY );
|
||||
if ( !This )
|
||||
{
|
||||
WARN("No container attached to %p\n", hWnd );
|
||||
@@ -1351,7 +1353,7 @@ HRESULT WINAPI AtlAxGetControl(HWND hWnd, IUnknown **pUnk)
|
||||
|
||||
*pUnk = NULL;
|
||||
|
||||
- This = (IOCS*) GetWindowLongPtrW( hWnd, GWLP_USERDATA );
|
||||
+ This = (IOCS *)GetPropA ( hWnd, WINE_IOCS_PROPERTY );
|
||||
if ( !This || !This->control )
|
||||
{
|
||||
WARN("No control attached to %p\n", hWnd );
|
||||
--
|
||||
1.7.9.5
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: [21767] ATL IOCS data should not be stored in GWLP_USERDATA
|
@@ -0,0 +1,53 @@
|
||||
From fe4f06bfdb1a53e0be15aca8f1f8f897f7fef632 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 27 Feb 2015 17:46:11 +0100
|
||||
Subject: browseui: Implement IProgressDialog::SetAnimation.
|
||||
|
||||
---
|
||||
dlls/browseui/progressdlg.c | 16 +++++++++++++++-
|
||||
1 file changed, 15 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/browseui/progressdlg.c b/dlls/browseui/progressdlg.c
|
||||
index 598197b..a14fa17 100644
|
||||
--- a/dlls/browseui/progressdlg.c
|
||||
+++ b/dlls/browseui/progressdlg.c
|
||||
@@ -175,6 +175,7 @@ static INT_PTR CALLBACK dialog_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM l
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
struct create_params *params = (struct create_params *)lParam;
|
||||
+ LONG_PTR style;
|
||||
|
||||
/* Note: until we set the hEvent, the object is protected by
|
||||
* the critical section held by StartProgress */
|
||||
@@ -191,6 +192,10 @@ static INT_PTR CALLBACK dialog_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM l
|
||||
if (This->dwFlags & PROGDLG_NOMINIMIZE)
|
||||
SetWindowLongW(hwnd, GWL_STYLE, GetWindowLongW(hwnd, GWL_STYLE) & (~WS_MINIMIZEBOX));
|
||||
|
||||
+ style = GetWindowLongPtrW(GetDlgItem(hwnd, IDC_ANIMATION), GWL_STYLE);
|
||||
+ style |= ACS_AUTOPLAY | ACS_TRANSPARENT;
|
||||
+ SetWindowLongPtrW(GetDlgItem(hwnd, IDC_ANIMATION), GWL_STYLE, style);
|
||||
+
|
||||
update_dialog(This, 0xffffffff);
|
||||
This->dwUpdate = 0;
|
||||
This->isCancelled = FALSE;
|
||||
@@ -396,7 +401,16 @@ static HRESULT WINAPI ProgressDialog_SetTitle(IProgressDialog *iface, LPCWSTR pw
|
||||
|
||||
static HRESULT WINAPI ProgressDialog_SetAnimation(IProgressDialog *iface, HINSTANCE hInstance, UINT uiResourceId)
|
||||
{
|
||||
- FIXME("(%p, %p, %d) - stub\n", iface, hInstance, uiResourceId);
|
||||
+ ProgressDialog *This = impl_from_IProgressDialog(iface);
|
||||
+
|
||||
+ TRACE("(%p, %p, %d)\n", iface, hInstance, uiResourceId);
|
||||
+
|
||||
+ if (uiResourceId & ~0xFFFF)
|
||||
+ return S_OK;
|
||||
+
|
||||
+ if (!SendDlgItemMessageW(This->hwnd, IDC_ANIMATION, ACM_OPENW, (WPARAM)hInstance, uiResourceId))
|
||||
+ WARN("Failed to load animation\n");
|
||||
+
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
--
|
||||
2.3.0
|
||||
|
@@ -0,0 +1,161 @@
|
||||
From 61fce27e29e7e61b76916d0e1014a3294217fb54 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 28 Feb 2015 02:28:08 +0100
|
||||
Subject: browseui: Implement PROGDLG_AUTOTIME flag for IProgressDialog.
|
||||
|
||||
---
|
||||
dlls/browseui/browseui.rc | 5 ++++
|
||||
dlls/browseui/progressdlg.c | 64 +++++++++++++++++++++++++++++++++++++++++----
|
||||
dlls/browseui/resids.h | 5 ++++
|
||||
3 files changed, 69 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/browseui/browseui.rc b/dlls/browseui/browseui.rc
|
||||
index 833b139..64b859d 100644
|
||||
--- a/dlls/browseui/browseui.rc
|
||||
+++ b/dlls/browseui/browseui.rc
|
||||
@@ -25,6 +25,11 @@ LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
|
||||
STRINGTABLE
|
||||
{
|
||||
IDS_CANCELLING "Canceling..."
|
||||
+ IDS_REMAINING1 "%u %s remaining"
|
||||
+ IDS_REMAINING2 "%u %s and %u %s remaining"
|
||||
+ IDS_SECONDS "seconds"
|
||||
+ IDS_MINUTES "minutes"
|
||||
+ IDS_HOURS "hours"
|
||||
}
|
||||
|
||||
IDD_PROGRESS_DLG DIALOG 0, 0, 260, 85
|
||||
diff --git a/dlls/browseui/progressdlg.c b/dlls/browseui/progressdlg.c
|
||||
index 598197b..d632860 100644
|
||||
--- a/dlls/browseui/progressdlg.c
|
||||
+++ b/dlls/browseui/progressdlg.c
|
||||
@@ -73,6 +73,9 @@ typedef struct tagProgressDialog {
|
||||
ULONGLONG ullCompleted;
|
||||
ULONGLONG ullTotal;
|
||||
HWND hwndDisabledParent; /* For modal dialog: the parent that need to be re-enabled when the dialog ends */
|
||||
+ ULONGLONG startTime;
|
||||
+ LPWSTR remainingMsg[2];
|
||||
+ LPWSTR timeMsg[3];
|
||||
} ProgressDialog;
|
||||
|
||||
static inline ProgressDialog *impl_from_IProgressDialog(IProgressDialog *iface)
|
||||
@@ -257,14 +260,18 @@ static DWORD WINAPI dialog_thread(LPVOID lpParameter)
|
||||
|
||||
static void ProgressDialog_Destructor(ProgressDialog *This)
|
||||
{
|
||||
+ int i;
|
||||
TRACE("destroying %p\n", This);
|
||||
if (This->hwnd)
|
||||
end_dialog(This);
|
||||
- heap_free(This->lines[0]);
|
||||
- heap_free(This->lines[1]);
|
||||
- heap_free(This->lines[2]);
|
||||
+ for (i = 0; i < 3; i++)
|
||||
+ heap_free(This->lines[i]);
|
||||
heap_free(This->cancelMsg);
|
||||
heap_free(This->title);
|
||||
+ for (i = 0; i < 2; i++)
|
||||
+ heap_free(This->remainingMsg[i]);
|
||||
+ for (i = 0; i < 3; i++)
|
||||
+ heap_free(This->timeMsg[i]);
|
||||
This->cs.DebugInfo->Spare[0] = 0;
|
||||
DeleteCriticalSection(&This->cs);
|
||||
heap_free(This);
|
||||
@@ -326,8 +333,6 @@ static HRESULT WINAPI ProgressDialog_StartProgressDialog(IProgressDialog *iface,
|
||||
TRACE("(%p, %p, %x, %p)\n", iface, punkEnableModeless, dwFlags, reserved);
|
||||
if (punkEnableModeless || reserved)
|
||||
FIXME("Reserved parameters not null (%p, %p)\n", punkEnableModeless, reserved);
|
||||
- if (dwFlags & PROGDLG_AUTOTIME)
|
||||
- FIXME("Flags PROGDLG_AUTOTIME not supported\n");
|
||||
if (dwFlags & PROGDLG_NOTIME)
|
||||
FIXME("Flags PROGDLG_NOTIME not supported\n");
|
||||
|
||||
@@ -358,6 +363,7 @@ static HRESULT WINAPI ProgressDialog_StartProgressDialog(IProgressDialog *iface,
|
||||
This->hwndDisabledParent = hwndDisable;
|
||||
}
|
||||
|
||||
+ This->startTime = GetTickCount64();
|
||||
LeaveCriticalSection(&This->cs);
|
||||
|
||||
return S_OK;
|
||||
@@ -406,6 +412,52 @@ static BOOL WINAPI ProgressDialog_HasUserCancelled(IProgressDialog *iface)
|
||||
return This->isCancelled;
|
||||
}
|
||||
|
||||
+static void load_time_strings(ProgressDialog *This)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < 2; i++)
|
||||
+ {
|
||||
+ if (!This->remainingMsg[i])
|
||||
+ This->remainingMsg[i] = load_string(BROWSEUI_hinstance, IDS_REMAINING1 + i);
|
||||
+ }
|
||||
+ for (i = 0; i < 3; i++)
|
||||
+ {
|
||||
+ if (!This->timeMsg[i])
|
||||
+ This->timeMsg[i] = load_string(BROWSEUI_hinstance, IDS_SECONDS + i);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void update_time_remaining(ProgressDialog *This, ULONGLONG ullCompleted, ULONGLONG ullTotal)
|
||||
+{
|
||||
+ unsigned int remaining, remainder = 0;
|
||||
+ ULONGLONG elapsed;
|
||||
+ WCHAR line[128];
|
||||
+ int i;
|
||||
+
|
||||
+ if (!This->startTime || !ullCompleted || !ullTotal)
|
||||
+ return;
|
||||
+
|
||||
+ load_time_strings(This);
|
||||
+
|
||||
+ elapsed = GetTickCount64() - This->startTime;
|
||||
+ remaining = (elapsed * ullTotal / ullCompleted - elapsed) / 1000;
|
||||
+
|
||||
+ for (i = 0; remaining >= 60 && i < 2; i++)
|
||||
+ {
|
||||
+ remainder = remaining % 60;
|
||||
+ remaining /= 60;
|
||||
+ }
|
||||
+
|
||||
+ if (i > 0 && remaining < 2 && remainder != 0)
|
||||
+ wsprintfW(line, This->remainingMsg[1], remaining, This->timeMsg[i], remainder, This->timeMsg[i-1]);
|
||||
+ else
|
||||
+ wsprintfW(line, This->remainingMsg[0], remaining, This->timeMsg[i]);
|
||||
+
|
||||
+ set_buffer(&This->lines[2], line);
|
||||
+ This->dwUpdate |= UPDATE_LINE3;
|
||||
+}
|
||||
+
|
||||
static HRESULT WINAPI ProgressDialog_SetProgress64(IProgressDialog *iface, ULONGLONG ullCompleted, ULONGLONG ullTotal)
|
||||
{
|
||||
ProgressDialog *This = impl_from_IProgressDialog(iface);
|
||||
@@ -418,6 +470,8 @@ static HRESULT WINAPI ProgressDialog_SetProgress64(IProgressDialog *iface, ULONG
|
||||
This->ullCompleted = ullCompleted;
|
||||
This->dwUpdate |= UPDATE_PROGRESS;
|
||||
hwnd = This->hwnd;
|
||||
+ if (This->dwFlags & PROGDLG_AUTOTIME)
|
||||
+ update_time_remaining(This, ullCompleted, ullTotal);
|
||||
LeaveCriticalSection(&This->cs);
|
||||
|
||||
if (hwnd)
|
||||
diff --git a/dlls/browseui/resids.h b/dlls/browseui/resids.h
|
||||
index cd44a8e..865cdd1 100644
|
||||
--- a/dlls/browseui/resids.h
|
||||
+++ b/dlls/browseui/resids.h
|
||||
@@ -21,6 +21,11 @@
|
||||
#include "commctrl.h"
|
||||
|
||||
#define IDS_CANCELLING 16
|
||||
+#define IDS_REMAINING1 17
|
||||
+#define IDS_REMAINING2 18
|
||||
+#define IDS_SECONDS 19
|
||||
+#define IDS_MINUTES 20
|
||||
+#define IDS_HOURS 21
|
||||
|
||||
#define IDC_ANIMATION 100
|
||||
#define IDC_PROGRESS_BAR 102
|
||||
--
|
||||
2.3.0
|
||||
|
@@ -0,0 +1,48 @@
|
||||
From da4415d947b792fc5e0de978cf22e68d2b6b8601 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 1 Mar 2015 03:52:06 +0100
|
||||
Subject: browseui: Avoid race-conditions when progress dialog is released
|
||||
before thread terminates.
|
||||
|
||||
---
|
||||
dlls/browseui/progressdlg.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/dlls/browseui/progressdlg.c b/dlls/browseui/progressdlg.c
|
||||
index e61a4cc..7d07ee9 100644
|
||||
--- a/dlls/browseui/progressdlg.c
|
||||
+++ b/dlls/browseui/progressdlg.c
|
||||
@@ -235,6 +235,7 @@ static DWORD WINAPI dialog_thread(LPVOID lpParameter)
|
||||
/* Note: until we set the hEvent in WM_INITDIALOG, the ProgressDialog object
|
||||
* is protected by the critical section held by StartProgress */
|
||||
struct create_params *params = lpParameter;
|
||||
+ ProgressDialog *This = params->This;
|
||||
HWND hwnd;
|
||||
MSG msg;
|
||||
|
||||
@@ -252,6 +253,7 @@ static DWORD WINAPI dialog_thread(LPVOID lpParameter)
|
||||
}
|
||||
}
|
||||
|
||||
+ IProgressDialog_Release(&This->IProgressDialog_iface);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -341,10 +343,14 @@ static HRESULT WINAPI ProgressDialog_StartProgressDialog(IProgressDialog *iface,
|
||||
return S_OK; /* as on XP */
|
||||
}
|
||||
This->dwFlags = dwFlags;
|
||||
+
|
||||
params.This = This;
|
||||
params.hwndParent = hwndParent;
|
||||
params.hEvent = CreateEventW(NULL, TRUE, FALSE, NULL);
|
||||
|
||||
+ /* thread holds one reference to ensure clean shutdown */
|
||||
+ IProgressDialog_AddRef(&This->IProgressDialog_iface);
|
||||
+
|
||||
hThread = CreateThread(NULL, 0, dialog_thread, ¶ms, 0, NULL);
|
||||
WaitForSingleObject(params.hEvent, INFINITE);
|
||||
CloseHandle(params.hEvent);
|
||||
--
|
||||
2.3.0
|
||||
|
@@ -0,0 +1,25 @@
|
||||
From c8dd8ae321e08d94954fe011de653cc333d0cbbb Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 28 Feb 2015 21:24:54 +0100
|
||||
Subject: d3d8: Make IDirect3DSwapChain8::Present hotpachable.
|
||||
|
||||
---
|
||||
dlls/d3d8/swapchain.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/d3d8/swapchain.c b/dlls/d3d8/swapchain.c
|
||||
index 067a3e0..44fc02a 100644
|
||||
--- a/dlls/d3d8/swapchain.c
|
||||
+++ b/dlls/d3d8/swapchain.c
|
||||
@@ -86,7 +86,7 @@ static ULONG WINAPI d3d8_swapchain_Release(IDirect3DSwapChain8 *iface)
|
||||
return ref;
|
||||
}
|
||||
|
||||
-static HRESULT WINAPI d3d8_swapchain_Present(IDirect3DSwapChain8 *iface,
|
||||
+static HRESULT WINAPI DECLSPEC_HOTPATCH d3d8_swapchain_Present(IDirect3DSwapChain8 *iface,
|
||||
const RECT *src_rect, const RECT *dst_rect, HWND dst_window_override,
|
||||
const RGNDATA *dirty_region)
|
||||
{
|
||||
--
|
||||
2.3.0
|
||||
|
@@ -0,0 +1,24 @@
|
||||
From 348d1eafe2d80017509ebfb79832a7465fd1693b Mon Sep 17 00:00:00 2001
|
||||
From: Amine Khaldi <amine.khaldi@reactos.org>
|
||||
Date: Sun, 22 Feb 2015 22:39:25 +0100
|
||||
Subject: d3drm: Mark DllCanUnloadNow and DllGetClassObject as private.
|
||||
|
||||
---
|
||||
dlls/d3drm/d3drm.spec | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3drm/d3drm.spec b/dlls/d3drm/d3drm.spec
|
||||
index 4108a72..e83fb0b 100644
|
||||
--- a/dlls/d3drm/d3drm.spec
|
||||
+++ b/dlls/d3drm/d3drm.spec
|
||||
@@ -19,5 +19,5 @@
|
||||
@ stdcall D3DRMVectorScale(ptr ptr float)
|
||||
@ stdcall D3DRMVectorSubtract(ptr ptr ptr)
|
||||
@ stdcall Direct3DRMCreate(ptr)
|
||||
-@ stub DllCanUnloadNow
|
||||
-@ stub DllGetClassObject
|
||||
+@ stub -private DllCanUnloadNow
|
||||
+@ stub -private DllGetClassObject
|
||||
--
|
||||
2.3.0
|
||||
|
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user