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
86 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
87684b59a7 | ||
|
7e72d7770d | ||
|
73da458bc5 | ||
|
e12216c644 | ||
|
2ec0d480e3 | ||
|
c9bed78b65 | ||
|
7a419c031a | ||
|
723bc23e50 | ||
|
dc05c7f163 | ||
|
972842c50e | ||
|
f9c1ebaa12 | ||
|
2789fdcece | ||
|
1637f56db9 | ||
|
c501f9328f | ||
|
917b9ce280 | ||
|
82d94a776d | ||
|
75c5402c30 | ||
|
a9b0616fc8 | ||
|
ed7e1530b5 | ||
|
693e4d185b | ||
|
3a5f2b6be0 | ||
|
7641fa58b9 | ||
|
4b062e3f22 | ||
|
de353ee024 | ||
|
513952a066 | ||
|
78784bf5d3 | ||
|
f5cb09e9a4 | ||
|
c9da32b6b0 | ||
|
5eae92bf33 | ||
|
c3920efc17 | ||
|
475485ce5b | ||
|
d7bdce7fb6 | ||
|
e5b7f0c052 | ||
|
03554ec52b | ||
|
b0f0338a95 | ||
|
8308e3a332 | ||
|
a5bc6762f1 | ||
|
90d7c40949 | ||
|
52263be2fe | ||
|
1aa8b412df | ||
|
1ec6f34853 | ||
|
c213417376 | ||
|
393eed4e68 | ||
|
11f1207852 | ||
|
a05b7dc368 | ||
|
8d9d2558c9 | ||
|
f6dd7940f0 | ||
|
14ae97f5a2 | ||
|
677a246d22 | ||
|
6cc9038091 | ||
|
653547070d | ||
|
fdd2f4a7f3 | ||
|
1c01fe44d7 | ||
|
2c0583d002 | ||
|
a691cec6e7 | ||
|
f66b06739e | ||
|
92fc5f6141 | ||
|
d260e9e7c4 | ||
|
d0d310a271 | ||
|
305af53597 | ||
|
f09106e8c4 | ||
|
775e8675c1 | ||
|
463d01d3aa | ||
|
5a51c64426 | ||
|
7c793eb695 | ||
|
25e56dc257 | ||
|
749fc944fc | ||
|
9c556a5905 | ||
|
61769b2227 | ||
|
212f94bb9f | ||
|
514e29e7dc | ||
|
9414a2da0a | ||
|
3cf93b92fc | ||
|
35adc2a6f7 | ||
|
5661a76f20 | ||
|
953163c6ff | ||
|
7e6191a4cd | ||
|
621ece3c6f | ||
|
9c9639f3ae | ||
|
ade7c1e886 | ||
|
26699042ab | ||
|
1349af11e7 | ||
|
ca7325e83a | ||
|
3dd8fd35af | ||
|
cc459b2b4f | ||
|
aa07c4b087 |
30
DEVELOPER.md
30
DEVELOPER.md
@@ -2,16 +2,16 @@ Developers and maintainers guide
|
||||
================================
|
||||
|
||||
This document will provide some information targeted at developers, who
|
||||
either want to build/package Wine-Compholio for their distribution, but also
|
||||
for developers who would like to contribute their patches to Wine-Compholio,
|
||||
either want to build/package Wine Staging for their distribution, but also
|
||||
for developers who would like to contribute their patches to Wine Staging,
|
||||
to get them included in future releases.
|
||||
|
||||
|
||||
|
||||
Compiling Wine-Compholio
|
||||
========================
|
||||
Compiling Wine Staging
|
||||
======================
|
||||
|
||||
**Warning:** Please note that starting with Wine-Compholio 1.7.23 it is
|
||||
**Warning:** Please note that starting with Staging 1.7.23 it is
|
||||
deprecated to manually apply patches without using the Makefile. To avoid
|
||||
typical pitfalls for package maintainers (like trying to use the patch
|
||||
commandline utility for binary patches or not updating the patchlist) it is
|
||||
@@ -26,21 +26,21 @@ Instructions
|
||||
|
||||
The following instructions (based on the [Gentoo
|
||||
Wiki](https://wiki.gentoo.org/wiki/Netflix/Pipelight#Compiling_manually))
|
||||
will give a short overview how to compile Wine-Compholio, but of course not
|
||||
will give a short overview how to compile Wine Staging, but of course not
|
||||
explain all details. Make sure to install all required Wine dependencies
|
||||
before proceeding.
|
||||
|
||||
As the first step please grab the latest Wine source:
|
||||
```bash
|
||||
wget http://prdownloads.sourceforge.net/wine/wine-1.7.29.tar.bz2
|
||||
wget https://github.com/compholio/wine-compholio-daily/archive/v1.7.29.tar.gz
|
||||
wget http://prdownloads.sourceforge.net/wine/wine-1.7.31.tar.bz2
|
||||
wget https://github.com/wine-compholio/wine-staging/archive/v1.7.31.tar.gz
|
||||
```
|
||||
|
||||
Extract the archives:
|
||||
```bash
|
||||
tar xvjf wine-1*.tar.bz2
|
||||
cd wine-1*
|
||||
tar xvzf ../v1.7.29.tar.gz --strip-components 1
|
||||
tar xvzf ../v1.7.31.tar.gz --strip-components 1
|
||||
```
|
||||
|
||||
And apply the patches:
|
||||
@@ -49,7 +49,7 @@ make -C ./patches DESTDIR=$(pwd) install
|
||||
```
|
||||
|
||||
Afterwards run configure (you can also specify a prefix if you don't want to install
|
||||
Wine-Compholio system-wide):
|
||||
Wine Staging system-wide):
|
||||
```bash
|
||||
./configure --with-xattr
|
||||
```
|
||||
@@ -93,11 +93,11 @@ make -C ./patches DESTDIR=$(pwd) PATCHLIST="DIRNAME1.ok DIRNAME2.ok" install
|
||||
```
|
||||
|
||||
|
||||
Contributing to Wine-Compholio
|
||||
==============================
|
||||
Contributing to Wine Staging
|
||||
============================
|
||||
|
||||
Please note that Wine-Compholio is not just an arbitrary collection of Wine
|
||||
patches. We see Wine-Compholio as a **testing version** in preparation for
|
||||
Please note that Wine Staging is not just an arbitrary collection of Wine
|
||||
patches. We see Wine Staging as a **testing version** in preparation for
|
||||
patches to be submitted to upstream Wine. This implies that all patches should
|
||||
at least have a minimum standard quality. Unlike some other PPAs/AURs which
|
||||
provide heavily patched Wine versions, we will not accept hacks for very
|
||||
@@ -126,7 +126,7 @@ for upstream Wine.
|
||||
Attribution guidelines
|
||||
----------------------
|
||||
|
||||
The Wine "Compholio" Edition repository expects all patches to conform to
|
||||
The Wine Staging repository expects all patches to conform to
|
||||
Wine's (undocumented) attribution guidelines. There are a variety of ways
|
||||
to attribute patches, but they all involve an additional line to the patch
|
||||
subject:
|
||||
|
12
LICENSE.md
12
LICENSE.md
@@ -1,15 +1,15 @@
|
||||
Wine-Compholio license
|
||||
======================
|
||||
Wine Staging license
|
||||
====================
|
||||
|
||||
**Note:** Some files in this repository are provided under a different license.
|
||||
Please check the list of exceptions below. Unless stated otherwise all files
|
||||
are part of **Wine-Compholio** and are licensed under the terms of the
|
||||
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-Compholio project authors.
|
||||
Copyright (C) 2014 the Wine Staging project authors.
|
||||
|
||||
Wine-Compholio is free software; you can redistribute it and/or
|
||||
Wine Staging is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
@@ -26,7 +26,7 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
### Exceptions
|
||||
|
||||
The following files are not part of Wine-Compholio and provided under a
|
||||
The following files are not part of Wine Staging and provided under a
|
||||
different license. These files are not linked to the rest of the project in
|
||||
any way and are simply installed for end-user convenience.
|
||||
|
||||
|
197
README.md
197
README.md
@@ -1,120 +1,145 @@
|
||||
What is Wine-Compholio?
|
||||
=======================
|
||||
What is Wine Staging?
|
||||
=====================
|
||||
|
||||
**Warning: Do not report bugs at bugs.winehq.org when using this version!
|
||||
Please take a look at our
|
||||
[Wiki](https://github.com/compholio/wine-compholio/wiki/Reporting-bugs)
|
||||
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Reporting-bugs)
|
||||
for more information about how to report bugs.**
|
||||
|
||||
The **Wine "Compholio" Edition** is a special build of the popular Wine
|
||||
software that includes both patches written by our team and selected patches
|
||||
by third party developers that we consider good enough for inclusion. This can
|
||||
be seen as a testing version in preparation for patches to be submitted to
|
||||
upstream Wine - don't be surprised if you encounter additional bugs, which are
|
||||
not present in regular wine, and always report such issues to us (via github!),
|
||||
so we can improve our fixes even further. Thanks!
|
||||
**Wine Staging** (formerly wine-compholio) is a special wine version containing
|
||||
bug fixes and features that are not yet available in regular wine versions. The
|
||||
idea behind Wine Staging is to provide new features faster to end users and to
|
||||
give developers the possibility to discuss and improve their patches before
|
||||
they are sent upstream. We also intend to create a community of wine developers
|
||||
to share experience and to make it easier for beginners to start hacking on
|
||||
wine.
|
||||
|
||||
Although we are reviewing all patches before adding them, you may encounter
|
||||
additional bugs, which are not present in regular wine. Make sure to report
|
||||
such issues in our bug tracker instead of winehq.org so that we can try to
|
||||
solve them in future versions. Thanks!
|
||||
|
||||
How to install and use Wine-Compholio
|
||||
=====================================
|
||||
How to install and use Wine Staging
|
||||
===================================
|
||||
|
||||
Ready-to-use packages for Wine-Compholio are available for a variety
|
||||
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
|
||||
[Wiki](https://github.com/compholio/wine-compholio/wiki/Installation).
|
||||
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Installation).
|
||||
|
||||
When using Wine-Compholio there are a few differences compared to regular
|
||||
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`.
|
||||
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
|
||||
[Wiki](https://github.com/compholio/wine-compholio/wiki/Usage).
|
||||
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Usage).
|
||||
|
||||
|
||||
Included bugfixes and improvements
|
||||
==================================
|
||||
Included bug fixes and improvements
|
||||
===================================
|
||||
|
||||
**Bugs fixed in Wine-Compholio 1.7.29 [80]:**
|
||||
**Bugs fixed in Wine Staging 1.7.31 [101]:**
|
||||
|
||||
* ATL IOCS data should not be stored in GWLP_USERDATA ([Wine Bug #21767](http://bugs.winehq.org/show_bug.cgi?id=21767))
|
||||
* Add Dynamic DST exceptions for Israel Standard Time ([Wine Bug #36374](http://bugs.winehq.org/show_bug.cgi?id=36374))
|
||||
* 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 partially support for sessionStorage
|
||||
* Allow special characters in pipe names ([Wine Bug #28995](http://bugs.winehq.org/show_bug.cgi?id=28995))
|
||||
* Add stub for NtSetLdtEntries/ZwSetLdtEntries ([Wine Bug #26268](https://bugs.winehq.org/show_bug.cgi?id=26268))
|
||||
* 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
|
||||
* Audio stuttering and performance drops in multiple applications ([Wine Bug #30639](http://bugs.winehq.org/show_bug.cgi?id=30639))
|
||||
* Correctly treat '.' when checking for empty directories ([Wine Bug #26272](http://bugs.winehq.org/show_bug.cgi?id=26272))
|
||||
* Do not fail when a used context is passed to wglShareLists ([Wine Bug #11436](http://bugs.winehq.org/show_bug.cgi?id=11436))
|
||||
* Don't fill KdHelp structure for usermode applications ([Wine Bug #37272](http://bugs.winehq.org/show_bug.cgi?id=37272))
|
||||
* Ensure NtProtectVirtualMemory and NtCreateSection are on separate pages ([Wine Bug #33162](http://bugs.winehq.org/show_bug.cgi?id=33162))
|
||||
* FEAR 1 installer expects basic_string_wchar_dtor to return NULL ([Wine Bug #37358](http://bugs.winehq.org/show_bug.cgi?id=37358))
|
||||
* Fix black screen on startup introduced by pixelformat changes. ([Wine Bug #35950](http://bugs.winehq.org/show_bug.cgi?id=35950))
|
||||
* Fix comparison of punctuation characters in lstrcmp ([Wine Bug #10767](http://bugs.winehq.org/show_bug.cgi?id=10767))
|
||||
* Fix flickering introduced by pixelformat changes. ([Wine Bug #35718](http://bugs.winehq.org/show_bug.cgi?id=35718))
|
||||
* Fix for ConnectNamedPort return value in overlapped mode ([Wine Bug #16550](http://bugs.winehq.org/show_bug.cgi?id=16550))
|
||||
* Fix for programs leaking wndproc slots ([Wine Bug #32451](http://bugs.winehq.org/show_bug.cgi?id=32451))
|
||||
* Fix gray screen on startup introduced by pixelformat changes. ([Wine Bug #35975](http://bugs.winehq.org/show_bug.cgi?id=35975))
|
||||
* Fix issues when driver dispatch routine returns different status codes ([Wine Bug #30155](http://bugs.winehq.org/show_bug.cgi?id=30155))
|
||||
* Fix missing video introduced by pixelformat changes. ([Wine Bug #36900](http://bugs.winehq.org/show_bug.cgi?id=36900))
|
||||
* 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 sending window messages in FindWindowExW ([Wine Bug #27282](https://bugs.winehq.org/show_bug.cgi?id=27282))
|
||||
* CoWaitForMultipleHandles shouldn't process window events when APC calls are queued ([Wine Bug #32568](https://bugs.winehq.org/show_bug.cgi?id=32568))
|
||||
* Correctly treat '.' when checking for empty directories ([Wine Bug #26272](https://bugs.winehq.org/show_bug.cgi?id=26272))
|
||||
* D3DCompileShader should filter specific warning messages ([Wine Bug #33770](https://bugs.winehq.org/show_bug.cgi?id=33770))
|
||||
* 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))
|
||||
* Emulate access to KI_USER_SHARED_DATA kernel page on x86_64 ([Wine Bug #33849](https://bugs.winehq.org/show_bug.cgi?id=33849))
|
||||
* Emulate write to CR4 register ([Wine Bug #30220](https://bugs.winehq.org/show_bug.cgi?id=30220))
|
||||
* Ensure NtProtectVirtualMemory and NtCreateSection are on separate pages ([Wine Bug #33162](https://bugs.winehq.org/show_bug.cgi?id=33162))
|
||||
* Exception during start of fr-043 caused by missing DXTn support ([Wine Bug #37391](https://bugs.winehq.org/show_bug.cgi?id=37391))
|
||||
* FEAR 1 installer expects basic_string_wchar_dtor to return NULL ([Wine Bug #37358](https://bugs.winehq.org/show_bug.cgi?id=37358))
|
||||
* FairplayKD.sys needs KeSetSystemAffinityThread ([Wine Bug #36822](https://bugs.winehq.org/show_bug.cgi?id=36822))
|
||||
* Fix black screen on startup introduced by pixelformat changes. ([Wine Bug #35950](https://bugs.winehq.org/show_bug.cgi?id=35950))
|
||||
* Fix comparison of punctuation characters in lstrcmp ([Wine Bug #10767](https://bugs.winehq.org/show_bug.cgi?id=10767))
|
||||
* 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 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 gray screen on startup introduced by pixelformat changes. ([Wine Bug #35975](https://bugs.winehq.org/show_bug.cgi?id=35975))
|
||||
* Fix handling of invert_y in DrawTextExW ([Wine Bug #22109](https://bugs.winehq.org/show_bug.cgi?id=22109))
|
||||
* Fix issues when driver dispatch routine returns different status codes ([Wine Bug #30155](https://bugs.winehq.org/show_bug.cgi?id=30155))
|
||||
* Fix missing video introduced by pixelformat changes. ([Wine Bug #36900](https://bugs.winehq.org/show_bug.cgi?id=36900))
|
||||
* 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](http://bugs.winehq.org/show_bug.cgi?id=35655))
|
||||
* Games For Windows Live 1.x expects a valid linker version in the PE header ([Wine Bug #28768](http://bugs.winehq.org/show_bug.cgi?id=28768))
|
||||
* GetSecurityInfo returns NULL DACL for process object ([Wine Bug #15980](http://bugs.winehq.org/show_bug.cgi?id=15980))
|
||||
* Implement a Microsoft Yahei replacement font ([Wine Bug #13829](http://bugs.winehq.org/show_bug.cgi?id=13829))
|
||||
* Implement an Arial replacement font ([Wine Bug #32323](http://bugs.winehq.org/show_bug.cgi?id=32323))
|
||||
* Fix wined3d performance drop introduced by pixelformat changes. ([Wine Bug #35655](https://bugs.winehq.org/show_bug.cgi?id=35655))
|
||||
* 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))
|
||||
* GetSecurityInfo returns NULL DACL for process object ([Wine Bug #15980](https://bugs.winehq.org/show_bug.cgi?id=15980))
|
||||
* Implement a Microsoft Yahei replacement font ([Wine Bug #13829](https://bugs.winehq.org/show_bug.cgi?id=13829))
|
||||
* Implement an Arial replacement font ([Wine Bug #32323](https://bugs.winehq.org/show_bug.cgi?id=32323))
|
||||
* Improvement for heap allocation performance
|
||||
* Lego Stunt Rally requires DXTn software de/encoding support ([Wine Bug #25486](http://bugs.winehq.org/show_bug.cgi?id=25486))
|
||||
* Limit cross thread access to ImmSet* functions ([Wine Bug #35361](http://bugs.winehq.org/show_bug.cgi?id=35361))
|
||||
* Initialize irp.Tail.Overlay.OriginalFileObject with stub file object ([Wine Bug #37537](https://bugs.winehq.org/show_bug.cgi?id=37537))
|
||||
* 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)
|
||||
* Make it possible to change media center / tablet pc status ([Wine Bug #18732](http://bugs.winehq.org/show_bug.cgi?id=18732))
|
||||
* Multiple applications need EnumDisplayDevicesW implementation ([Wine Bug #34978](http://bugs.winehq.org/show_bug.cgi?id=34978))
|
||||
* Need for Speed 3 installer requires devices in HKEY_DYN_DATA ([Wine Bug #7115](http://bugs.winehq.org/show_bug.cgi?id=7115))
|
||||
* MSVCRT crashes when NULL is passed as string to atof or strtod ([Wine Bug #32550](https://bugs.winehq.org/show_bug.cgi?id=32550))
|
||||
* Make it possible to change media center / tablet pc status ([Wine Bug #18732](https://bugs.winehq.org/show_bug.cgi?id=18732))
|
||||
* Multiple applications need EnumDisplayDevicesW implementation ([Wine Bug #34978](https://bugs.winehq.org/show_bug.cgi?id=34978))
|
||||
* 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
|
||||
* Prevent window managers from grouping all wine programs together ([Wine Bug #32699](http://bugs.winehq.org/show_bug.cgi?id=32699))
|
||||
* Prevent window managers from grouping all wine programs together ([Wine Bug #32699](https://bugs.winehq.org/show_bug.cgi?id=32699))
|
||||
* 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](http://bugs.winehq.org/show_bug.cgi?id=37087))
|
||||
* Return correct IMediaSeeking stream positions in quartz ([Wine Bug #23174](http://bugs.winehq.org/show_bug.cgi?id=23174))
|
||||
* 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
|
||||
* Send WM_PAINT event during dialog creation ([Wine Bug #35652](http://bugs.winehq.org/show_bug.cgi?id=35652))
|
||||
* Support for AllocateAndGetTcpExTableFromStack ([Wine Bug #34372](http://bugs.winehq.org/show_bug.cgi?id=34372))
|
||||
* Support for BindImageEx ([Wine Bug #3591](http://bugs.winehq.org/show_bug.cgi?id=3591))
|
||||
* Support for D3DXGetShaderInputSemantics ([Wine Bug #22682](http://bugs.winehq.org/show_bug.cgi?id=22682))
|
||||
* Support for DOS hidden/system file attributes ([Wine Bug #9158](http://bugs.winehq.org/show_bug.cgi?id=9158))
|
||||
* Send WM_PAINT event during dialog creation ([Wine Bug #35652](https://bugs.winehq.org/show_bug.cgi?id=35652))
|
||||
* 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 D3DXGetShaderInputSemantics ([Wine Bug #22682](https://bugs.winehq.org/show_bug.cgi?id=22682))
|
||||
* 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 FindFirstFileExW level FindExInfoBasic ([Wine Bug #37354](http://bugs.winehq.org/show_bug.cgi?id=37354))
|
||||
* Support for GetFinalPathNameByHandle ([Wine Bug #36073](http://bugs.winehq.org/show_bug.cgi?id=36073))
|
||||
* Support for GetSystemTimes ([Wine Bug #19813](http://bugs.winehq.org/show_bug.cgi?id=19813))
|
||||
* 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 GetSystemTimes ([Wine Bug #19813](https://bugs.winehq.org/show_bug.cgi?id=19813))
|
||||
* Support for GetVolumePathName
|
||||
* Support for ID3DXSkinInfoImpl_UpdateSkinnedMesh ([Wine Bug #32572](http://bugs.winehq.org/show_bug.cgi?id=32572))
|
||||
* Support for IRichEditOle and ITextDocument support for ITextServices. ([Wine Bug #17042](http://bugs.winehq.org/show_bug.cgi?id=17042))
|
||||
* Support for ITextDocument_fnRange function ([Wine Bug #12458](http://bugs.winehq.org/show_bug.cgi?id=12458))
|
||||
* Support for ITextRange, ITextFont and ITextPara ([Wine Bug #18303](http://bugs.winehq.org/show_bug.cgi?id=18303))
|
||||
* Support for Junction Points ([Wine Bug #12401](http://bugs.winehq.org/show_bug.cgi?id=12401))
|
||||
* Support for KF_FLAG_DEFAULT_PATH in SHGetKnownFolderPath ([Wine Bug #30385](http://bugs.winehq.org/show_bug.cgi?id=30385))
|
||||
* Support for LoadIconMetric ([Wine Bug #35375](http://bugs.winehq.org/show_bug.cgi?id=35375))
|
||||
* Support for NtQuerySection ([Wine Bug #37338](http://bugs.winehq.org/show_bug.cgi?id=37338))
|
||||
* Support for NtSetInformationFile class FileDispositionInformation ([Wine Bug #30397](http://bugs.winehq.org/show_bug.cgi?id=30397))
|
||||
* Support for PulseAudio backend for audio ([Wine Bug #10495](http://bugs.winehq.org/show_bug.cgi?id=10495))
|
||||
* Support for SHCreateSessionKey ([Wine Bug #35630](http://bugs.winehq.org/show_bug.cgi?id=35630))
|
||||
* Support for TOOLTIPS_GetTipText edge cases ([Wine Bug #30648](http://bugs.winehq.org/show_bug.cgi?id=30648))
|
||||
* Support for TransmitFile ([Wine Bug #5048](http://bugs.winehq.org/show_bug.cgi?id=5048))
|
||||
* Support for UTF7 encoding/decoding ([Wine Bug #27388](http://bugs.winehq.org/show_bug.cgi?id=27388))
|
||||
* Support for WTSEnumerateProcessesW ([Wine Bug #29903](http://bugs.winehq.org/show_bug.cgi?id=29903))
|
||||
* Support for extra large and jumbo icon lists in shell32 ([Wine Bug #24721](http://bugs.winehq.org/show_bug.cgi?id=24721))
|
||||
* Support for inherited file ACLs ([Wine Bug #34406](http://bugs.winehq.org/show_bug.cgi?id=34406))
|
||||
* Support for interface change notifications ([Wine Bug #32328](http://bugs.winehq.org/show_bug.cgi?id=32328))
|
||||
* Support for process ACLs ([Wine Bug #22006](http://bugs.winehq.org/show_bug.cgi?id=22006))
|
||||
* Support for setcap on wine-preloader ([Wine Bug #26256](http://bugs.winehq.org/show_bug.cgi?id=26256))
|
||||
* Support for stored file ACLs ([Wine Bug #31858](http://bugs.winehq.org/show_bug.cgi?id=31858))
|
||||
* Support for wine64 on FreeBSD/PC-BSD ([Wine Bug #34330](http://bugs.winehq.org/show_bug.cgi?id=34330))
|
||||
* Support for ws2_32.inet_pton ([Wine Bug #36713](http://bugs.winehq.org/show_bug.cgi?id=36713))
|
||||
* Unity3D Editor requires ProductId registry value ([Wine Bug #36964](http://bugs.winehq.org/show_bug.cgi?id=36964))
|
||||
* Update a XIM candidate position when cursor location changes ([Wine Bug #30938](http://bugs.winehq.org/show_bug.cgi?id=30938))
|
||||
* Use manual relay for RunDLL_CallEntry16 in shell32 ([Wine Bug #23033](http://bugs.winehq.org/show_bug.cgi?id=23033))
|
||||
* Voobly expects correct handling of WRITECOPY memory protection ([Wine Bug #29384](http://bugs.winehq.org/show_bug.cgi?id=29384))
|
||||
* Wine ignores IDF_CHECKFIRST flag in SetupPromptForDisk ([Wine Bug #20465](http://bugs.winehq.org/show_bug.cgi?id=20465))
|
||||
* 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))
|
||||
* Support for ITextRange, ITextFont and ITextPara ([Wine Bug #18303](https://bugs.winehq.org/show_bug.cgi?id=18303))
|
||||
* 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 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))
|
||||
* Support for RtlDecompressBuffer ([Wine Bug #37449](https://bugs.winehq.org/show_bug.cgi?id=37449))
|
||||
* Support for SHCreateSessionKey ([Wine Bug #35630](https://bugs.winehq.org/show_bug.cgi?id=35630))
|
||||
* 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 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 wine64 on FreeBSD/PC-BSD ([Wine Bug #34330](https://bugs.winehq.org/show_bug.cgi?id=34330))
|
||||
* Tumblebugs 2 requires DXTn software encoding support ([Wine Bug #29586](https://bugs.winehq.org/show_bug.cgi?id=29586))
|
||||
* Unity3D Editor requires ProductId registry value ([Wine Bug #36964](https://bugs.winehq.org/show_bug.cgi?id=36964))
|
||||
* Update a XIM candidate position when cursor location changes ([Wine Bug #30938](https://bugs.winehq.org/show_bug.cgi?id=30938))
|
||||
* 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))
|
||||
* 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
|
||||
* vSphere needs IoCsqInitialize ([Wine Bug #36777](https://bugs.winehq.org/show_bug.cgi?id=36777))
|
||||
* wglDescribePixelFormat should return max index for NULL descriptor ([Wine Bug #6176](https://bugs.winehq.org/show_bug.cgi?id=6176))
|
||||
|
||||
|
63
debian/changelog
vendored
63
debian/changelog
vendored
@@ -1,3 +1,66 @@
|
||||
wine-compholio (1.7.31) unstable; urgency=low
|
||||
* Improve output of 'wine --patches' and simplify syntax of definition files.
|
||||
* Update kernel32-GetSystemTimes patches.
|
||||
* Improve style for ntdll-Fix_Alignment patches.
|
||||
* Added possibility to temporarily disable patches to patch system.
|
||||
* Added patch to allow selecting specific audio device for PulseAudio backend.
|
||||
* Added patch with stub for NtSetLdtEntries/ZwSetLdtEntries.
|
||||
* Added patch to prevent processing message events for CoWaitForMultipleHandles when APC calls are queued.
|
||||
* Added patch with stub for KeSetSystemAffinityThread.
|
||||
* Added patch to implement DXTn support for d3dx9_36.
|
||||
* Added patch to return correct values for GetThreadTimes.
|
||||
* Added patch to align texture dimensions to block size for compressed textures.
|
||||
* Added patch with stub for IoCsqInitialize.
|
||||
* Added patch with stubs for vectored continue handler functions.
|
||||
* Added patch to fix wglDescribePixelFormat when NULL is passed as pixel format descriptor.
|
||||
* Added patch to allow NULL pointer for optional arguments of D3DXIntersectTri.
|
||||
* Added patch to fix crash of winedevice when relocation entry crosses page boundary.
|
||||
* Added patch to emulate 'mov Eb, Gb' instruction on x86 processor architecture.
|
||||
* Added patch to emulate access to KI_USER_SHARED_DATA kernel page on x86_64.
|
||||
* Added patch to initialize irp.Tail.Overlay.OriginalFileObject with stub file object.
|
||||
* Added patch to implement emulation of SIDT instruction when using Exagear.
|
||||
* Added patch to return more context attributes in schan_InitializeSecurityContextW.
|
||||
* Added patch to avoid crashing when broken app tries to release surface although refcount is zero.
|
||||
* Added patch to avoid sending window messages in FindWindowExW.
|
||||
* Added patch to fix handling of invert_y in DrawTextExW.
|
||||
* Added patch to fix implementation of K32GetPerformanceInfo.
|
||||
* Added patch to close server fd if there is no space in thread inflight fd list.
|
||||
* Added patch to avoid failing in d3dx9_mesh_OptimizeInplace because of unimplemented vertex reordering.
|
||||
* Added patch to workaround bugs in CompareStringW (triggered by Adobe Flash).
|
||||
* Removed patch for iphlpapi stub functions (accepted upstream).
|
||||
* Removed patches for FindFirstFileExW (accepted upstream).
|
||||
* Removed patches for TLB dependencies lookup in resources (accepted upstream).
|
||||
* Removed patches for ws2_32.inet_pton implementation (fixed upstream).
|
||||
* Removed patch to update properties when applying MSI transforms (fixed upstream).
|
||||
* Removed patch to silence repeated GSUB_apply_ChainContext[Subst|Pos] FIXMEs (accepted upstream).
|
||||
* Removed patch with additional tests for MsgWaitForMultipleObjectsEx (accepted upstream).
|
||||
* Removed patches for D3DXCreatePolygon (accepted upstream).
|
||||
* Removed patches vor vectored continue handler stubs (accepted upstream).
|
||||
* Removed patches for K32GetPerformanceInfo (accepted upstream).
|
||||
* Removed patch for D3DXIntersectTri (accepted upstream).
|
||||
* Partially removed patches for UTF-7 tests (accepted upstream).
|
||||
* Partially removed patches for WS_SO_CONNECT_TIME (accepted upstream).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Sat, 15 Nov 2014 15:36:38 +0100
|
||||
|
||||
wine-compholio (1.7.30) unstable; urgency=low
|
||||
* Fix wrong escaping of quote/slash characters in patchupdater script.
|
||||
* Added additional conversion functions to DXTn patch.
|
||||
* Added patch to filter specific warning messages for D3DCompileShader.
|
||||
* Added patch to implement iphlpapi stub functions.
|
||||
* Added patch to implement support for pasting HTML from native Unix applications.
|
||||
* Added patch to implement RtlDecompressBuffer.
|
||||
* Added patch to emulate write to CR4 register.
|
||||
* Added patch for implementation of GdipCreateRegionRgnData.
|
||||
* Added patch for implementation of D3DXCreatePolygon.
|
||||
* Added patch for TLB dependencies lookup in resources.
|
||||
* Added patch to update ProductVersion when applying MSI transforms.
|
||||
* Added patch for ITextSelection_fnGetDuplicate implementation.
|
||||
* Removed patch to avoid Clang compiler warning because of unused Vtable (accepted upstream).
|
||||
* Removed patch for additional ATL thunks (accepted upstream).
|
||||
* Removed patch to Ămplement IRichEditOle and ITextDocument support for ITextServices (accepted upstream).
|
||||
* Removed patch to fix compile errors on Archlinux (fixed upstream).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Sun, 02 Nov 2014 00:45:28 +0100
|
||||
|
||||
wine-compholio (1.7.29) unstable; urgency=low
|
||||
* Updated DOS Attributes patch to better detect XATTR functions.
|
||||
* Updated patch for shell32 default folder ACLs.
|
||||
|
23
debian/postinst
vendored
23
debian/postinst
vendored
@@ -1,23 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
if [ "$1" = "upgrade" ] ; then
|
||||
if ps -C wineserver > /dev/null && test -d /var/lib/update-notifier/user.d/ ; then
|
||||
cp -f /usr/share/wine/wineserver-restart-required.update-notifier /var/lib/update-notifier/user.d/wineserver-restart-required
|
||||
fi
|
||||
fi
|
||||
|
||||
service procps start || /etc/init.d/procps restart
|
||||
|
||||
# Automatically added by dh_installmime
|
||||
if [ "$1" = "configure" ] && [ -x "`which update-mime 2>/dev/null`" ]; then
|
||||
update-mime
|
||||
fi
|
||||
# End automatically added section
|
||||
# Automatically added by dh_makeshlibs
|
||||
if [ "$1" = "configure" ]; then
|
||||
ldconfig
|
||||
fi
|
||||
# End automatically added section
|
||||
|
||||
|
||||
|
10
debian/postrm
vendored
10
debian/postrm
vendored
@@ -1,10 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
# Automatically added by dh_installmime
|
||||
if which update-mime >/dev/null 2>&1; then update-mime; fi
|
||||
# End automatically added section
|
||||
# Automatically added by dh_makeshlibs
|
||||
if [ "$1" = "remove" ]; then
|
||||
ldconfig
|
||||
fi
|
||||
# End automatically added section
|
9
debian/prerm
vendored
9
debian/prerm
vendored
@@ -1,9 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
if [ "$1" = "remove" ] ; then
|
||||
if [ -x /usr/sbin/update-binfmts ]; then
|
||||
/usr/sbin/update-binfmts --package wine --remove wine /usr/bin/wine || true
|
||||
fi
|
||||
fi
|
||||
|
||||
|
26
debian/tools/DEVELOPER.md.in
vendored
26
debian/tools/DEVELOPER.md.in
vendored
@@ -2,16 +2,16 @@ Developers and maintainers guide
|
||||
================================
|
||||
|
||||
This document will provide some information targeted at developers, who
|
||||
either want to build/package Wine-Compholio for their distribution, but also
|
||||
for developers who would like to contribute their patches to Wine-Compholio,
|
||||
either want to build/package Wine Staging for their distribution, but also
|
||||
for developers who would like to contribute their patches to Wine Staging,
|
||||
to get them included in future releases.
|
||||
|
||||
|
||||
|
||||
Compiling Wine-Compholio
|
||||
========================
|
||||
Compiling Wine Staging
|
||||
======================
|
||||
|
||||
**Warning:** Please note that starting with Wine-Compholio 1.7.23 it is
|
||||
**Warning:** Please note that starting with Staging 1.7.23 it is
|
||||
deprecated to manually apply patches without using the Makefile. To avoid
|
||||
typical pitfalls for package maintainers (like trying to use the patch
|
||||
commandline utility for binary patches or not updating the patchlist) it is
|
||||
@@ -26,14 +26,14 @@ Instructions
|
||||
|
||||
The following instructions (based on the [Gentoo
|
||||
Wiki](https://wiki.gentoo.org/wiki/Netflix/Pipelight#Compiling_manually))
|
||||
will give a short overview how to compile Wine-Compholio, but of course not
|
||||
will give a short overview how to compile Wine Staging, but of course not
|
||||
explain all details. Make sure to install all required Wine dependencies
|
||||
before proceeding.
|
||||
|
||||
As the first step please grab the latest Wine source:
|
||||
```bash
|
||||
wget http://prdownloads.sourceforge.net/wine/wine-{version}.tar.bz2
|
||||
wget https://github.com/compholio/wine-compholio-daily/archive/v{version}.tar.gz
|
||||
wget https://github.com/wine-compholio/wine-staging/archive/v{version}.tar.gz
|
||||
```
|
||||
|
||||
Extract the archives:
|
||||
@@ -49,7 +49,7 @@ make -C ./patches DESTDIR=$(pwd) install
|
||||
```
|
||||
|
||||
Afterwards run configure (you can also specify a prefix if you don't want to install
|
||||
Wine-Compholio system-wide):
|
||||
Wine Staging system-wide):
|
||||
```bash
|
||||
./configure --with-xattr
|
||||
```
|
||||
@@ -93,11 +93,11 @@ make -C ./patches DESTDIR=$(pwd) PATCHLIST="DIRNAME1.ok DIRNAME2.ok" install
|
||||
```
|
||||
|
||||
|
||||
Contributing to Wine-Compholio
|
||||
==============================
|
||||
Contributing to Wine Staging
|
||||
============================
|
||||
|
||||
Please note that Wine-Compholio is not just an arbitrary collection of Wine
|
||||
patches. We see Wine-Compholio as a **testing version** in preparation for
|
||||
Please note that Wine Staging is not just an arbitrary collection of Wine
|
||||
patches. We see Wine Staging as a **testing version** in preparation for
|
||||
patches to be submitted to upstream Wine. This implies that all patches should
|
||||
at least have a minimum standard quality. Unlike some other PPAs/AURs which
|
||||
provide heavily patched Wine versions, we will not accept hacks for very
|
||||
@@ -126,7 +126,7 @@ for upstream Wine.
|
||||
Attribution guidelines
|
||||
----------------------
|
||||
|
||||
The Wine "Compholio" Edition repository expects all patches to conform to
|
||||
The Wine Staging repository expects all patches to conform to
|
||||
Wine's (undocumented) attribution guidelines. There are a variety of ways
|
||||
to attribute patches, but they all involve an additional line to the patch
|
||||
subject:
|
||||
|
40
debian/tools/README.md.in
vendored
40
debian/tools/README.md.in
vendored
@@ -1,39 +1,43 @@
|
||||
What is Wine-Compholio?
|
||||
=======================
|
||||
What is Wine Staging?
|
||||
=====================
|
||||
|
||||
**Warning: Do not report bugs at bugs.winehq.org when using this version!
|
||||
Please take a look at our
|
||||
[Wiki](https://github.com/compholio/wine-compholio/wiki/Reporting-bugs)
|
||||
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Reporting-bugs)
|
||||
for more information about how to report bugs.**
|
||||
|
||||
The **Wine "Compholio" Edition** is a special build of the popular Wine
|
||||
software that includes both patches written by our team and selected patches
|
||||
by third party developers that we consider good enough for inclusion. This can
|
||||
be seen as a testing version in preparation for patches to be submitted to
|
||||
upstream Wine - don't be surprised if you encounter additional bugs, which are
|
||||
not present in regular wine, and always report such issues to us (via github!),
|
||||
so we can improve our fixes even further. Thanks!
|
||||
**Wine Staging** (formerly wine-compholio) is a special wine version containing
|
||||
bug fixes and features that are not yet available in regular wine versions. The
|
||||
idea behind Wine Staging is to provide new features faster to end users and to
|
||||
give developers the possibility to discuss and improve their patches before
|
||||
they are sent upstream. We also intend to create a community of wine developers
|
||||
to share experience and to make it easier for beginners to start hacking on
|
||||
wine.
|
||||
|
||||
Although we are reviewing all patches before adding them, you may encounter
|
||||
additional bugs, which are not present in regular wine. Make sure to report
|
||||
such issues in our bug tracker instead of winehq.org so that we can try to
|
||||
solve them in future versions. Thanks!
|
||||
|
||||
How to install and use Wine-Compholio
|
||||
=====================================
|
||||
How to install and use Wine Staging
|
||||
===================================
|
||||
|
||||
Ready-to-use packages for Wine-Compholio are available for a variety
|
||||
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
|
||||
[Wiki](https://github.com/compholio/wine-compholio/wiki/Installation).
|
||||
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Installation).
|
||||
|
||||
When using Wine-Compholio there are a few differences compared to regular
|
||||
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`.
|
||||
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
|
||||
[Wiki](https://github.com/compholio/wine-compholio/wiki/Usage).
|
||||
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Usage).
|
||||
|
||||
|
||||
Included bugfixes and improvements
|
||||
==================================
|
||||
Included bug fixes and improvements
|
||||
===================================
|
||||
|
||||
{fixes}
|
||||
|
||||
|
45
debian/tools/patchlist.sh
vendored
45
debian/tools/patchlist.sh
vendored
@@ -1,32 +1,47 @@
|
||||
#!/bin/sh
|
||||
PATCH_DATA=$(cat);
|
||||
PATCH_LINES=$(echo "${PATCH_DATA}" | wc -l);
|
||||
PATCH_LINES=$((${PATCH_LINES}+20));
|
||||
PATCH_LINES=$((${PATCH_LINES}+23));
|
||||
|
||||
cat <<EOF
|
||||
From: "FDS-Team" <webmaster@fds-team.de>
|
||||
From: FDS-Team <webmaster@fds-team.de>
|
||||
Subject: Autogenerated patch list.
|
||||
|
||||
---
|
||||
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..5fa0cd5 100644
|
||||
index a273502..0a3182f 100644
|
||||
--- a/libs/wine/config.c
|
||||
+++ b/libs/wine/config.c
|
||||
@@ -478,6 +478,${PATCH_LINES} @@ const char *wine_get_version(void)
|
||||
return PACKAGE_VERSION;
|
||||
}
|
||||
|
||||
+struct wine_patch {
|
||||
+ const char *name;
|
||||
+static const struct
|
||||
+{
|
||||
+ const char *author;
|
||||
+ const char *title;
|
||||
+} wine_patch_data[] = {
|
||||
+ const char *subject;
|
||||
+ int revision;
|
||||
+}
|
||||
+wine_patch_data[] =
|
||||
+{
|
||||
${PATCH_DATA}
|
||||
+ { NULL, NULL, NULL }
|
||||
+ { NULL, NULL, 0 }
|
||||
+};
|
||||
+
|
||||
+/* return the applied non-standard patches */
|
||||
+const void * wine_get_patches(void)
|
||||
+const void *wine_get_patches(void)
|
||||
+{
|
||||
+ return &wine_patch_data[0];
|
||||
+}
|
||||
@@ -58,16 +73,4 @@ index 2159fac..7cb2918 100644
|
||||
wine_init;
|
||||
wine_init_argv0_path;
|
||||
wine_is_dbcs_leadbyte;
|
||||
diff --git a/include/wine/library.h b/include/wine/library.h
|
||||
index 242bb69..aa9e585 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 );
|
||||
EOF
|
||||
|
142
debian/tools/patchupdate.py
vendored
142
debian/tools/patchupdate.py
vendored
@@ -19,19 +19,15 @@
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
#
|
||||
|
||||
from xml.dom import minidom
|
||||
import contextlib
|
||||
import hashlib
|
||||
import itertools
|
||||
import multiprocessing
|
||||
import operator
|
||||
import os
|
||||
import patchutils
|
||||
import pickle
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
import textwrap
|
||||
import urllib
|
||||
|
||||
# Cached information to speed up patch dependency checks
|
||||
latest_wine_commit = None
|
||||
@@ -59,18 +55,12 @@ class PatchUpdaterError(RuntimeError):
|
||||
"""Failed to update patches."""
|
||||
pass
|
||||
|
||||
class AuthorInfo(object):
|
||||
def __init__(self):
|
||||
self.author = ""
|
||||
self.subject = ""
|
||||
self.revision = ""
|
||||
|
||||
class PatchSet(object):
|
||||
def __init__(self, name):
|
||||
self.name = name
|
||||
self.authors = []
|
||||
self.fixes = []
|
||||
self.changes = []
|
||||
self.disabled = False
|
||||
|
||||
self.files = []
|
||||
self.patches = []
|
||||
@@ -86,6 +76,16 @@ def _pairs(a):
|
||||
for k in a[i+1:]:
|
||||
yield (j, k)
|
||||
|
||||
def _unique(iterable, key=None):
|
||||
"List unique elements, preserving order. Remember only the element just seen."
|
||||
# unique_justseen('AAAABBBCCDAABBB') --> A B C D A B
|
||||
# unique_justseen('ABBCcAD', str.lower) --> A B C A D
|
||||
return itertools.imap(next, itertools.imap(operator.itemgetter(1), itertools.groupby(iterable, key)))
|
||||
|
||||
def _escape(s):
|
||||
"""Escape string inside of '...' quotes."""
|
||||
return s.replace("\\", "\\\\").replace("\"", "\\\"").replace("'", "'\\''")
|
||||
|
||||
def _load_dict(filename):
|
||||
"""Load a Python dictionary object from a file."""
|
||||
try:
|
||||
@@ -99,24 +99,15 @@ def _save_dict(filename, value):
|
||||
with open(filename, "wb") as fp:
|
||||
pickle.dump(value, fp, pickle.HIGHEST_PROTOCOL)
|
||||
|
||||
def _winebugs_query_short_desc(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" % \
|
||||
"&".join(["id=%d" % bugid for bugid in bugids])
|
||||
with contextlib.closing(urllib.urlopen(url)) as fp:
|
||||
data = 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))
|
||||
for bugid, element in zip(bugids, data.getElementsByTagName('short_desc')):
|
||||
result[bugid] = element.firstChild.data
|
||||
return result
|
||||
def parse_int(val, default=0):
|
||||
"""Parse an integer or boolean value."""
|
||||
r = re.match("^[0-9]+$", val)
|
||||
if r:
|
||||
return int(val)
|
||||
try:
|
||||
return {'true': 1, 'yes': 1, 'false': 0, 'no': 0}[val.lower()]
|
||||
except AttributeError:
|
||||
return default
|
||||
|
||||
# Read information from changelog
|
||||
def _read_changelog():
|
||||
@@ -174,7 +165,7 @@ def enum_directories(revision, path):
|
||||
return dirs
|
||||
|
||||
def read_definition(revision, filename, name_to_id):
|
||||
"""Read a definition file and return information as tuple (authors, depends, fixes)."""
|
||||
"""Read a definition file and return information as tuple (depends, fixes)."""
|
||||
|
||||
filename = os.path.join(filename, "definition")
|
||||
if revision is None:
|
||||
@@ -188,10 +179,9 @@ def read_definition(revision, filename, name_to_id):
|
||||
except CalledProcessError:
|
||||
raise IOError("Failed to load %s" % filename)
|
||||
|
||||
authors = []
|
||||
depends = set()
|
||||
fixes = []
|
||||
info = AuthorInfo()
|
||||
depends = set()
|
||||
fixes = []
|
||||
disabled = False
|
||||
|
||||
for line in content.split("\n"):
|
||||
if line.startswith("#"):
|
||||
@@ -199,25 +189,10 @@ def read_definition(revision, filename, name_to_id):
|
||||
|
||||
tmp = line.split(":", 1)
|
||||
if len(tmp) != 2:
|
||||
if len(info.author) and len(info.subject):
|
||||
authors.append(info)
|
||||
info = AuthorInfo()
|
||||
continue
|
||||
|
||||
key, val = tmp[0].lower(), tmp[1].strip()
|
||||
if key == "author":
|
||||
if len(info.author): info.author += ", "
|
||||
info.author += val
|
||||
|
||||
elif key == "subject" or key == "title":
|
||||
if len(info.subject): info.subject += " "
|
||||
info.subject += val
|
||||
|
||||
elif key == "revision":
|
||||
if len(info.revision): info.revision += ", "
|
||||
info.revision += val
|
||||
|
||||
elif key == "depends":
|
||||
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))
|
||||
@@ -234,12 +209,13 @@ def read_definition(revision, filename, name_to_id):
|
||||
continue
|
||||
fixes.append((None, val))
|
||||
|
||||
else:
|
||||
print "WARNING: Ignoring unknown command in definition file %s: %s" % (deffile, line)
|
||||
elif key == "disabled":
|
||||
disabled = parse_int(val)
|
||||
|
||||
if len(info.author) and len(info.subject):
|
||||
authors.append(info)
|
||||
return authors, depends, fixes
|
||||
elif revision is None:
|
||||
print "WARNING: Ignoring unknown command in definition file %s: %s" % (filename, line)
|
||||
|
||||
return depends, fixes, disabled
|
||||
|
||||
def read_patchset(revision = None):
|
||||
"""Read information about all patchsets for a specific revision."""
|
||||
@@ -279,10 +255,10 @@ def read_patchset(revision = None):
|
||||
# Now read the definition files in a second step
|
||||
for i, patch in all_patches.iteritems():
|
||||
try:
|
||||
patch.authors, patch.depends, patch.fixes = \
|
||||
patch.depends, patch.fixes, patch.disabled = \
|
||||
read_definition(revision, os.path.join(config.path_patches, patch.name), name_to_id)
|
||||
except IOError:
|
||||
raise PatchUpdaterError("Missing definition file for %s" % patch.name)
|
||||
patch.depends, patch.fixes, patch.disabled = set(), [], False
|
||||
|
||||
return all_patches
|
||||
|
||||
@@ -436,14 +412,15 @@ def verify_dependencies(all_patches):
|
||||
_save_dict(config.path_depcache, cached_patch_result)
|
||||
_save_dict(config.path_srccache, cached_original_src)
|
||||
|
||||
max_patches = max(all_patches.keys()) + 1
|
||||
enabled_patches = dict([(i, patch) for i, patch in all_patches.iteritems() if not patch.disabled])
|
||||
max_patches = max(enabled_patches.keys()) + 1
|
||||
|
||||
for i, patch in all_patches.iteritems():
|
||||
for i, patch in enabled_patches.iteritems():
|
||||
patch.verify_depends = set(patch.depends)
|
||||
patch.verify_time = [0]*max_patches
|
||||
|
||||
# Check for circular dependencies and perform modified vector clock algorithm
|
||||
patches = dict(all_patches)
|
||||
patches = dict(enabled_patches)
|
||||
while len(patches):
|
||||
|
||||
to_delete = []
|
||||
@@ -453,7 +430,7 @@ def verify_dependencies(all_patches):
|
||||
to_delete.append(i)
|
||||
|
||||
if len(to_delete) == 0:
|
||||
raise PatchUpdaterError("Circular dependency in set of patches: %s" %
|
||||
raise PatchUpdaterError("Circular dependency (or disabled dependency) in set of patches: %s" %
|
||||
", ".join([patch.name for i, patch in patches.iteritems()]))
|
||||
|
||||
for j in to_delete:
|
||||
@@ -465,7 +442,7 @@ def verify_dependencies(all_patches):
|
||||
|
||||
# Find out which files are modified by multiple patches
|
||||
modified_files = {}
|
||||
for i, patch in all_patches.iteritems():
|
||||
for i, patch in enabled_patches.iteritems():
|
||||
for f in patch.modified_files:
|
||||
if f not in modified_files:
|
||||
modified_files[f] = []
|
||||
@@ -475,7 +452,7 @@ def verify_dependencies(all_patches):
|
||||
_load_patch_cache()
|
||||
try:
|
||||
for f, indices in modified_files.iteritems():
|
||||
verify_patch_order(all_patches, indices, f)
|
||||
verify_patch_order(enabled_patches, indices, f)
|
||||
finally:
|
||||
_save_patch_cache()
|
||||
|
||||
@@ -486,22 +463,12 @@ def generate_makefile(all_patches):
|
||||
template = template_fp.read()
|
||||
|
||||
with open(config.path_Makefile, "w") as fp:
|
||||
fp.write(template.format(patchlist="\t" + " \\\n\t".join(["%s.ok" % patch.name for i, patch in all_patches.iteritems()])))
|
||||
fp.write(template.format(patchlist="\t" + " \\\n\t".join(
|
||||
["%s.ok" % patch.name for i, patch in all_patches.iteritems() if not patch.disabled])))
|
||||
|
||||
for i, patch in all_patches.iteritems():
|
||||
fp.write("# Patchset %s\n" % patch.name)
|
||||
fp.write("# |\n")
|
||||
fp.write("# | Included patches:\n")
|
||||
|
||||
# List all patches and their corresponding authors
|
||||
for info in patch.authors:
|
||||
if not info.subject: continue
|
||||
s = []
|
||||
if info.revision and info.revision != "1": s.append("rev %s" % info.revision)
|
||||
if info.author: s.append("by %s" % info.author)
|
||||
if len(s): s = " [%s]" % ", ".join(s)
|
||||
fp.write("# | *\t%s\n" % "\n# | \t".join(textwrap.wrap(info.subject + s, 120)))
|
||||
fp.write("# |\n")
|
||||
|
||||
# List all bugs fixed by this patchset
|
||||
if any([bugid is not None for bugid, bugname in patch.fixes]):
|
||||
@@ -524,13 +491,11 @@ def generate_makefile(all_patches):
|
||||
fp.write("\t$(call APPLY_FILE,%s)\n" % os.path.join(patch.name, f))
|
||||
|
||||
# Create *.ok file (used to generate patchlist)
|
||||
if len(patch.authors):
|
||||
if len(patch.patches):
|
||||
fp.write("\t@( \\\n")
|
||||
for info in patch.authors:
|
||||
if not info.subject: continue
|
||||
s = info.subject.replace("\\", "\\\\\\\\").replace("\"", "\\\\\"").replace("'", "'\\''")
|
||||
if info.revision and info.revision != "1": s += " [rev %s]" % info.revision
|
||||
fp.write("\t\techo '+ { \"%s\", \"%s\", \"%s\" },'; \\\n" % (patch.name, info.author, s))
|
||||
for p in _unique(patch.patches, key=lambda p: (p.patch_author, p.patch_subject, p.patch_revision)):
|
||||
fp.write("\t\techo '+ { \"%s\", \"%s\", %d },'; \\\n" % \
|
||||
(_escape(p.patch_author), _escape(p.patch_subject), p.patch_revision))
|
||||
fp.write("\t) > %s.ok\n" % patch.name)
|
||||
else:
|
||||
fp.write("\ttouch %s.ok\n" % patch.name)
|
||||
@@ -540,28 +505,22 @@ def generate_markdown(all_patches, stable_patches, stable_compholio_version):
|
||||
"""Generate README.md and DEVELOPER.md including information about specific patches and bugfixes."""
|
||||
|
||||
def _format_bug(mode, bugid, bugname):
|
||||
# if bugid is not None:
|
||||
# short_desc = bug_short_desc[bugid]
|
||||
# if bugname is None: bugname = short_desc
|
||||
if mode < 0: bugname = "~~%s~~" % bugname
|
||||
if bugid is None: return "* %s" % bugname
|
||||
return "* %s ([Wine Bug #%d](http://bugs.winehq.org/show_bug.cgi?id=%d))" % \
|
||||
return "* %s ([Wine Bug #%d](https://bugs.winehq.org/show_bug.cgi?id=%d))" % \
|
||||
(bugname, bugid, bugid) #, short_desc.replace("\\", "\\\\").replace("\"", "\\\""))
|
||||
|
||||
all_bugids = set()
|
||||
all_fixes = {}
|
||||
|
||||
# Get fixes for current version
|
||||
for i, patch in all_patches.iteritems():
|
||||
for bugid, bugname in patch.fixes:
|
||||
if bugid is not None: all_bugids.add(bugid)
|
||||
key = bugid if bugid is not None else bugname
|
||||
all_fixes[key] = [1, bugid, bugname]
|
||||
|
||||
# Compare with fixes for latest stable version
|
||||
for i, patch in stable_patches.iteritems():
|
||||
for bugid, bugname in patch.fixes:
|
||||
if bugid is not None: all_bugids.add(bugid)
|
||||
key = bugid if bugid is not None else bugname
|
||||
if all_fixes.has_key(key):
|
||||
all_fixes[key][0] = 0
|
||||
@@ -579,9 +538,6 @@ def generate_markdown(all_patches, stable_patches, stable_compholio_version):
|
||||
old_fixes = new_fixes
|
||||
new_fixes = []
|
||||
|
||||
# Query information from bugzilla
|
||||
# bug_short_desc = _winebugs_query_short_desc(all_bugids)
|
||||
|
||||
# Generate information for current version
|
||||
lines = []
|
||||
if len(new_fixes):
|
||||
@@ -591,7 +547,7 @@ def generate_markdown(all_patches, stable_patches, stable_compholio_version):
|
||||
lines.append(_format_bug(mode, bugid, bugname))
|
||||
lines.append("")
|
||||
lines.append("")
|
||||
lines.append("**Bugs fixed in Wine-Compholio %s [%d]:**" % (stable_compholio_version, len(old_fixes)))
|
||||
lines.append("**Bugs fixed in Wine Staging %s [%d]:**" % (stable_compholio_version, len(old_fixes)))
|
||||
lines.append("")
|
||||
for mode, bugid, bugname in sorted(old_fixes, key=lambda x: x[2]):
|
||||
lines.append(_format_bug(mode, bugid, bugname))
|
||||
|
141
debian/tools/patchutils.py
vendored
141
debian/tools/patchutils.py
vendored
@@ -19,6 +19,7 @@
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
#
|
||||
|
||||
import email.header
|
||||
import collections
|
||||
import difflib
|
||||
import hashlib
|
||||
@@ -37,22 +38,27 @@ class PatchApplyError(RuntimeError):
|
||||
pass
|
||||
|
||||
class PatchObject(object):
|
||||
def __init__(self, filename):
|
||||
self.extracted_patch = None
|
||||
self.unique_hash = None
|
||||
def __init__(self, filename, header):
|
||||
self.patch_author = header['author']
|
||||
self.patch_email = header['email']
|
||||
self.patch_subject = header['subject']
|
||||
self.patch_revision = header['revision'] if header.has_key('revision') else 1
|
||||
|
||||
self.filename = filename
|
||||
self.offset_begin = None
|
||||
self.offset_end = None
|
||||
self.isbinary = False
|
||||
self.extracted_patch = None
|
||||
self.unique_hash = None
|
||||
|
||||
self.oldname = None
|
||||
self.newname = None
|
||||
self.modified_file = None
|
||||
self.filename = filename
|
||||
self.offset_begin = None
|
||||
self.offset_end = None
|
||||
self.isbinary = False
|
||||
|
||||
self.oldsha1 = None
|
||||
self.newsha1 = None
|
||||
self.newmode = None
|
||||
self.oldname = None
|
||||
self.newname = None
|
||||
self.modified_file = None
|
||||
|
||||
self.oldsha1 = None
|
||||
self.newsha1 = None
|
||||
self.newmode = None
|
||||
|
||||
def is_binary(self):
|
||||
return self.isbinary
|
||||
@@ -134,10 +140,10 @@ def read_patch(filename):
|
||||
tmp, self.peeked = self.peeked, None
|
||||
return tmp[1]
|
||||
|
||||
def _read_single_patch(fp, oldname=None, newname=None):
|
||||
def _read_single_patch(fp, header, oldname=None, newname=None):
|
||||
"""Internal function to read a single patch from a file."""
|
||||
|
||||
patch = PatchObject(fp.filename)
|
||||
patch = PatchObject(fp.filename, header)
|
||||
patch.offset_begin = fp.tell()
|
||||
patch.oldname = oldname
|
||||
patch.newname = newname
|
||||
@@ -152,28 +158,39 @@ def read_patch(filename):
|
||||
line = fp.peek()
|
||||
if line is None:
|
||||
break
|
||||
|
||||
elif line.startswith("--- "):
|
||||
patch.oldname = line[4:].strip()
|
||||
|
||||
elif line.startswith("+++ "):
|
||||
patch.newname = line[4:].strip()
|
||||
|
||||
elif line.startswith("old mode") or line.startswith("deleted file mode"):
|
||||
pass # ignore
|
||||
|
||||
elif line.startswith("new mode "):
|
||||
patch.newmode = line[9:].strip()
|
||||
|
||||
elif line.startswith("new file mode "):
|
||||
patch.newmode = line[14:].strip()
|
||||
|
||||
elif line.startswith("new mode") or line.startswith("new file mode"):
|
||||
raise PatchParserError("Unable to parse header line '%s'." % line)
|
||||
|
||||
elif line.startswith("copy from") or line.startswith("copy to"):
|
||||
raise NotImplementedError("Patch copy header not implemented yet.")
|
||||
|
||||
elif line.startswith("rename "):
|
||||
raise NotImplementedError("Patch rename header not implemented yet.")
|
||||
|
||||
elif line.startswith("similarity index") or line.startswith("dissimilarity index"):
|
||||
pass # ignore
|
||||
|
||||
elif line.startswith("index "):
|
||||
r = re.match("^index ([a-fA-F0-9]*)\.\.([a-fA-F0-9]*)", line)
|
||||
if not r: raise PatchParserError("Unable to parse index header line '%s'." % line)
|
||||
patch.oldsha1, patch.newsha1 = r.group(1), r.group(2)
|
||||
|
||||
else:
|
||||
break
|
||||
assert fp.read() == line
|
||||
@@ -218,27 +235,28 @@ def read_patch(filename):
|
||||
raise PatchParserError("Empty hunk doesn't make sense.")
|
||||
assert fp.read() == line
|
||||
|
||||
while srclines > 0 or dstlines > 0:
|
||||
line = fp.read()
|
||||
if line is None:
|
||||
raise PatchParserError("Truncated patch.")
|
||||
elif line.startswith(" "):
|
||||
if srclines == 0 or dstlines == 0:
|
||||
raise PatchParserError("Corrupted patch.")
|
||||
srclines -= 1
|
||||
dstlines -= 1
|
||||
elif line.startswith("-"):
|
||||
if srclines == 0:
|
||||
raise PatchParserError("Corrupted patch.")
|
||||
srclines -= 1
|
||||
elif line.startswith("+"):
|
||||
if dstlines == 0:
|
||||
raise PatchParserError("Corrupted patch.")
|
||||
dstlines -= 1
|
||||
elif line.startswith("\\ "):
|
||||
pass # ignore
|
||||
else:
|
||||
raise PatchParserError("Unexpected line in hunk.")
|
||||
try:
|
||||
while srclines > 0 or dstlines > 0:
|
||||
line = fp.read()[0]
|
||||
if line == " ":
|
||||
if srclines == 0 or dstlines == 0:
|
||||
raise PatchParserError("Corrupted patch.")
|
||||
srclines -= 1
|
||||
dstlines -= 1
|
||||
elif line == "-":
|
||||
if srclines == 0:
|
||||
raise PatchParserError("Corrupted patch.")
|
||||
srclines -= 1
|
||||
elif line == "+":
|
||||
if dstlines == 0:
|
||||
raise PatchParserError("Corrupted patch.")
|
||||
dstlines -= 1
|
||||
elif line == "\\":
|
||||
pass # ignore
|
||||
else:
|
||||
raise PatchParserError("Unexpected line in hunk.")
|
||||
except TypeError: # triggered by None[0]
|
||||
raise PatchParserError("Truncated patch.")
|
||||
|
||||
while True:
|
||||
line = fp.peek()
|
||||
@@ -270,19 +288,66 @@ def read_patch(filename):
|
||||
patch.offset_end = fp.tell()
|
||||
return patch
|
||||
|
||||
def _parse_author(author):
|
||||
author = ' '.join([data.decode(format or 'utf-8').encode('utf-8') for \
|
||||
data, format in email.header.decode_header(author)])
|
||||
r = re.match("\"?([^\"]*)\"? <(.*)>", author)
|
||||
if r is None: raise NotImplementedError("Failed to parse From - header.")
|
||||
return r.group(1).strip(), r.group(2).strip()
|
||||
|
||||
def _parse_subject(subject):
|
||||
version = "(v|try|rev|take) *([0-9]+)"
|
||||
subject = subject.strip()
|
||||
if subject.endswith("."): subject = subject[:-1]
|
||||
r = re.match("^\\[PATCH([^]]*)\\](.*)$", subject, re.IGNORECASE)
|
||||
if r is not None:
|
||||
subject = r.group(2).strip()
|
||||
r = re.search(version, r.group(1), re.IGNORECASE)
|
||||
if r is not None: return subject, int(r.group(2))
|
||||
r = re.match("^(.*)\\(%s\\)$" % version, subject, re.IGNORECASE)
|
||||
if r is not None: return r.group(1).strip(), int(r.group(3))
|
||||
r = re.match("^(.*)[.,] +%s$" % version, subject, re.IGNORECASE)
|
||||
if r is not None: return r.group(1).strip(), int(r.group(3))
|
||||
r = re.match("^([^:]+) %s: (.*)$" % version, subject, re.IGNORECASE)
|
||||
if r is not None: return "%s: %s" % (r.group(1), r.group(4)), int(r.group(3))
|
||||
r = re.match("^(.*) +%s$" % version, subject, re.IGNORECASE)
|
||||
if r is not None: return r.group(1).strip(), int(r.group(3))
|
||||
return subject, 1
|
||||
|
||||
header = {}
|
||||
with _FileReader(filename) as fp:
|
||||
while True:
|
||||
line = fp.peek()
|
||||
if line is None:
|
||||
break
|
||||
|
||||
elif line.startswith("From: "):
|
||||
header['author'], header['email'] = _parse_author(line[6:])
|
||||
assert fp.read() == line
|
||||
|
||||
elif line.startswith("Subject: "):
|
||||
subject = line[9:].rstrip("\r\n")
|
||||
assert fp.read() == line
|
||||
while True:
|
||||
line = fp.peek()
|
||||
if not line.startswith(" "): break
|
||||
subject += line.rstrip("\r\n")
|
||||
assert fp.read() == line
|
||||
subject, revision = _parse_subject(subject)
|
||||
if not subject.endswith("."): subject += "."
|
||||
header['subject'], header['revision'] = subject, revision
|
||||
|
||||
elif line.startswith("diff --git "):
|
||||
tmp = line.strip().split(" ")
|
||||
if len(tmp) != 4: raise PatchParserError("Unable to parse git diff header line '%s'." % line)
|
||||
yield _read_single_patch(fp, tmp[2].strip(), tmp[3].strip())
|
||||
yield _read_single_patch(fp, header, tmp[2].strip(), tmp[3].strip())
|
||||
|
||||
elif line.startswith("--- "):
|
||||
yield _read_single_patch(fp)
|
||||
yield _read_single_patch(fp, header)
|
||||
|
||||
elif line.startswith("@@ -") or line.startswith("+++ "):
|
||||
raise PatchParserError("Patch didn't start with a git or diff header.")
|
||||
|
||||
else:
|
||||
assert fp.read() == line
|
||||
|
||||
|
@@ -1,15 +0,0 @@
|
||||
Author: Sebastian Lackner
|
||||
Subject: Add winediag message to show warning, that this isn't vanilla wine.
|
||||
Revision: 1
|
||||
|
||||
Author: Sebastian Lackner
|
||||
Subject: Append '(Compholio)' at the end of the version string.
|
||||
Revision: 1
|
||||
|
||||
Author: Sebastian Lackner
|
||||
Subject: Add commandline option --patches to show the patch list.
|
||||
Revision: 1
|
||||
|
||||
Author: Michael MĂĽller
|
||||
Subject: Add commandline option --check-libs to test if shared libraries are installed.
|
||||
Revision: 1
|
@@ -0,0 +1,288 @@
|
||||
From 7cb209e122fc503190dcad411483147ebc6d6cb4 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Tue, 11 Nov 2014 03:11:33 +0100
|
||||
Subject: ntdll: Implement emulation of SIDT instruction when using Exagear.
|
||||
|
||||
---
|
||||
configure.ac | 8 ++
|
||||
dlls/ntdll/signal_i386.c | 224 +++++++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 232 insertions(+)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 92d78a2..c88a139 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -32,6 +32,7 @@ AC_ARG_ENABLE(win16, AS_HELP_STRING([--disable-win16],[do not include Win16 supp
|
||||
AC_ARG_ENABLE(win64, AS_HELP_STRING([--enable-win64],[build a Win64 emulator on AMD64 (won't run Win32 binaries)]))
|
||||
AC_ARG_ENABLE(tests, AS_HELP_STRING([--disable-tests],[do not build the regression tests]))
|
||||
AC_ARG_ENABLE(maintainer-mode, AS_HELP_STRING([--enable-maintainer-mode],[enable maintainer-specific build rules]))
|
||||
+AC_ARG_ENABLE(exagear-compat, AS_HELP_STRING([--enable-exagear-compat],[use workarounds for known problems in the Exagear emulator]))
|
||||
|
||||
AC_ARG_WITH(alsa, AS_HELP_STRING([--without-alsa],[do not use the Alsa sound support]),
|
||||
[if test "x$withval" = "xno"; then ac_cv_header_sys_asoundlib_h=no; ac_cv_header_alsa_asoundlib_h=no; fi])
|
||||
@@ -367,6 +368,13 @@ fi
|
||||
WINE_WARNING_WITH(gettext,[test "$MSGFMT" = false],
|
||||
[gettext tools not found (or too old), translations won't be built.])
|
||||
|
||||
+dnl **** Enable Exagear workarounds ****
|
||||
+
|
||||
+if test "x$enable_exagear_compat" = "xyes"
|
||||
+then
|
||||
+ AC_DEFINE(EXAGEAR_COMPAT, 1, [Define if you want to enable Exagear emulator workarounds])
|
||||
+fi
|
||||
+
|
||||
dnl **** Check for some libraries ****
|
||||
|
||||
dnl Check for -li386 for NetBSD and OpenBSD
|
||||
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
|
||||
index 13df4bb..edf5ea8 100644
|
||||
--- a/dlls/ntdll/signal_i386.c
|
||||
+++ b/dlls/ntdll/signal_i386.c
|
||||
@@ -96,6 +96,14 @@ typedef struct
|
||||
BYTE Reserved4[96];
|
||||
} XMM_SAVE_AREA32;
|
||||
|
||||
+#include "pshpack1.h"
|
||||
+struct idtr
|
||||
+{
|
||||
+ WORD limit;
|
||||
+ BYTE *base;
|
||||
+};
|
||||
+#include "poppack.h"
|
||||
+
|
||||
/***********************************************************************
|
||||
* signal context platform-specific definitions
|
||||
*/
|
||||
@@ -1573,6 +1581,214 @@ static inline DWORD is_privileged_instr( CONTEXT *context )
|
||||
}
|
||||
}
|
||||
|
||||
+
|
||||
+#ifdef EXAGEAR_COMPAT
|
||||
+
|
||||
+/***********************************************************************
|
||||
+ * INSTR_GetOperandAddr
|
||||
+ *
|
||||
+ * Return the address of an instruction operand (from the mod/rm byte).
|
||||
+ */
|
||||
+static BYTE *INSTR_GetOperandAddr( CONTEXT *context, const BYTE *instr,
|
||||
+ int long_addr, int segprefix, int *len )
|
||||
+{
|
||||
+ int mod, rm, base = 0, index = 0, ss = 0, off;
|
||||
+
|
||||
+#define GET_VAL(val,type) \
|
||||
+ { *val = *(type *)instr; instr += sizeof(type); *len += sizeof(type); }
|
||||
+
|
||||
+ *len = 0;
|
||||
+ GET_VAL( &mod, BYTE );
|
||||
+ rm = mod & 7;
|
||||
+ mod >>= 6;
|
||||
+
|
||||
+ if (mod == 3)
|
||||
+ {
|
||||
+ switch(rm)
|
||||
+ {
|
||||
+ case 0: return (BYTE *)&context->Eax;
|
||||
+ case 1: return (BYTE *)&context->Ecx;
|
||||
+ case 2: return (BYTE *)&context->Edx;
|
||||
+ case 3: return (BYTE *)&context->Ebx;
|
||||
+ case 4: return (BYTE *)&context->Esp;
|
||||
+ case 5: return (BYTE *)&context->Ebp;
|
||||
+ case 6: return (BYTE *)&context->Esi;
|
||||
+ case 7: return (BYTE *)&context->Edi;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (long_addr)
|
||||
+ {
|
||||
+ if (rm == 4)
|
||||
+ {
|
||||
+ BYTE sib;
|
||||
+ GET_VAL( &sib, BYTE );
|
||||
+ rm = sib & 7;
|
||||
+ ss = sib >> 6;
|
||||
+ switch((sib >> 3) & 7)
|
||||
+ {
|
||||
+ case 0: index = context->Eax; break;
|
||||
+ case 1: index = context->Ecx; break;
|
||||
+ case 2: index = context->Edx; break;
|
||||
+ case 3: index = context->Ebx; break;
|
||||
+ case 4: index = 0; break;
|
||||
+ case 5: index = context->Ebp; break;
|
||||
+ case 6: index = context->Esi; break;
|
||||
+ case 7: index = context->Edi; break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ switch(rm)
|
||||
+ {
|
||||
+ case 0: base = context->Eax; break;
|
||||
+ case 1: base = context->Ecx; break;
|
||||
+ case 2: base = context->Edx; break;
|
||||
+ case 3: base = context->Ebx; break;
|
||||
+ case 4: base = context->Esp; break;
|
||||
+ case 5: base = context->Ebp; break;
|
||||
+ case 6: base = context->Esi; break;
|
||||
+ case 7: base = context->Edi; break;
|
||||
+ }
|
||||
+ switch (mod)
|
||||
+ {
|
||||
+ case 0:
|
||||
+ if (rm == 5) /* special case: ds:(disp32) */
|
||||
+ {
|
||||
+ GET_VAL( &base, DWORD );
|
||||
+ }
|
||||
+ break;
|
||||
+
|
||||
+ case 1: /* 8-bit disp */
|
||||
+ GET_VAL( &off, BYTE );
|
||||
+ base += (signed char)off;
|
||||
+ break;
|
||||
+
|
||||
+ case 2: /* 32-bit disp */
|
||||
+ GET_VAL( &off, DWORD );
|
||||
+ base += (signed long)off;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ else /* short address */
|
||||
+ {
|
||||
+ switch(rm)
|
||||
+ {
|
||||
+ case 0: /* ds:(bx,si) */
|
||||
+ base = LOWORD(context->Ebx) + LOWORD(context->Esi);
|
||||
+ break;
|
||||
+ case 1: /* ds:(bx,di) */
|
||||
+ base = LOWORD(context->Ebx) + LOWORD(context->Edi);
|
||||
+ break;
|
||||
+ case 2: /* ss:(bp,si) */
|
||||
+ base = LOWORD(context->Ebp) + LOWORD(context->Esi);
|
||||
+ break;
|
||||
+ case 3: /* ss:(bp,di) */
|
||||
+ base = LOWORD(context->Ebp) + LOWORD(context->Edi);
|
||||
+ break;
|
||||
+ case 4: /* ds:(si) */
|
||||
+ base = LOWORD(context->Esi);
|
||||
+ break;
|
||||
+ case 5: /* ds:(di) */
|
||||
+ base = LOWORD(context->Edi);
|
||||
+ break;
|
||||
+ case 6: /* ss:(bp) */
|
||||
+ base = LOWORD(context->Ebp);
|
||||
+ break;
|
||||
+ case 7: /* ds:(bx) */
|
||||
+ base = LOWORD(context->Ebx);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ switch(mod)
|
||||
+ {
|
||||
+ case 0:
|
||||
+ if (rm == 6) /* special case: ds:(disp16) */
|
||||
+ {
|
||||
+ GET_VAL( &base, WORD );
|
||||
+ }
|
||||
+ break;
|
||||
+
|
||||
+ case 1: /* 8-bit disp */
|
||||
+ GET_VAL( &off, BYTE );
|
||||
+ base += (signed char)off;
|
||||
+ break;
|
||||
+
|
||||
+ case 2: /* 16-bit disp */
|
||||
+ GET_VAL( &off, WORD );
|
||||
+ base += (signed short)off;
|
||||
+ break;
|
||||
+ }
|
||||
+ base &= 0xffff;
|
||||
+ }
|
||||
+ /* FIXME: we assume that all segments have a base of 0 */
|
||||
+ return (BYTE *)(base + (index << ss));
|
||||
+#undef GET_VAL
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/***********************************************************************
|
||||
+ * check_invalid_instr
|
||||
+ *
|
||||
+ * Support for instructions not implemented by Exagear.
|
||||
+ */
|
||||
+static inline BOOL check_invalid_instr( CONTEXT *context )
|
||||
+{
|
||||
+ const BYTE *instr;
|
||||
+ unsigned int prefix_count = 0;
|
||||
+ int len, long_addr = 1;
|
||||
+
|
||||
+ if (!wine_ldt_is_system( context->SegCs )) return FALSE;
|
||||
+ instr = (BYTE *)context->Eip;
|
||||
+
|
||||
+ for (;;) switch (*instr)
|
||||
+ {
|
||||
+ /* instruction prefixes */
|
||||
+ case 0x2e: /* %cs: */
|
||||
+ case 0x36: /* %ss: */
|
||||
+ case 0x3e: /* %ds: */
|
||||
+ case 0x26: /* %es: */
|
||||
+ case 0x64: /* %fs: */
|
||||
+ case 0x65: /* %gs: */
|
||||
+ case 0x66: /* opcode size */
|
||||
+ case 0x67: /* addr size */
|
||||
+ case 0xf0: /* lock */
|
||||
+ case 0xf2: /* repne */
|
||||
+ case 0xf3: /* repe */
|
||||
+ if (++prefix_count >= 15) return FALSE;
|
||||
+ if (*instr == 0x67) long_addr = !long_addr; /* addr size */
|
||||
+ instr++;
|
||||
+ continue;
|
||||
+ case 0x0f: /* extended instruction */
|
||||
+ switch (instr[1])
|
||||
+ {
|
||||
+ case 0x01:
|
||||
+ if (((instr[2] >> 3) & 7) == 1) /* sidt m */
|
||||
+ {
|
||||
+ struct idtr ret;
|
||||
+ BYTE *addr;
|
||||
+
|
||||
+ if ((instr[2] >> 6) == 3) return FALSE; /* loading to register not allowed */
|
||||
+ addr = INSTR_GetOperandAddr( context, instr + 2, long_addr, 0, &len );
|
||||
+
|
||||
+ /* fake IDT structure */
|
||||
+ ret.limit = 0xfff;
|
||||
+ ret.base = (void *)0xff000000;
|
||||
+ memcpy(addr, &ret, sizeof(ret));
|
||||
+
|
||||
+ context->Eip += prefix_count + len + 2;
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
+ return FALSE;
|
||||
+ default:
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#endif /* EXAGEAR_COMPAT */
|
||||
+
|
||||
+
|
||||
/***********************************************************************
|
||||
* check_invalid_gs
|
||||
*
|
||||
@@ -1902,6 +2118,14 @@ static void WINAPI raise_segv_exception( EXCEPTION_RECORD *rec, CONTEXT *context
|
||||
|
||||
switch(rec->ExceptionCode)
|
||||
{
|
||||
+#ifdef EXAGEAR_COMPAT
|
||||
+ case EXCEPTION_ILLEGAL_INSTRUCTION:
|
||||
+ {
|
||||
+ if (check_invalid_instr( context ))
|
||||
+ goto done;
|
||||
+ }
|
||||
+ break;
|
||||
+#endif
|
||||
case EXCEPTION_ACCESS_VIOLATION:
|
||||
if (rec->NumberParameters == 2)
|
||||
{
|
||||
--
|
||||
2.1.3
|
||||
|
1050
patches/Makefile
1050
patches/Makefile
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
From 018b5f5d6211aa706e5aef762acb98d39240d9f1 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Sun, 20 Jul 2014 22:29:02 +0200
|
||||
Subject: wined3d: Silence repeated resource_check_usage FIXME.
|
||||
Subject: wined3d: Silence repeated resource_check_usage FIXME. (try 2)
|
||||
|
||||
---
|
||||
dlls/wined3d/resource.c | 5 ++++-
|
||||
|
@@ -1,54 +0,0 @@
|
||||
From 4acb49f0e0be827be0252c4b3f896c11cf4a9d94 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Thu, 18 Sep 2014 00:38:15 +0200
|
||||
Subject: usp10: Silence repeated GSUB_apply_ChainContext[Subst|Pos] FIXMEs.
|
||||
|
||||
---
|
||||
dlls/usp10/opentype.c | 16 ++++++++++++----
|
||||
1 file changed, 12 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/usp10/opentype.c b/dlls/usp10/opentype.c
|
||||
index 166d823..e2142a5 100644
|
||||
--- a/dlls/usp10/opentype.c
|
||||
+++ b/dlls/usp10/opentype.c
|
||||
@@ -938,12 +938,16 @@ static INT GSUB_apply_ChainContextSubst(const OT_LookupList* lookup, const OT_Lo
|
||||
ccsf1 = (const GSUB_ChainContextSubstFormat1*)((const BYTE*)look+offset);
|
||||
if (GET_BE_WORD(ccsf1->SubstFormat) == 1)
|
||||
{
|
||||
- FIXME(" TODO: subtype 1 (Simple context glyph substitution)\n");
|
||||
+ static int once;
|
||||
+ if (!once++)
|
||||
+ FIXME(" TODO: subtype 1 (Simple context glyph substitution)\n");
|
||||
continue;
|
||||
}
|
||||
else if (GET_BE_WORD(ccsf1->SubstFormat) == 2)
|
||||
{
|
||||
- FIXME(" TODO: subtype 2 (Class-based Chaining Context Glyph Substitution)\n");
|
||||
+ static int once;
|
||||
+ if (!once++)
|
||||
+ FIXME(" TODO: subtype 2 (Class-based Chaining Context Glyph Substitution)\n");
|
||||
continue;
|
||||
}
|
||||
else if (GET_BE_WORD(ccsf1->SubstFormat) == 3)
|
||||
@@ -1649,12 +1653,16 @@ static INT GPOS_apply_ChainContextPos(ScriptCache *psc, LPOUTLINETEXTMETRICW lpo
|
||||
|
||||
if (GET_BE_WORD(ccpf3->PosFormat) == 1)
|
||||
{
|
||||
- FIXME(" TODO: subtype 1 (Simple Chaining Context Glyph Positioning)\n");
|
||||
+ static int once;
|
||||
+ if (!once++)
|
||||
+ FIXME(" TODO: subtype 1 (Simple Chaining Context Glyph Positioning)\n");
|
||||
continue;
|
||||
}
|
||||
else if (GET_BE_WORD(ccpf3->PosFormat) == 2)
|
||||
{
|
||||
- FIXME(" TODO: subtype 2 (Class-based Chaining Context Glyph Positioning)\n");
|
||||
+ static int once;
|
||||
+ if (!once++)
|
||||
+ FIXME(" TODO: subtype 2 (Class-based Chaining Context Glyph Positioning)\n");
|
||||
continue;
|
||||
}
|
||||
else if (GET_BE_WORD(ccpf3->PosFormat) == 3)
|
||||
--
|
||||
2.1.0
|
||||
|
@@ -1,125 +0,0 @@
|
||||
From 068be01861e22ddd9360fbee4135937782ac77c8 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 6 Sep 2014 04:59:20 +0200
|
||||
Subject: Appease the Archlinux version of gcc (4.9.1) when -Werror is enabled.
|
||||
|
||||
---
|
||||
dlls/msvcp90/ios.c | 4 ++--
|
||||
dlls/msvcp90/locale.c | 6 +++---
|
||||
dlls/msvcp90/string.c | 12 ++++++------
|
||||
3 files changed, 11 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/dlls/msvcp90/ios.c b/dlls/msvcp90/ios.c
|
||||
index fbba957..e099f27 100644
|
||||
--- a/dlls/msvcp90/ios.c
|
||||
+++ b/dlls/msvcp90/ios.c
|
||||
@@ -1215,7 +1215,7 @@ streamsize __thiscall basic_streambuf_char__Xsgetn_s(basic_streambuf_char *this,
|
||||
chunk = count-copied;
|
||||
|
||||
if(chunk > 0) {
|
||||
- memcpy_s(ptr+copied, size, *this->prpos, chunk);
|
||||
+ (void)memcpy_s(ptr+copied, size, *this->prpos, chunk);
|
||||
*this->prpos += chunk;
|
||||
*this->prsize -= chunk;
|
||||
copied += chunk;
|
||||
@@ -2083,7 +2083,7 @@ streamsize __thiscall basic_streambuf_wchar__Xsgetn_s(basic_streambuf_wchar *thi
|
||||
chunk = count-copied;
|
||||
|
||||
if(chunk > 0) {
|
||||
- memcpy_s(ptr+copied, size, *this->prpos, chunk*sizeof(wchar_t));
|
||||
+ (void)memcpy_s(ptr+copied, size, *this->prpos, chunk*sizeof(wchar_t));
|
||||
*this->prpos += chunk;
|
||||
*this->prsize -= chunk;
|
||||
copied += chunk;
|
||||
diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c
|
||||
index b15f1b8..015511d 100644
|
||||
--- a/dlls/msvcp90/locale.c
|
||||
+++ b/dlls/msvcp90/locale.c
|
||||
@@ -1595,7 +1595,7 @@ const char* __thiscall ctype_char__Do_narrow_s(const ctype_char *this, const cha
|
||||
const char *last, char unused, char *dest, MSVCP_size_t size)
|
||||
{
|
||||
TRACE("(%p %p %p %p %lu)\n", this, first, last, dest, size);
|
||||
- memcpy_s(dest, size, first, last-first);
|
||||
+ (void)memcpy_s(dest, size, first, last-first);
|
||||
return last;
|
||||
}
|
||||
|
||||
@@ -1674,7 +1674,7 @@ const char* __thiscall ctype_char__Do_widen_s(const ctype_char *this,
|
||||
const char *first, const char *last, char *dest, MSVCP_size_t size)
|
||||
{
|
||||
TRACE("(%p %p %p %p %lu)\n", this, first, last, dest, size);
|
||||
- memcpy_s(dest, size, first, last-first);
|
||||
+ (void)memcpy_s(dest, size, first, last-first);
|
||||
return last;
|
||||
}
|
||||
|
||||
@@ -3674,7 +3674,7 @@ int __thiscall codecvt_wchar_do_out(const codecvt_wchar *this, int *state,
|
||||
}
|
||||
|
||||
(*from_next)++;
|
||||
- memcpy_s(*to_next, to_end-*to_next, buf, size);
|
||||
+ (void)memcpy_s(*to_next, to_end-*to_next, buf, size);
|
||||
(*to_next) += size;
|
||||
}
|
||||
}
|
||||
diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c
|
||||
index ce05613..c8dfce9 100644
|
||||
--- a/dlls/msvcp90/string.c
|
||||
+++ b/dlls/msvcp90/string.c
|
||||
@@ -82,7 +82,7 @@ MSVCP_size_t CDECL MSVCP_char_traits_char_length(const char *str)
|
||||
char* CDECL MSVCP_char_traits_char__Copy_s(char *dest,
|
||||
MSVCP_size_t size, const char *src, MSVCP_size_t count)
|
||||
{
|
||||
- memcpy_s(dest, size, src, count);
|
||||
+ (void)memcpy_s(dest, size, src, count);
|
||||
return dest;
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ const char * CDECL MSVCP_char_traits_char_find(
|
||||
char* CDECL MSVCP_char_traits_char__Move_s(char *dest,
|
||||
MSVCP_size_t size, const char *src, MSVCP_size_t count)
|
||||
{
|
||||
- memmove_s(dest, size, src, count);
|
||||
+ (void)memmove_s(dest, size, src, count);
|
||||
return dest;
|
||||
}
|
||||
|
||||
@@ -206,7 +206,7 @@ MSVCP_size_t CDECL MSVCP_char_traits_wchar_length(const wchar_t *str)
|
||||
wchar_t* CDECL MSVCP_char_traits_wchar__Copy_s(wchar_t *dest,
|
||||
MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count)
|
||||
{
|
||||
- memcpy_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t));
|
||||
+ (void)memcpy_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t));
|
||||
return dest;
|
||||
}
|
||||
|
||||
@@ -237,7 +237,7 @@ const wchar_t* CDECL MSVCP_char_traits_wchar_find(
|
||||
wchar_t* CDECL MSVCP_char_traits_wchar__Move_s(wchar_t *dest,
|
||||
MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count)
|
||||
{
|
||||
- memmove_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t));
|
||||
+ (void)memmove_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t));
|
||||
return dest;
|
||||
}
|
||||
|
||||
@@ -353,7 +353,7 @@ MSVCP_size_t CDECL MSVCP_char_traits_short_length(const unsigned short *str)
|
||||
unsigned short * CDECL MSVCP_char_traits_short__Copy_s(unsigned short *dest,
|
||||
MSVCP_size_t size, const unsigned short *src, MSVCP_size_t count)
|
||||
{
|
||||
- memcpy_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short));
|
||||
+ (void)memcpy_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short));
|
||||
return dest;
|
||||
}
|
||||
|
||||
@@ -384,7 +384,7 @@ const unsigned short* CDECL MSVCP_char_traits_short_find(
|
||||
unsigned short* CDECL MSVCP_char_traits_short__Move_s(unsigned short *dest,
|
||||
MSVCP_size_t size, const unsigned short *src, MSVCP_size_t count)
|
||||
{
|
||||
- memmove_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short));
|
||||
+ (void)memmove_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short));
|
||||
return dest;
|
||||
}
|
||||
|
||||
--
|
||||
2.1.0
|
||||
|
@@ -1,49 +0,0 @@
|
||||
From 53611893c65e0470cf8d81b7900a02f9640c6dcc Mon Sep 17 00:00:00 2001
|
||||
From: Amine Khaldi <amine.khaldi@reactos.org>
|
||||
Date: Sat, 18 Oct 2014 19:53:56 +0100
|
||||
Subject: [PATCH] strmbase: Remove unused TransformFilter_Vtbl (Clang).
|
||||
---
|
||||
dlls/strmbase/transform.c | 20 --------------------
|
||||
1 file changed, 20 deletions(-)
|
||||
|
||||
diff --git a/dlls/strmbase/transform.c b/dlls/strmbase/transform.c
|
||||
index 0fc7515..4d872be 100644
|
||||
--- a/dlls/strmbase/transform.c
|
||||
+++ b/dlls/strmbase/transform.c
|
||||
@@ -42,7 +42,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(strmbase);
|
||||
static const WCHAR wcsInputPinName[] = {'i','n','p','u','t',' ','p','i','n',0};
|
||||
static const WCHAR wcsOutputPinName[] = {'o','u','t','p','u','t',' ','p','i','n',0};
|
||||
|
||||
-static const IBaseFilterVtbl TransformFilter_Vtbl;
|
||||
static const IPinVtbl TransformFilter_InputPin_Vtbl;
|
||||
static const IPinVtbl TransformFilter_OutputPin_Vtbl;
|
||||
static const IQualityControlVtbl TransformFilter_QualityControl_Vtbl;
|
||||
@@ -439,25 +438,6 @@ HRESULT WINAPI TransformFilterImpl_FindPin(IBaseFilter * iface, LPCWSTR Id, IPin
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
-static const IBaseFilterVtbl TransformFilter_Vtbl =
|
||||
-{
|
||||
- TransformFilterImpl_QueryInterface,
|
||||
- BaseFilterImpl_AddRef,
|
||||
- TransformFilterImpl_Release,
|
||||
- BaseFilterImpl_GetClassID,
|
||||
- TransformFilterImpl_Stop,
|
||||
- TransformFilterImpl_Pause,
|
||||
- TransformFilterImpl_Run,
|
||||
- BaseFilterImpl_GetState,
|
||||
- BaseFilterImpl_SetSyncSource,
|
||||
- BaseFilterImpl_GetSyncSource,
|
||||
- BaseFilterImpl_EnumPins,
|
||||
- TransformFilterImpl_FindPin,
|
||||
- BaseFilterImpl_QueryFilterInfo,
|
||||
- BaseFilterImpl_JoinFilterGraph,
|
||||
- BaseFilterImpl_QueryVendorInfo
|
||||
-};
|
||||
-
|
||||
static HRESULT WINAPI TransformFilter_InputPin_EndOfStream(IPin * iface)
|
||||
{
|
||||
BaseInputPin* This = impl_BaseInputPin_from_IPin(iface);
|
||||
--
|
||||
2.1.2
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user