From 9fb3f408243f1348e247dbb7e0178bcc8ab0234e Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Wed, 7 Jan 2015 09:49:06 +0100 Subject: [PATCH] Huge rewrite of patchupdate.py, use script based method to apply patches, deprecation of Makefile based method. --- .gitignore | 2 - debian/changelog | 2 +- debian/tools/gitapply.sh | 4 +- debian/tools/patchinstall.sh.in | 272 ++ debian/tools/patchlist.sh | 74 - debian/tools/patchupdate.py | 378 +- patches/Makefile | 2760 +------------- ...licenses-for-fonts-as-separate-files.patch | 2 +- patches/patchinstall.sh | 3389 +++++++++++++++++ .../wined3d-CSMT_Main/9999-IfDefined.patch | 2 +- 10 files changed, 3815 insertions(+), 3070 deletions(-) create mode 100644 debian/tools/patchinstall.sh.in delete mode 100755 debian/tools/patchlist.sh create mode 100755 patches/patchinstall.sh diff --git a/.gitignore b/.gitignore index 2292b59e..10e2b60b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,2 @@ debian/tools/wine -.patchupdate.cache -*.ok *.pyc diff --git a/debian/changelog b/debian/changelog index 18101fc8..4550ebae 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,5 @@ wine-staging (1.7.34) UNRELEASED; urgency=low - * Temporarily disable dsound-FastMixer patch until rebased. + * Huge rewrite of patchupdate.py, deprecation of Makefile based way to apply patches. * Rename debian package from 'wine-compholio' to 'wine-staging' and provide compatibility package. * Avoid duplicate wined3d specfile by adding PARENTSPEC Makefile argument. * Fix issue in DOS Attributes patch which broke ./configure on systems with alternative shells. diff --git a/debian/tools/gitapply.sh b/debian/tools/gitapply.sh index 29b01a24..ad7d1999 100755 --- a/debian/tools/gitapply.sh +++ b/debian/tools/gitapply.sh @@ -2,7 +2,7 @@ # # Wrapper to apply binary patches without git. # -# Copyright (C) 2014 Sebastian Lackner +# Copyright (C) 2014-2015 Sebastian Lackner # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -75,7 +75,7 @@ filesize() # Parse environment variables -while [[ $# > 0 ]]; do +while [ "$#" -gt 0 ]; do cmd="$1"; shift case "$cmd" in diff --git a/debian/tools/patchinstall.sh.in b/debian/tools/patchinstall.sh.in new file mode 100644 index 00000000..b7f09498 --- /dev/null +++ b/debian/tools/patchinstall.sh.in @@ -0,0 +1,272 @@ +#!/usr/bin/env bash +# +# Script to automatically install all Wine Staging patches +# +# Copyright (C) 2015 Sebastian Lackner +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +# + +# Show usage information +usage() +{{ + echo "" + echo "Usage: ./patchinstall.sh [DESTDIR=path] [--all] [-W patchset] [patchset ...]" + echo "" + echo "Autogenerated script to apply all Wine Staging patches on your Wine" + echo "source tree. This script replaces and enhances the old method of" + echo "using a Makefile." + 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 "" + echo "Backends:" + echo " --backend=patch Use regular 'patch' utility to apply patches (default)" + echo " --backend=git Use 'git am' to apply patches" + echo "" +}} + +# Critical error, abort +abort() +{{ + echo "ERROR: $1" >&2 + exit 1 +}} + +{patch_helpers} + +# Default settings +patch_enable_all 0 +enable_autoupdate=1 +patchlist="/dev/null" +backend="patch" +enable=1 + +if [ "$#" -eq 0 ]; then + abort "No commandline arguments given, don't know what to do." +fi + +while [ "$#" -gt 0 ]; do + if patch_enable "$1" "$enable"; then + shift + enable=1 + continue + fi + + if [ "$enable" -ne 1 ]; then + abort "Wrong use of -W commandline argument, expected patchname." + fi + + case "$1" in + DESTDIR=*) + DESTDIR="${{1#*=}}" + shift + ;; + + --all) + patch_enable_all 1 + shift + ;; + + --backend=*) + backend="${{1#*=}}" + shift + ;; + + --help) + usage + exit 0 + ;; + + --no-autoupdate) + enable_autoupdate=0 + shift + ;; + + -W) + enable=2 + shift + ;; + + *) + abort "Unknown commandline argument $1" + exit 1 + esac +done + +if [ "$enable" -ne 1 ]; then + abort "Missing argument for -W, expected patchname." +fi + +# Apply the patches using gitapply.sh, a small wrapper around 'patch' +if [ "$backend" == "patch" ]; then + + patch_apply () + {{ + echo "Applying $1" + if ! ../debian/tools/gitapply.sh -d "$DESTDIR" < "$1"; then + abort "Failed to apply patch, aborting!" + fi + }} + +# GIT backend - apply patches using 'git am' +elif [ "$backend" == "git" ]; then + + patch_apply () + {{ + echo "Applying $1" + if ! cat "$1" | (cd "$DESTDIR" && git am); then + abort "Failed to apply patch, aborting!" + fi + }} + +# Stacked GIT backend - import the patches (mainly for developers) +elif [ "$backend" == "stg" ]; then + + enable_autoupdate=0 + abort "Not implemented." + +else + abort "Selected backend $backend not supported." +fi + + +{patch_resolver} + + +if [ -z "$DESTDIR" -a -f ./tools/make_requests ]; then + DESTDIR="$(pwd)" + +elif [ ! -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 [ "$enable_autoupdate" -eq 1 ]; then + patchlist=$(mktemp) + if [ ! -f "$patchlist" ]; then + echo "ERROR: Unable to create temporary file for patchlist." >&2 + exit 1 + fi +fi + + +{patch_apply} + + +if [ "$enable_autoupdate" -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 [ ! -z "$patch_data" ]; then + patch_lines=$((${{patch_lines}}+23)) + cat > "$patchlist" < +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 +--- a/libs/wine/config.c ++++ b/libs/wine/config.c +@@ -478,6 +478,${{patch_lines}} @@ const char *wine_get_version(void) + return PACKAGE_VERSION; + }} + ++static const struct ++{{ ++ const char *author; ++ const char *subject; ++ int revision; ++}} ++wine_patch_data[] = ++{{ +${{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) + {{ +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; +EOF + patch_apply "$patchlist" + fi + rm "$patchlist" + + # Other autogenerated changes + pushd "$DESTDIR" > /dev/null + if ! autoreconf -f; then + abort "'autoreconf -f' failed." + fi + if ! ./tools/make_requests; then + abort "'./tools/make_requests' failed." + fi + popd +fi + +# Success +exit 0 diff --git a/debian/tools/patchlist.sh b/debian/tools/patchlist.sh deleted file mode 100755 index def8ae35..00000000 --- a/debian/tools/patchlist.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/sh -PATCH_DATA=$(cat); -PATCH_LINES=$(echo "${PATCH_DATA}" | wc -l); -PATCH_LINES=$((${PATCH_LINES}+23)); - -cat < -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 ---- a/libs/wine/config.c -+++ b/libs/wine/config.c -@@ -478,6 +478,${PATCH_LINES} @@ const char *wine_get_version(void) - return PACKAGE_VERSION; - } - -+static const struct -+{ -+ const char *author; -+ const char *subject; -+ int revision; -+} -+wine_patch_data[] = -+{ -${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) - { -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; -EOF diff --git a/debian/tools/patchupdate.py b/debian/tools/patchupdate.py index 9d7dbb76..32336c2e 100755 --- a/debian/tools/patchupdate.py +++ b/debian/tools/patchupdate.py @@ -1,8 +1,8 @@ #!/usr/bin/python2 # -# Automatic patch dependency checker and Makefile/README.md generator. +# Automatic patch dependency checker and apply script/README.md generator. # -# Copyright (C) 2014 Sebastian Lackner +# Copyright (C) 2014-2015 Sebastian Lackner # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -43,17 +43,15 @@ latest_wine_commit = None cached_patch_result = {} class config(object): - path_depcache = ".patchupdate.cache" - path_patches = "patches" path_changelog = "debian/changelog" path_wine = "debian/tools/wine" - path_template_Makefile = "debian/tools/Makefile.in" - path_Makefile = "patches/Makefile" + path_template_script = "debian/tools/patchinstall.sh.in" + path_script = "patches/patchinstall.sh" - path_README_md = "README.md" path_template_README_md = "debian/tools/README.md.in" + path_README_md = "README.md" path_IfDefined = "9999-IfDefined.patch" @@ -64,6 +62,7 @@ class PatchUpdaterError(RuntimeError): class PatchSet(object): def __init__(self, name, directory): self.name = name + self.variable = None self.directory = directory self.fixes = [] self.changes = [] @@ -75,7 +74,6 @@ class PatchSet(object): self.modified_files = set() self.depends = set() - self.verify_depends = set() self.verify_time = None def _pairs(a): @@ -98,14 +96,6 @@ def _split_seq(iterable, size): yield items items = list(itertools.islice(it, size)) -def _merge_seq(iterable, callback=None): - """Merge lists/iterators into a new one. Call callback after each chunk""" - for i, items in enumerate(iterable): - if callback is not None: - callback(i) - for obj in items: - yield obj - def _escape(s): """Escape string inside of '...' quotes.""" return s.replace("\\", "\\\\\\\\").replace("\"", "\\\"").replace("'", "'\\''") @@ -322,13 +312,6 @@ def causal_time_relation_any(all_patches, indices): return False return True -def causal_time_permutations(all_patches, indices): - """Iterate over all possible permutations of patches affecting - a specific file, which are compatible with dependencies.""" - for permutation in itertools.permutations(indices): - if causal_time_relation(all_patches, permutation): - yield permutation - def contains_binary_patch(all_patches, indices, filename): """Checks if any patch with given indices affecting filename is a binary patch.""" for i in indices: @@ -373,133 +356,20 @@ def select_patches(all_patches, indices, filename): selected_patches[i] = extract_patch(all_patches[i], filename) return selected_patches -def verify_patch_order(all_patches, indices, filename, pool): - """Checks if the dependencies are defined correctly by applying - the patches on a (temporary) copy from the git tree.""" - - # 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]))) - return - - original_content = get_wine_file(filename) - original_content_hash = _sha256(original_content) - selected_patches = select_patches(all_patches, indices, filename) - try: - - def _test_apply(permutations): - """Tests if specific permutations of patches apply on the wine source tree.""" - patch_stack_indices = [] - patch_stack_patches = [] - try: - - for permutation in permutations: - - # Calculate hash - m = hashlib.sha256() - m.update(original_content_hash) - for i in permutation: - m.update(selected_patches[i][0]) - input_hash = m.digest() - - # Fast path -> we know that it applies properly - try: - yield cached_patch_result[input_hash] - continue - - except KeyError: - pass - - # Remove unneeded patches from patch stack - while list(permutation[:len(patch_stack_indices)]) != patch_stack_indices: - patch_stack_indices.pop() - patch_stack_patches.pop().close() - - # Apply the patches (without fuzz) - try: - while len(patch_stack_indices) < len(permutation): - i = permutation[len(patch_stack_indices)] - original = patch_stack_patches[-1] if len(patch_stack_indices) else original_content - patch_stack_patches.append(patchutils.apply_patch(original, selected_patches[i][1], fuzz=0)) - patch_stack_indices.append(i) - output_hash = _sha256(patch_stack_patches[-1]) - - except patchutils.PatchApplyError: - output_hash = None - - cached_patch_result[input_hash] = output_hash - yield output_hash - - finally: - # Ensure temporary files are cleaned up properly - while len(patch_stack_patches): - patch_stack_patches.pop().close() - - # Show a progress bar while applying the patches - this task might take some time - chunk_size = 20 - total_tasks = (math.factorial(len(indices)) + chunk_size - 1) / chunk_size - with progressbar.ProgressBar(desc=filename, total=total_tasks) as progress: - - failed_to_apply = False - last_result_hash = None - - # Check for possible ways to apply the patch - it = _split_seq(causal_time_permutations(all_patches, indices), chunk_size) - for output_hash in _merge_seq(pool.imap_unordered(lambda seq: list(_test_apply(seq)), it), \ - callback=progress.update): - - # Failed to apply patch, continue checking the rest. - if output_hash is None: - failed_to_apply = True - if last_result_hash is None: - continue - break - - # No known hash yet, remember the result. If we failed applying before, we can stop now. - elif last_result_hash is None: - last_result_hash = output_hash - if failed_to_apply: break - - # Applied successful, but result has a different hash - also treat as failure. - elif last_result_hash != output_hash: - failed_to_apply = True - break - - if failed_to_apply: - progress.finish("") - elif verbose: - progress.finish(binascii.hexlify(last_result_hash)) - - finally: - original_content.close() - for _, (_, p) in selected_patches.iteritems(): - p.close() - - # If something failed, then show the appropriate error message. - if failed_to_apply and last_result_hash is None: - raise PatchUpdaterError("Changes to file %s don't apply on git source tree: %s" % - (filename, ", ".join([all_patches[i].name for i in indices]))) - - elif failed_to_apply: - raise PatchUpdaterError("Depending on the order some changes to file %s don't apply / lead to different results: %s" % - (filename, ", ".join([all_patches[i].name for i in indices]))) - - else: - assert len(last_result_hash) == 32 - -def resolve_dependencies(all_patches, index): +def resolve_dependencies(all_patches, index = None, depends = None): """Returns a sorted list with all dependencies for a given patch.""" def _resolve(depends): for i in depends: + # Check for disabled patch + if all_patches[i].disabled: + raise PatchUpdaterError("Encountered dependency on disabled patchset %s" % all_patches[i].name) # Dependencies already resolved if all_patches[i].verify_resolved > 0: continue # Detect circular dependency if all_patches[i].verify_resolved < 0: - raise PatchUpdaterError("Circular dependency while trying to resolve dependencies of %s" % all_patches[index].name) + raise PatchUpdaterError("Circular dependency while trying to resolve %s" % all_patches[i].name) # Recusively resolve dependencies all_patches[i].verify_resolved = -1 @@ -511,7 +381,9 @@ def resolve_dependencies(all_patches, index): patch.verify_resolved = 0 resolved = [] - _resolve(all_patches[index].depends) + if depends is None: + depends = all_patches[index].depends + _resolve(depends) return resolved def generate_ifdefined(all_patches): @@ -564,111 +436,138 @@ def generate_ifdefined(all_patches): assert p.modified_file in patch.modified_files patch.patches.append(p) -def verify_dependencies(all_patches): - """Resolve dependencies, and afterwards run verify_patch_order() to check if everything applies properly.""" - - def _load_patch_cache(): - """Load dictionary for cached patch dependency tests.""" - global cached_patch_result - cached_patch_result = _load_dict(config.path_depcache) - - def _save_patch_cache(): - """Save dictionary for cached patch dependency tests.""" - _save_dict(config.path_depcache, cached_patch_result.copy()) - - enabled_patches = dict([(i, patch) for i, patch in all_patches.iteritems() if not patch.disabled]) - max_patches = max(enabled_patches.keys()) + 1 - - for _, 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(enabled_patches) - while len(patches): - - to_delete = [] - for i, patch in patches.iteritems(): - if len(patch.verify_depends) == 0: - patch.verify_time[i] += 1 - to_delete.append(i) - - if len(to_delete) == 0: - 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: - for i, patch in patches.iteritems(): - if i != j and j in patch.verify_depends: - patch.verify_time = causal_time_combine(patch.verify_time, patches[j].verify_time) - patch.verify_depends.remove(j) - del patches[j] +def generate_script(all_patches): + """Resolve dependencies, and afterwards check if everything applies properly.""" + depends = sorted([i for i, patch in all_patches.iteritems() if not patch.disabled]) + resolved = resolve_dependencies(all_patches, depends=depends) + max_patches = max(resolved) + 1 + # Generate timestamps based on dependencies, still required for binary patches # Find out which files are modified by multiple patches modified_files = {} - for i, patch in enabled_patches.iteritems(): + for i, patch in [(i, all_patches[i]) for i in resolved]: + patch.verify_time = [0]*max_patches + patch.verify_time[i] += 1 + for j in patch.depends: + patch.verify_time = causal_time_combine(patch.verify_time, all_patches[j].verify_time) + for f in patch.modified_files: if f not in modified_files: modified_files[f] = [] modified_files[f].append(i) - # Check if patches always apply correctly - _load_patch_cache() - pool = multiprocessing.pool.ThreadPool(processes=8) - try: - for f, indices in modified_files.iteritems(): - verify_patch_order(enabled_patches, indices, f, pool) - finally: - _save_patch_cache() - pool.close() + # Check dependencies + for filename, indices in modified_files.iteritems(): -def generate_makefile(all_patches): - """Generate Makefile for a specific set of patches.""" + # 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 - with open(config.path_template_Makefile) as template_fp: + 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) + + to_apply = [i for u, i in zip(bitstring, indices) if u] + applied = set() + for i, patch in [(i, all_patches[i]) for i in to_apply]: + if not applied.issuperset(patch.depends): + break + applied.add(i) + else: + try: + original = original_content + for i, patch in [(i, all_patches[i]) for i in to_apply]: + original = patchutils.apply_patch(original, selected_patches[i][1], fuzz=0) + except patchutils.PatchApplyError: + progress.finish("") + raise PatchUpdaterError("Changes to file %s don't apply: %s" % + (filename, ", ".join([all_patches[i].name for i in indices]))) + + # Generate code for helper functions + lines = [] + lines.append("# Enable or disable all patchsets\n") + lines.append("patch_enable_all ()\n") + lines.append("{\n") + for i, patch in [(i, all_patches[i]) for i in resolved]: + patch.variable = "enable_%s" % patch.name.replace("-","_") + lines.append("\t%s=\"$1\"\n" % patch.variable) + lines.append("}\n") + lines.append("\n") + lines.append("# Enable or disable a specific patchset\n") + lines.append("patch_enable ()\n") + lines.append("{\n") + lines.append("\tcase \"$1\" in\n") + for i, patch in [(i, all_patches[i]) for i in resolved]: + lines.append("\t\t%s)\n" % patch.name) + lines.append("\t\t\t%s=\"$2\"\n" % patch.variable) + lines.append("\t\t\t;;\n") + lines.append("\t\t*)\n") + lines.append("\t\t\treturn 1\n") + lines.append("\t\t\t;;\n") + lines.append("\tesac\n") + lines.append("\treturn 0\n") + lines.append("}\n") + lines_helpers = lines + + # Generate code for dependency resolver + lines = [] + for i, patch in [(i, all_patches[i]) for i in reversed(resolved)]: + if len(patch.depends): + lines.append("if [ \"$%s\" -eq 1 ]; then\n" % patch.variable) + for j in patch.depends: + lines.append("\t[ \"$%s\" -gt 1 ] && abort \"ERROR: Patchset %s disabled, but %s depends on that.\" >&2\n" % + (all_patches[j].variable, all_patches[j].name, patch.name)) + for j in patch.depends: + lines.append("\t%s=1\n" % all_patches[j].variable) + lines.append("fi\n\n") + lines_resolver = lines + + # Generate code for applying all patchsets + lines = [] + for i, patch in [(i, all_patches[i]) for i in resolved]: + lines.append("# Patchset %s\n" % patch.name) + lines.append("# |\n") + + # List all bugs fixed by this patchset + if any([bugid is not None for bugid, bugname in patch.fixes]): + lines.append("# | This patchset fixes the following Wine bugs:\n") + for bugid, bugname in patch.fixes: + if bugid is not None: + lines.append("# | *\t%s\n" % "\n# | \t".join(textwrap.wrap("[#%d] %s" % (bugid, bugname), 120))) + lines.append("# |\n") + + # List all modified files + lines.append("# | Modified files:\n") + lines.append("# | *\t%s\n" % "\n# | \t".join(textwrap.wrap(", ".join(sorted(patch.modified_files)), 120))) + lines.append("# |\n") + lines.append("if [ \"$%s\" -eq 1 ]; then\n" % patch.variable) + for f in patch.files: + lines.append("\tpatch_apply %s\n" % os.path.join(patch.name, f)) + if len(patch.patches): + lines.append("\t(\n") + for p in _unique(patch.patches, key=lambda p: (p.patch_author, p.patch_subject, p.patch_revision)): + lines.append("\t\techo '+ { \"%s\", \"%s\", %d },';\n" % \ + (_escape(p.patch_author), _escape(p.patch_subject), p.patch_revision)) + lines.append("\t) >> \"$patchlist\"\n") + lines.append("fi\n\n") + lines_apply = lines + + with open(config.path_template_script) as template_fp: 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 _, patch in all_patches.iteritems() if not patch.disabled]))) - - for _, patch in all_patches.iteritems(): - fp.write("# Patchset %s\n" % patch.name) - fp.write("# |\n") - - # List all bugs fixed by this patchset - if any([bugid is not None for bugid, bugname in patch.fixes]): - fp.write("# | This patchset fixes the following Wine bugs:\n") - for bugid, bugname in patch.fixes: - if bugid is not None: - fp.write("# | *\t%s\n" % "\n# | \t".join(textwrap.wrap("[#%d] %s" % (bugid, bugname), 120))) - fp.write("# |\n") - - # List all modified files - fp.write("# | Modified files:\n") - fp.write("# | *\t%s\n" % "\n# | \t".join(textwrap.wrap(", ".join(sorted(patch.modified_files)), 120))) - fp.write("# |\n") - - # Generate dependencies and code to apply patches - fp.write(".INTERMEDIATE: %s.ok\n" % patch.name) - depends = " ".join([""] + sorted(["%s.ok" % all_patches[d].name for d in patch.depends])) if len(patch.depends) else "" - fp.write("%s.ok:%s\n" % (patch.name, depends)) - for f in patch.files: - fp.write("\t$(call APPLY_FILE,%s)\n" % os.path.join(patch.name, f)) - - # Create *.ok file (used to generate patchlist) - if len(patch.patches): - fp.write("\t@( \\\n") - 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) - fp.write("\n"); + with open(config.path_script, "w") as fp: + fp.write(template.format(patch_helpers="".join(lines_helpers).rstrip("\n"), + patch_resolver="".join(lines_resolver).rstrip("\n"), + patch_apply="".join(lines_apply).rstrip("\n"))) # Add changes to git - subprocess.call(["git", "add", config.path_Makefile]) + subprocess.call(["git", "add", config.path_script]) def generate_markdown(all_patches, stable_patches, stable_compholio_version): """Generate README.md including information about specific patches and bugfixes.""" @@ -731,9 +630,8 @@ def generate_markdown(all_patches, stable_patches, stable_compholio_version): subprocess.call(["git", "add", config.path_README_md]) if __name__ == "__main__": - verbose = "-v" in sys.argv[1:] - # Hack to avoid KeyboardInterrupts on worker threads + # Hack to avoid KeyboardInterrupts on different threads def _sig_int(signum=None, frame=None): signal.signal(signal.SIGINT, signal.SIG_IGN) raise RuntimeError("CTRL+C pressed") @@ -749,14 +647,8 @@ if __name__ == "__main__": all_patches = read_patchset() stable_patches = read_patchset(revision="v%s" % stable_compholio_version) - # Update autogenerated ifdefined patches generate_ifdefined(all_patches) - - # Check dependencies - verify_dependencies(all_patches) - - # Update Makefile and README.md - generate_makefile(all_patches) + generate_script(all_patches) generate_markdown(all_patches, stable_patches, stable_compholio_version) except PatchUpdaterError as e: diff --git a/patches/Makefile b/patches/Makefile index a290fb00..6a8b80df 100644 --- a/patches/Makefile +++ b/patches/Makefile @@ -1,2753 +1,21 @@ # -# This file is automatically generated, DO NOT EDIT! +# This file is deprecated and will be deleted in the future. +# Please use patchinstall.sh instead, to apply the Wine Staging patches. # -.NOTPARALLEL: - -CURDIR ?= ${.CURDIR} -PATCH := $(CURDIR)/../debian/tools/gitapply.sh -APPLY = (cd "$(DESTDIR)" && $(PATCH)) -APPLY_FILE = @echo "Applying $(1)"; $(APPLY) < "$(CURDIR)/$(1)" - -# -# This Makefile understands the following targets: -# -# install (default): apply patches to directory provided by DESTDIR -# install-git: as above, but use 'git am' to apply the patches -# series: create a 'series' file containing the patch order -# clean: delete autogenerated and temporary files -# - -PATCHLIST := \ - Exagear.ok \ - Miscellaneous.ok \ - Pipelight.ok \ - Staging.ok \ - atl-IOCS_Property.ok \ - comctl32-LoadIconMetric.ok \ - configure-Absolute_RPATH.ok \ - d3d9-Surface_Refcount.ok \ - d3dx9_36-ConvertToIndexedBlended.ok \ - d3dx9_36-D3DXStubs.ok \ - d3dx9_36-DXTn.ok \ - d3dx9_36-DrawText.ok \ - d3dx9_36-Filter_Warnings.ok \ - d3dx9_36-FindNextValidTechnique.ok \ - d3dx9_36-GetShaderSemantics.ok \ - d3dx9_36-Optimize_Inplace.ok \ - d3dx9_36-Texture_Align.ok \ - d3dx9_36-UpdateSkinnedMesh.ok \ - dbghelp-Debug_Symbols.ok \ - dbghelp-KdHelp.ok \ - ddraw-d3d_execute_buffer.ok \ - dinput-Events.ok \ - dsound-Fast_Mixer.ok \ - dxgi-GetDesc.ok \ - fonts-Missing_Fonts.ok \ - gdi32-MaxPixelFormats.ok \ - gdi32-MultiMonitor.ok \ - gdiplus-GdipCreateRegionRgnData.ok \ - imagehlp-BindImageEx.ok \ - imm32-Cross_Thread_Access.ok \ - include-Winetest.ok \ - iphlpapi-TCP_Table.ok \ - kernel32-Console_Handles.ok \ - kernel32-GetFinalPathNameByHandle.ok \ - kernel32-GetNumaProcessorNode.ok \ - kernel32-GetStringTypeW.ok \ - kernel32-GetSystemTimes.ok \ - kernel32-GetVolumePathName.ok \ - kernel32-Named_Pipe.ok \ - kernel32-NeedCurrentDirectoryForExePath.ok \ - kernel32-Profile.ok \ - kernel32-UTF7_Support.ok \ - kernel32-VerifyVersionInfo.ok \ - libs-Unicode_Collation.ok \ - makedep-PARENTSPEC.ok \ - msvcp90-basic_string_wchar_dtor.ok \ - msvcrt-atof_strtod.ok \ - ntdll-DOS_Attributes.ok \ - ntdll-DVD_Read_Size.ok \ - ntdll-DllRedirects.ok \ - ntdll-Dynamic_DST.ok \ - ntdll-Exception.ok \ - ntdll-FD_Cache.ok \ - ntdll-FileDispositionInformation.ok \ - ntdll-Fix_Alignment.ok \ - ntdll-Fix_Free.ok \ - ntdll-Heap_FreeLists.ok \ - ntdll-Junction_Points.ok \ - ntdll-LZNT1_Compression.ok \ - ntdll-NtQuerySection.ok \ - ntdll-NtSetLdtEntries.ok \ - ntdll-Pipe_SpecialCharacters.ok \ - ntdll-RtlIpv4StringToAddressExA.ok \ - ntdll-ThreadTime.ok \ - ntdll-User_Shared_Data.ok \ - ntdll-WRITECOPY.ok \ - ntdll-WinSqm.ok \ - ntoskrnl-Emulator.ok \ - ntoskrnl-Irp_Status.ok \ - ntoskrnl-Stub_FileObject.ok \ - nvcuda-CUDA_Support.ok \ - ole32-CoWaitForMultipleHandles.ok \ - quartz-MediaSeeking_Positions.ok \ - riched20-IText_Interface.ok \ - secur32-Schannel_ContextAttr.ok \ - server-ACL_Compat.ok \ - server-Address_Change_Notification.ok \ - server-CreateProcess_ACLs.ok \ - server-Inherited_ACLs.ok \ - server-Misc_ACL.ok \ - server-OpenProcess.ok \ - server-Stored_ACLs.ok \ - server-Unexpected_Wakeup.ok \ - setupapi-SetupPromptForDisk.ok \ - shdocvw-ParseURLFromOutsideSource_Tests.ok \ - shell32-Default_Folder_ACLs.ok \ - shell32-Default_Path.ok \ - shell32-Icons.ok \ - shell32-RunDLL_CallEntry16.ok \ - shell32-SHCreateSessionKey.ok \ - shell32-SHFileOperation.ok \ - shlwapi-PathIsDirectoryEmptyW.ok \ - shlwapi-UrlCombine.ok \ - slc-SLGetWindowsInformation.ok \ - urlmon-CoInternetSetFeatureEnabled.ok \ - user32-Dialog_Paint_Event.ok \ - user32-DrawTextExW.ok \ - user32-GetRawInputDeviceList.ok \ - user32-GetSystemMetrics.ok \ - user32-GetTipText.ok \ - user32-Mouse_Message_Hwnd.ok \ - user32-ScrollWindowEx.ok \ - user32-WndProc.ok \ - wineboot-HKEY_DYN_DATA.ok \ - winebuild-LinkerVersion.ok \ - winecfg-Staging.ok \ - wined3d-CSMT_Helper.ok \ - wined3d-CSMT_Main.ok \ - wined3d-DXTn.ok \ - wined3d-Revert_PixelFormat.ok \ - winedevice-Fix_Relocation.ok \ - winemenubuilder-Desktop_Icon_Path.ok \ - winepulse-PulseAudio_Support.ok \ - winex11-CandidateWindowPos.ok \ - winex11-Clipboard_HTML.ok \ - winex11-Limited_Resolutions.ok \ - winex11-Window_Groups.ok \ - winex11-XEMBED.ok \ - winex11-wglShareLists.ok \ - wininet-FtpFindFirstFile.ok \ - wininet-encoding.ok \ - wpcap-Dynamic_Linking.ok \ - ws2_32-Connect_Time.ok \ - ws2_32-TransmitFile.ok \ - ws2_32-WriteWatches.ok \ - ws2_32-getaddrinfo.ok \ - wtsapi32-EnumerateProcesses.ok +CURDIR ?= ${.CURDIR} .PHONY: install -install: $(PATCHLIST) - cat *.ok | sort | $(CURDIR)/../debian/tools/patchlist.sh | $(APPLY) - cd $(DESTDIR) && autoreconf -f - cd $(DESTDIR) && ./tools/make_requests +install: + @echo "WARNING: Using this Makefile is deprecated!" >&2 + "$(CURDIR)/patchinstall.sh" DESTDIR="$(DESTDIR)" --all .PHONY: install-git -install-git: PATCH := git am -install-git: install - -series: APPLY_FILE = @echo "$(1)" >> series -series: $(PATCHLIST) - @cat *.ok | sort | $(CURDIR)/../debian/tools/patchlist.sh > patchlist.diff - @echo "patchlist.diff" >> series - @( \ - echo ""; \ - echo "The 'series' file was created in current directory. Please note that"; \ - echo "'patchlist.diff' is autogenerated based on your selection of patches and not"; \ - echo "included in this repository - keep in mind to update it on every release."; \ - echo ""; \ - echo "Moreover, depending on which patches you have selected, you will have to run"; \ - echo "'autoreconf -f' and/or './tools/make_requests' after applying them."; \ - echo ""; \ - binary=0; \ - while IFS= read -r line; do \ - if grep -q "^GIT binary patch" "$$line"; then \ - binary=1; break; \ - fi \ - done < series; \ - if [ "$$binary" -ne 0 ]; then \ - echo "The following files contain binary patches and cannot be applied with the"; \ - echo "regular 'patch' commandline tool:"; \ - echo ""; \ - while IFS= read -r line; do \ - grep -q "^GIT binary patch" "$$line" && echo "$$line"; \ - done < series; \ - echo ""; \ - echo "Please use 'git apply' or '../debian/tools/gitapply.sh' from this repository."; \ - echo ""; \ - fi \ - ) - -.PHONY: clean -clean: - rm -f series patchlist.diff - rm -f *.ok - -# Patchset Exagear -# | -# | Modified files: -# | * configure.ac, dlls/ntdll/signal_i386.c, dlls/ntdll/virtual.c, server/ptrace.c -# | -.INTERMEDIATE: Exagear.ok -Exagear.ok: ntdll-WRITECOPY.ok - $(call APPLY_FILE,Exagear/0001-ntdll-Implement-emulation-of-SIDT-instruction-when-u.patch) - $(call APPLY_FILE,Exagear/0002-ntdll-Fix-issues-with-write-watches-when-using-Exage.patch) - $(call APPLY_FILE,Exagear/0003-server-Don-t-attempt-to-use-ptrace-when-running-with.patch) - @( \ - echo '+ { "Sebastian Lackner", "ntdll: Implement emulation of SIDT instruction when using Exagear.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll: Fix issues with write watches when using Exagear.", 1 },'; \ - echo '+ { "Sebastian Lackner", "server: Don'\''t attempt to use ptrace when running with Exagear.", 1 },'; \ - ) > Exagear.ok - -# Patchset Miscellaneous -# | -# | Modified files: -# | * dlls/d3d9/tests/visual.c, dlls/kernel32/locale.c, dlls/netapi32/netapi32.c, dlls/winealsa.drv/mmdevdrv.c, -# | dlls/wined3d/glsl_shader.c, dlls/wined3d/resource.c, dlls/wined3d/swapchain.c, tools/makedep.c -# | -.INTERMEDIATE: Miscellaneous.ok -Miscellaneous.ok: - $(call APPLY_FILE,Miscellaneous/0001-wined3d-Silence-repeated-resource_check_usage-FIXME.patch) - $(call APPLY_FILE,Miscellaneous/0002-kernel32-Silence-repeated-CompareStringEx-FIXME.patch) - $(call APPLY_FILE,Miscellaneous/0003-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch) - $(call APPLY_FILE,Miscellaneous/0004-Appease-the-blessed-version-of-gcc-4.5-when-Werror-i.patch) - @( \ - echo '+ { "Erich E. Hoover", "wined3d: Silence repeated resource_check_usage FIXME.", 2 },'; \ - echo '+ { "Sebastian Lackner", "kernel32: Silence repeated CompareStringEx FIXME.", 1 },'; \ - echo '+ { "Sebastian Lackner", "wined3d: Silence repeated wined3d_swapchain_present FIXME.", 1 },'; \ - echo '+ { "Erich E. Hoover", "Appease the blessed version of gcc (4.5) when -Werror is enabled.", 1 },'; \ - ) > Miscellaneous.ok - -# Patchset Pipelight -# | -# | Modified files: -# | * dlls/user32/message.c, dlls/wined3d/wined3d.spec, dlls/wined3d/wined3d_main.c, dlls/winex11.drv/init.c, -# | dlls/winex11.drv/opengl.c, dlls/winex11.drv/x11drv.h -# | -.INTERMEDIATE: Pipelight.ok -Pipelight.ok: - $(call APPLY_FILE,Pipelight/0001-winex11-Implement-X11DRV_FLUSH_GDI_DISPLAY-ExtEscape-c.patch) - $(call APPLY_FILE,Pipelight/0002-user32-Decrease-minimum-SetTimer-interval-to-5-ms.patch) - $(call APPLY_FILE,Pipelight/0003-wined3d-allow-changing-strict-drawing-through-an-exp.patch) - $(call APPLY_FILE,Pipelight/0004-winex11.drv-Indicate-direct-rendering-through-OpenGL.patch) - @( \ - echo '+ { "Sebastian Lackner", "winex11: Implement X11DRV_FLUSH_GDI_DISPLAY ExtEscape command.", 1 },'; \ - echo '+ { "Michael Müller", "user32: Decrease minimum SetTimer interval to 5 ms.", 2 },'; \ - echo '+ { "Michael Müller", "wined3d: allow changing strict drawing through an exported function.", 1 },'; \ - echo '+ { "Michael Müller", "winex11.drv: Indicate direct rendering through OpenGL extension.", 1 },'; \ - ) > Pipelight.ok - -# Patchset Staging -# | -# | Modified files: -# | * dlls/kernel32/process.c, dlls/ntdll/misc.c, dlls/ntdll/ntdll.spec, include/wine/library.h, libs/wine/Makefile.in, -# | libs/wine/config.c, libs/wine/loader.c, libs/wine/wine.def, libs/wine/wine.map, loader/main.c, po/ar.po, po/bg.po, -# | po/ca.po, po/cs.po, po/da.po, po/de.po, po/el.po, po/en.po, po/en_US.po, po/eo.po, po/es.po, po/fa.po, po/fi.po, -# | po/fr.po, po/he.po, po/hi.po, po/hr.po, po/hu.po, po/it.po, po/ja.po, po/ko.po, po/lt.po, po/ml.po, po/nb_NO.po, -# | po/nl.po, po/or.po, po/pa.po, po/pl.po, po/pt_BR.po, po/pt_PT.po, po/rm.po, po/ro.po, po/ru.po, po/sk.po, po/sl.po, -# | po/sr_RS@cyrillic.po, po/sr_RS@latin.po, po/sv.po, po/te.po, po/th.po, po/tr.po, po/uk.po, po/wa.po, po/wine.pot, -# | po/zh_CN.po, po/zh_TW.po, programs/winedbg/winedbg.rc -# | -.INTERMEDIATE: Staging.ok -Staging.ok: - $(call APPLY_FILE,Staging/0001-kernel32-Add-winediag-message-to-show-warning-that-t.patch) - $(call APPLY_FILE,Staging/0002-winedbg-Change-bug-reporting-URL-to-Wine-Staging.patch) - $(call APPLY_FILE,Staging/0003-winelib-Append-Staging-at-the-end-of-the-version-s.patch) - $(call APPLY_FILE,Staging/0004-loader-Add-commandline-option-patches-to-show-the-pa.patch) - $(call APPLY_FILE,Staging/0005-loader-Add-commandline-option-check-libs.patch) - @( \ - echo '+ { "Sebastian Lackner", "kernel32: Add winediag message to show warning, that this isn'\''t vanilla wine.", 1 },'; \ - echo '+ { "Sebastian Lackner", "winedbg: Change bug reporting URL to Wine Staging.", 1 },'; \ - echo '+ { "Sebastian Lackner", "winelib: Append '\''(Staging)'\'' at the end of the version string.", 1 },'; \ - echo '+ { "Sebastian Lackner", "loader: Add commandline option --patches to show the patch list.", 1 },'; \ - echo '+ { "Michael Müller", "loader: Add commandline option --check-libs.", 1 },'; \ - ) > Staging.ok - -# Patchset atl-IOCS_Property -# | -# | This patchset fixes the following Wine bugs: -# | * [#21767] ATL IOCS data should not be stored in GWLP_USERDATA -# | -# | Modified files: -# | * dlls/atl/atl_ax.c -# | -.INTERMEDIATE: atl-IOCS_Property.ok -atl-IOCS_Property.ok: - $(call APPLY_FILE,atl-IOCS_Property/0001-atl-Don-t-use-GWLP_USERDATA-to-store-IOCS-to-avoid-c.patch) - @( \ - echo '+ { "Qian Hong", "atl: Don'\''t use GWLP_USERDATA to store IOCS to avoid conflict with Apps.", 1 },'; \ - ) > atl-IOCS_Property.ok - -# Patchset comctl32-LoadIconMetric -# | -# | This patchset fixes the following Wine bugs: -# | * [#35375] Support for LoadIconMetric -# | -# | Modified files: -# | * dlls/comctl32/Makefile.in, dlls/comctl32/comctl32.spec, dlls/comctl32/icon.c, dlls/comctl32/tests/misc.c, -# | include/commctrl.h -# | -.INTERMEDIATE: comctl32-LoadIconMetric.ok -comctl32-LoadIconMetric.ok: - $(call APPLY_FILE,comctl32-LoadIconMetric/0001-comctl32-Implement-LoadIconMetric-function.patch) - $(call APPLY_FILE,comctl32-LoadIconMetric/0002-comctl32-tests-Add-tests-for-LoadIconMetric-function.patch) - @( \ - echo '+ { "Michael Müller", "comctl32: Implement LoadIconMetric function.", 1 },'; \ - echo '+ { "Michael Müller", "comctl32/tests: Add tests for LoadIconMetric function.", 1 },'; \ - ) > comctl32-LoadIconMetric.ok - -# Patchset configure-Absolute_RPATH -# | -# | This patchset fixes the following Wine bugs: -# | * [#26256] Support for setcap on wine-preloader -# | -# | Modified files: -# | * configure.ac -# | -.INTERMEDIATE: configure-Absolute_RPATH.ok -configure-Absolute_RPATH.ok: - $(call APPLY_FILE,configure-Absolute_RPATH/0001-configure-Also-add-the-absolute-RPATH-when-linking-a.patch) - @( \ - echo '+ { "Sebastian Lackner", "configure: Also add the absolute RPATH when linking against libwine.", 1 },'; \ - ) > configure-Absolute_RPATH.ok - -# Patchset d3d9-Surface_Refcount -# | -# | This patchset fixes the following Wine bugs: -# | * [#18477] Avoid crashing when broken app tries to release surface although refcount is zero -# | -# | Modified files: -# | * dlls/d3d9/surface.c -# | -.INTERMEDIATE: d3d9-Surface_Refcount.ok -d3d9-Surface_Refcount.ok: - $(call APPLY_FILE,d3d9-Surface_Refcount/0001-d3d9-Don-t-decrease-surface-refcount-when-its-alread.patch) - @( \ - echo '+ { "Henri Verbeet", "d3d9: Don'\''t decrease surface refcount when its already zero.", 1 },'; \ - ) > d3d9-Surface_Refcount.ok - -# Patchset d3dx9_36-ConvertToIndexedBlended -# | -# | This patchset fixes the following Wine bugs: -# | * [#36449] Fix parameters for ConvertToIndexedBlendedMesh stub -# | -# | Modified files: -# | * dlls/d3dx9_36/skin.c, include/d3dx9mesh.h -# | -.INTERMEDIATE: d3dx9_36-ConvertToIndexedBlended.ok -d3dx9_36-ConvertToIndexedBlended.ok: - $(call APPLY_FILE,d3dx9_36-ConvertToIndexedBlended/0001-d3dx9_36-Fix-d3dx9_skin_info_ConvertToIndexedBlended.patch) - @( \ - echo '+ { "Christian Costa", "d3dx9_36: Fix d3dx9_skin_info_ConvertToIndexedBlendedMesh stub.", 1 },'; \ - ) > d3dx9_36-ConvertToIndexedBlended.ok - -# Patchset d3dx9_36-D3DXStubs -# | -# | This patchset fixes the following Wine bugs: -# | * [#31984] Add stub for D3DXComputeTangentFrameEx -# | * [#26379] Support for D3DXComputeNormals -# | -# | Modified files: -# | * dlls/d3dx9_24/d3dx9_24.spec, dlls/d3dx9_25/d3dx9_25.spec, dlls/d3dx9_26/d3dx9_26.spec, dlls/d3dx9_27/d3dx9_27.spec, -# | dlls/d3dx9_28/d3dx9_28.spec, dlls/d3dx9_29/d3dx9_29.spec, dlls/d3dx9_30/d3dx9_30.spec, dlls/d3dx9_31/d3dx9_31.spec, -# | dlls/d3dx9_32/d3dx9_32.spec, dlls/d3dx9_33/d3dx9_33.spec, dlls/d3dx9_34/d3dx9_34.spec, dlls/d3dx9_35/d3dx9_35.spec, -# | dlls/d3dx9_36/d3dx9_36.spec, dlls/d3dx9_36/mesh.c, dlls/d3dx9_37/d3dx9_37.spec, dlls/d3dx9_38/d3dx9_38.spec, -# | dlls/d3dx9_39/d3dx9_39.spec, dlls/d3dx9_40/d3dx9_40.spec, dlls/d3dx9_41/d3dx9_41.spec, dlls/d3dx9_42/d3dx9_42.spec, -# | dlls/d3dx9_43/d3dx9_43.spec -# | -.INTERMEDIATE: d3dx9_36-D3DXStubs.ok -d3dx9_36-D3DXStubs.ok: - $(call APPLY_FILE,d3dx9_36-D3DXStubs/0001-d3dx9_36-Add-stub-for-D3DXComputeTangentFrameEx.patch) - $(call APPLY_FILE,d3dx9_36-D3DXStubs/0002-d3dx9_36-Add-stub-for-D3DXIntersect.patch) - $(call APPLY_FILE,d3dx9_36-D3DXStubs/0003-d3dx9_36-Implement-D3DXComputeNormals.patch) - $(call APPLY_FILE,d3dx9_36-D3DXStubs/0004-d3dx9_36-Add-stub-for-D3DXComputeNormalMap.patch) - @( \ - echo '+ { "Christian Costa", "d3dx9_36: Add stub for D3DXComputeTangentFrameEx.", 1 },'; \ - echo '+ { "Christian Costa", "d3dx9_36: Add stub for D3DXIntersect.", 1 },'; \ - echo '+ { "Christian Costa", "d3dx9_36: Implement D3DXComputeNormals.", 1 },'; \ - echo '+ { "Christian Costa", "d3dx9_36: Add stub for D3DXComputeNormalMap.", 1 },'; \ - ) > d3dx9_36-D3DXStubs.ok - -# Patchset d3dx9_36-DXTn -# | -# | This patchset fixes the following Wine bugs: -# | * [#33768] Fix texture corruption in CSI: Fatal Conspiracy -# | * [#19231] Fix crash of Trine Demo on start -# | * [#37391] Exception during start of fr-043 caused by missing DXTn support -# | -# | Modified files: -# | * dlls/d3dx9_36/Makefile.in, dlls/d3dx9_36/surface.c -# | -.INTERMEDIATE: d3dx9_36-DXTn.ok -d3dx9_36-DXTn.ok: wined3d-DXTn.ok - $(call APPLY_FILE,d3dx9_36-DXTn/0001-d3dx9_36-Add-dxtn-support.patch) - @( \ - echo '+ { "Christian Costa", "d3dx9_36: Add dxtn support.", 1 },'; \ - ) > d3dx9_36-DXTn.ok - -# Patchset d3dx9_36-DrawText -# | -# | This patchset fixes the following Wine bugs: -# | * [#24754] Support for ID3DXFont::DrawTextA/W -# | -# | Modified files: -# | * dlls/d3dx9_36/font.c -# | -.INTERMEDIATE: d3dx9_36-DrawText.ok -d3dx9_36-DrawText.ok: - $(call APPLY_FILE,d3dx9_36-DrawText/0001-d3dx9_36-Implement-ID3DXFontImpl_DrawText.patch) - $(call APPLY_FILE,d3dx9_36-DrawText/0002-d3dx9_36-Fix-horizontal-centering-in-ID3DXFont_DrawT.patch) - @( \ - echo '+ { "Christian Costa", "d3dx9_36: Implement ID3DXFontImpl_DrawText.", 1 },'; \ - echo '+ { "Christian Costa", "d3dx9_36: Fix horizontal centering in ID3DXFont_DrawText.", 1 },'; \ - ) > d3dx9_36-DrawText.ok - -# Patchset d3dx9_36-Filter_Warnings -# | -# | This patchset fixes the following Wine bugs: -# | * [#33770] D3DCompileShader should filter specific warning messages -# | -# | Modified files: -# | * dlls/d3dx9_36/shader.c -# | -.INTERMEDIATE: d3dx9_36-Filter_Warnings.ok -d3dx9_36-Filter_Warnings.ok: - $(call APPLY_FILE,d3dx9_36-Filter_Warnings/0001-d3dx9_36-Filter-out-D3DCompile-warning-messages-that.patch) - @( \ - echo '+ { "Christian Costa", "d3dx9_36: Filter out D3DCompile warning messages that are not present with D3DCompileShader.", 4 },'; \ - ) > d3dx9_36-Filter_Warnings.ok - -# Patchset d3dx9_36-FindNextValidTechnique -# | -# | This patchset fixes the following Wine bugs: -# | * [#34101] Implement ID3DXEffect::FindNextValidTechnique -# | -# | Modified files: -# | * dlls/d3dx9_36/effect.c, dlls/d3dx9_36/tests/effect.c -# | -.INTERMEDIATE: d3dx9_36-FindNextValidTechnique.ok -d3dx9_36-FindNextValidTechnique.ok: - $(call APPLY_FILE,d3dx9_36-FindNextValidTechnique/0001-d3dx9_36-Implement-ID3DXEffect_FindNextValidTechniqu.patch) - @( \ - echo '+ { "Christian Costa", "d3dx9_36: Implement ID3DXEffect_FindNextValidTechnique + add tests.", 1 },'; \ - ) > d3dx9_36-FindNextValidTechnique.ok - -# Patchset d3dx9_36-GetShaderSemantics -# | -# | This patchset fixes the following Wine bugs: -# | * [#22682] Support for D3DXGetShaderInputSemantics -# | -# | Modified files: -# | * dlls/d3dx9_36/d3dx9_36.spec, dlls/d3dx9_36/shader.c, dlls/d3dx9_36/tests/shader.c, include/d3dx9shader.h -# | -.INTERMEDIATE: d3dx9_36-GetShaderSemantics.ok -d3dx9_36-GetShaderSemantics.ok: - $(call APPLY_FILE,d3dx9_36-GetShaderSemantics/0001-d3dx9_36-Implement-D3DXGetShaderInputSemantics-tests.patch) - @( \ - echo '+ { "Christian Costa", "d3dx9_36: Implement D3DXGetShaderInputSemantics + tests.", 1 },'; \ - ) > d3dx9_36-GetShaderSemantics.ok - -# Patchset d3dx9_36-Optimize_Inplace -# | -# | Modified files: -# | * dlls/d3dx9_36/mesh.c -# | -.INTERMEDIATE: d3dx9_36-Optimize_Inplace.ok -d3dx9_36-Optimize_Inplace.ok: - $(call APPLY_FILE,d3dx9_36-Optimize_Inplace/0001-d3dx9_36-No-need-to-fail-if-we-don-t-support-vertice.patch) - @( \ - echo '+ { "Christian Costa", "d3dx9_36: No need to fail if we don'\''t support vertices reordering in D3DXMESHOPT_ATTRSORT.", 1 },'; \ - ) > d3dx9_36-Optimize_Inplace.ok - -# Patchset d3dx9_36-Texture_Align -# | -# | Modified files: -# | * dlls/d3dx9_36/tests/texture.c, dlls/d3dx9_36/texture.c -# | -.INTERMEDIATE: d3dx9_36-Texture_Align.ok -d3dx9_36-Texture_Align.ok: - $(call APPLY_FILE,d3dx9_36-Texture_Align/0001-d3dx9_36-Align-texture-dimensions-to-block-size-for-.patch) - @( \ - echo '+ { "Christian Costa", "d3dx9_36: Align texture dimensions to block size for compressed textures in D3DXCheckTextureRequirements.", 1 },'; \ - ) > d3dx9_36-Texture_Align.ok - -# Patchset d3dx9_36-UpdateSkinnedMesh -# | -# | This patchset fixes the following Wine bugs: -# | * [#32572] Support for ID3DXSkinInfoImpl_UpdateSkinnedMesh -# | -# | Modified files: -# | * dlls/d3dx9_36/skin.c, dlls/d3dx9_36/tests/mesh.c -# | -.INTERMEDIATE: d3dx9_36-UpdateSkinnedMesh.ok -d3dx9_36-UpdateSkinnedMesh.ok: - $(call APPLY_FILE,d3dx9_36-UpdateSkinnedMesh/0001-d3dx9_36-Implement-ID3DXSkinInfoImpl_UpdateSkinnedMe.patch) - @( \ - echo '+ { "Christian Costa", "d3dx9_36: Implement ID3DXSkinInfoImpl_UpdateSkinnedMesh.", 1 },'; \ - ) > d3dx9_36-UpdateSkinnedMesh.ok - -# Patchset dbghelp-Debug_Symbols -# | -# | Modified files: -# | * dlls/dbghelp/Makefile.in, dlls/dbghelp/elf_module.c -# | -.INTERMEDIATE: dbghelp-Debug_Symbols.ok -dbghelp-Debug_Symbols.ok: - $(call APPLY_FILE,dbghelp-Debug_Symbols/0001-dbghelp-Always-check-for-debug-symbols-in-BINDIR.patch) - @( \ - echo '+ { "Sebastian Lackner", "dbghelp: Always check for debug symbols in BINDIR.", 1 },'; \ - ) > dbghelp-Debug_Symbols.ok - -# Patchset dbghelp-KdHelp -# | -# | This patchset fixes the following Wine bugs: -# | * [#37272] Don't fill KdHelp structure for usermode applications -# | -# | Modified files: -# | * dlls/dbghelp/stack.c -# | -.INTERMEDIATE: dbghelp-KdHelp.ok -dbghelp-KdHelp.ok: - $(call APPLY_FILE,dbghelp-KdHelp/0001-dbghelp-Don-t-fill-KdHelp-structure-for-usermode-app.patch) - @( \ - echo '+ { "Sebastian Lackner", "dbghelp: Don'\''t fill KdHelp structure for usermode applications.", 1 },'; \ - ) > dbghelp-KdHelp.ok - -# Patchset ddraw-d3d_execute_buffer -# | -# | Modified files: -# | * dlls/ddraw/executebuffer.c -# | -.INTERMEDIATE: ddraw-d3d_execute_buffer.ok -ddraw-d3d_execute_buffer.ok: - $(call APPLY_FILE,ddraw-d3d_execute_buffer/0001-ddraw-Don-t-call-IDirect3DDevice7_DrawIndexedPrimiti.patch) - @( \ - echo '+ { "Christian Costa", "ddraw: Don'\''t call IDirect3DDevice7_DrawIndexedPrimitive if there is no primitive.", 1 },'; \ - ) > ddraw-d3d_execute_buffer.ok - -# Patchset dinput-Events -# | -# | This patchset fixes the following Wine bugs: -# | * [#8854] Ensure X11 input events are handled even without explicit message loop -# | -# | Modified files: -# | * dlls/dinput/device.c, dlls/dinput/keyboard.c, dlls/user32/input.c, dlls/user32/user32.spec, include/winuser.h -# | -.INTERMEDIATE: dinput-Events.ok -dinput-Events.ok: - $(call APPLY_FILE,dinput-Events/0001-dinput-Ensure-X11-input-events-are-handled-even-with.patch) - @( \ - echo '+ { "Sebastian Lackner", "dinput: Ensure X11 input events are handled even without explicit message loop.", 1 },'; \ - ) > dinput-Events.ok - -# Patchset dsound-Fast_Mixer -# | -# | This patchset fixes the following Wine bugs: -# | * [#30639] Audio stuttering and performance drops in multiple applications -# | -# | Modified files: -# | * dlls/dsound/dsound_main.c, dlls/dsound/dsound_private.h, dlls/dsound/mixer.c -# | -.INTERMEDIATE: dsound-Fast_Mixer.ok -dsound-Fast_Mixer.ok: - $(call APPLY_FILE,dsound-Fast_Mixer/0001-dsound-Add-a-linear-resampler-for-use-with-a-large-n.patch) - @( \ - echo '+ { "Alexander E. Patrakov", "dsound: Add a linear resampler for use with a large number of mixing buffers.", 1 },'; \ - ) > dsound-Fast_Mixer.ok - -# Patchset dxgi-GetDesc -# | -# | Modified files: -# | * dlls/dxgi/output.c -# | -.INTERMEDIATE: dxgi-GetDesc.ok -dxgi-GetDesc.ok: - $(call APPLY_FILE,dxgi-GetDesc/0001-dxgi-Implement-IDXGIOutput-GetDesc.patch) - @( \ - echo '+ { "Michael Müller", "dxgi: Implement IDXGIOutput::GetDesc.", 1 },'; \ - ) > dxgi-GetDesc.ok - -# Patchset fonts-Missing_Fonts -# | -# | This patchset fixes the following Wine bugs: -# | * [#32323] Implement an Arial replacement font -# | * [#13829] Implement a Microsoft Yahei replacement font -# | -# | Modified files: -# | * COPYING.arial, COPYING.cour, COPYING.msyh, LICENSE, fonts/Makefile.in, fonts/arial.sfd, fonts/arial.ttf, fonts/cour.sfd, -# | fonts/cour.ttf, fonts/msyh.sfd, fonts/msyh.ttf -# | -.INTERMEDIATE: fonts-Missing_Fonts.ok -fonts-Missing_Fonts.ok: - $(call APPLY_FILE,fonts-Missing_Fonts/0001-fonts-Add-Liberation-Sans-as-an-Arial-replacement.patch) - $(call APPLY_FILE,fonts-Missing_Fonts/0002-fonts-Add-WenQuanYi-Micro-Hei-as-a-Microsoft-Yahei-r.patch) - $(call APPLY_FILE,fonts-Missing_Fonts/0003-fonts-Add-Courier-Prime-as-a-Courier-New-replacement.patch) - $(call APPLY_FILE,fonts-Missing_Fonts/0004-Add-licenses-for-fonts-as-separate-files.patch) - @( \ - echo '+ { "Torsten Kurbad", "fonts: Add Liberation Sans as an Arial replacement.", 2 },'; \ - echo '+ { "Erich E. Hoover", "fonts: Add WenQuanYi Micro Hei as a Microsoft Yahei replacement.", 1 },'; \ - echo '+ { "Erich E. Hoover", "fonts: Add Courier Prime as a Courier New replacement.", 1 },'; \ - echo '+ { "Michael Müller", "Add licenses for fonts as separate files.", 1 },'; \ - ) > fonts-Missing_Fonts.ok - -# Patchset gdi32-MaxPixelFormats -# | -# | This patchset fixes the following Wine bugs: -# | * [#6176] wglDescribePixelFormat should return max index for NULL descriptor -# | -# | Modified files: -# | * dlls/gdi32/dibdrv/opengl.c -# | -.INTERMEDIATE: gdi32-MaxPixelFormats.ok -gdi32-MaxPixelFormats.ok: - $(call APPLY_FILE,gdi32-MaxPixelFormats/0001-gdi32-Return-maximum-number-of-pixel-formats-when-NU.patch) - @( \ - echo '+ { "Sebastian Lackner", "gdi32: Return maximum number of pixel formats when NULL pointer is passed to wglDescribePixelFormat.", 1 },'; \ - ) > gdi32-MaxPixelFormats.ok - -# Patchset gdi32-MultiMonitor -# | -# | This patchset fixes the following Wine bugs: -# | * [#34978] Multiple applications need EnumDisplayDevicesW implementation -# | * [#37709] GetMonitorInfo returns the same name for all monitors -# | -# | Modified files: -# | * dlls/gdi32/driver.c, dlls/user32/misc.c, dlls/winex11.drv/xinerama.c -# | -.INTERMEDIATE: gdi32-MultiMonitor.ok -gdi32-MultiMonitor.ok: - $(call APPLY_FILE,gdi32-MultiMonitor/0001-gdi32-Also-accept-.-DISPLAY-n-devices-names-with-n-o.patch) - $(call APPLY_FILE,gdi32-MultiMonitor/0002-winex11-Make-GetMonitorInfo-give-a-different-device-.patch) - $(call APPLY_FILE,gdi32-MultiMonitor/0003-user32-Implement-EnumDisplayDevicesW-based-on-EnumDi.patch) - @( \ - echo '+ { "Ken Thomases", "gdi32: Also accept \"\\\\\\\\.\\\\DISPLAY\" devices names with other than 1 as display devices.", 1 },'; \ - echo '+ { "Ken Thomases", "winex11: Make GetMonitorInfo() give a different device name (\\\\.\\\\DISPLAY) to each monitor.", 1 },'; \ - echo '+ { "Ken Thomases", "user32: Implement EnumDisplayDevicesW() based on EnumDisplayMonitors() and GetMonitorInfoW().", 1 },'; \ - ) > gdi32-MultiMonitor.ok - -# Patchset gdiplus-GdipCreateRegionRgnData -# | -# | This patchset fixes the following Wine bugs: -# | * [#34843] Support for GdipCreateRegionRgnData -# | -# | Modified files: -# | * dlls/gdiplus/region.c, dlls/gdiplus/tests/region.c -# | -.INTERMEDIATE: gdiplus-GdipCreateRegionRgnData.ok -gdiplus-GdipCreateRegionRgnData.ok: - $(call APPLY_FILE,gdiplus-GdipCreateRegionRgnData/0001-gdiplus-Implement-GdipCreateRegionRgnData.-Take-3.patch) - @( \ - echo '+ { "Dmitry Timoshkov", "gdiplus: Implement GdipCreateRegionRgnData.", 3 },'; \ - ) > gdiplus-GdipCreateRegionRgnData.ok - -# Patchset imagehlp-BindImageEx -# | -# | This patchset fixes the following Wine bugs: -# | * [#3591] Support for BindImageEx -# | -# | Modified files: -# | * dlls/imagehlp/modify.c, dlls/imagehlp/tests/image.c -# | -.INTERMEDIATE: imagehlp-BindImageEx.ok -imagehlp-BindImageEx.ok: - $(call APPLY_FILE,imagehlp-BindImageEx/0001-imagehlp-Implement-parts-of-BindImageEx-to-make-free.patch) - @( \ - echo '+ { "Bernhard Reiter", "imagehlp: Implement parts of BindImageEx to make freezing Python scripts work.", 1 },'; \ - ) > imagehlp-BindImageEx.ok - -# Patchset imm32-Cross_Thread_Access -# | -# | This patchset fixes the following Wine bugs: -# | * [#35361] Limit cross thread access to ImmSet* functions -# | -# | Modified files: -# | * dlls/imm32/imm.c, dlls/imm32/tests/imm32.c -# | -.INTERMEDIATE: imm32-Cross_Thread_Access.ok -imm32-Cross_Thread_Access.ok: - $(call APPLY_FILE,imm32-Cross_Thread_Access/0001-imm32-Move-thread-data-from-TLSEntry-to-an-internal-.patch) - $(call APPLY_FILE,imm32-Cross_Thread_Access/0002-imm32-Do-not-let-ImmDestroyContext-destroy-any-defau.patch) - $(call APPLY_FILE,imm32-Cross_Thread_Access/0003-imm32-Use-thread-data-from-target-HWND.patch) - $(call APPLY_FILE,imm32-Cross_Thread_Access/0004-imm32-Restrict-crossthread-Association-and-destructi.patch) - $(call APPLY_FILE,imm32-Cross_Thread_Access/0005-imm32-Limit-cross-thread-access-to-ImmSet-functions.patch) - @( \ - echo '+ { "Aric Stewart", "imm32: Move thread data from TLSEntry to an internal list.", 1 },'; \ - echo '+ { "Aric Stewart", "imm32: Do not let ImmDestroyContext destroy any default contexts.", 1 },'; \ - echo '+ { "Aric Stewart", "imm32: Use thread data from target HWND.", 1 },'; \ - echo '+ { "Aric Stewart", "imm32: Restrict crossthread Association and destruction.", 1 },'; \ - echo '+ { "Aric Stewart", "imm32: Limit cross thread access to ImmSet* functions.", 1 },'; \ - ) > imm32-Cross_Thread_Access.ok - -# Patchset include-Winetest -# | -# | Modified files: -# | * include/wine/test.h -# | -.INTERMEDIATE: include-Winetest.ok -include-Winetest.ok: - $(call APPLY_FILE,include-Winetest/0001-include-Automatically-detect-if-tests-are-running-un.patch) - @( \ - echo '+ { "Sebastian Lackner", "include: Automatically detect if tests are running under Wine when WINETEST_PLATFORM is not specified.", 1 },'; \ - ) > include-Winetest.ok - -# Patchset iphlpapi-TCP_Table -# | -# | This patchset fixes the following Wine bugs: -# | * [#34372] Support for AllocateAndGetTcpExTableFromStack -# | -# | Modified files: -# | * dlls/iphlpapi/iphlpapi.spec, dlls/iphlpapi/ipstats.c, dlls/iphlpapi/ipstats.h -# | -.INTERMEDIATE: iphlpapi-TCP_Table.ok -iphlpapi-TCP_Table.ok: - $(call APPLY_FILE,iphlpapi-TCP_Table/0001-iphlpapi-Implement-AllocateAndGetTcpExTableFromStack.patch) - @( \ - echo '+ { "Erich E. Hoover", "iphlpapi: Implement AllocateAndGetTcpExTableFromStack.", 1 },'; \ - ) > iphlpapi-TCP_Table.ok - -# Patchset kernel32-Console_Handles -# | -# | This patchset fixes the following Wine bugs: -# | * [#36216] Hearthstone fails to start -# | -# | Modified files: -# | * dlls/kernel32/console.c, dlls/kernel32/environ.c, dlls/kernel32/tests/process.c -# | -.INTERMEDIATE: kernel32-Console_Handles.ok -kernel32-Console_Handles.ok: - $(call APPLY_FILE,kernel32-Console_Handles/0001-kernel32-Invalid-console-handles-for-new-processes-a.patch) - @( \ - echo '+ { "Erich E. Hoover", "kernel32: Invalid console handles for new processes are 0, not INVALID_HANDLE_VALUE.", 1 },'; \ - ) > kernel32-Console_Handles.ok - -# Patchset kernel32-GetFinalPathNameByHandle -# | -# | This patchset fixes the following Wine bugs: -# | * [#36073] Support for GetFinalPathNameByHandle -# | -# | Modified files: -# | * dlls/api-ms-win-core-file-l1-2-0/api-ms-win-core-file-l1-2-0.spec, dlls/kernel32/file.c, dlls/kernel32/kernel32.spec, -# | dlls/kernel32/tests/file.c, include/fileapi.h -# | -.INTERMEDIATE: kernel32-GetFinalPathNameByHandle.ok -kernel32-GetFinalPathNameByHandle.ok: - $(call APPLY_FILE,kernel32-GetFinalPathNameByHandle/0001-kernel32-Implement-GetFinalPathNameByHandle.patch) - $(call APPLY_FILE,kernel32-GetFinalPathNameByHandle/0002-kernel32-tests-Add-tests-for-GetFinalPathNameByHandl.patch) - @( \ - echo '+ { "Michael Müller", "kernel32: Implement GetFinalPathNameByHandle.", 1 },'; \ - echo '+ { "Michael Müller", "kernel32/tests: Add tests for GetFinalPathNameByHandle.", 1 },'; \ - ) > kernel32-GetFinalPathNameByHandle.ok - -# Patchset kernel32-GetNumaProcessorNode -# | -# | Modified files: -# | * dlls/kernel32/cpu.c, dlls/kernel32/kernel32.spec, dlls/kernel32/tests/Makefile.in, dlls/kernel32/tests/cpu.c, -# | include/winbase.h -# | -.INTERMEDIATE: kernel32-GetNumaProcessorNode.ok -kernel32-GetNumaProcessorNode.ok: - $(call APPLY_FILE,kernel32-GetNumaProcessorNode/0001-kernel32-Implement-GetNumaProcessorNode.patch) - $(call APPLY_FILE,kernel32-GetNumaProcessorNode/0002-kernel32-tests-Add-tests-for-GetNumaProcessorNode.patch) - @( \ - echo '+ { "Michael Müller", "kernel32: Implement GetNumaProcessorNode.", 1 },'; \ - echo '+ { "Michael Müller", "kernel32/tests: Add tests for GetNumaProcessorNode.", 1 },'; \ - ) > kernel32-GetNumaProcessorNode.ok - -# Patchset kernel32-GetStringTypeW -# | -# | This patchset fixes the following Wine bugs: -# | * [#37759] Fix access violation when calling GetStringTypeW with NULL src. -# | -# | Modified files: -# | * dlls/kernel32/locale.c, dlls/kernel32/tests/locale.c -# | -.INTERMEDIATE: kernel32-GetStringTypeW.ok -kernel32-GetStringTypeW.ok: - $(call APPLY_FILE,kernel32-GetStringTypeW/0001-kernel32-Allow-empty-source-in-GetStringTypeW.patch) - @( \ - echo '+ { "Christian Faure", "kernel32: Allow empty source in GetStringTypeW.", 1 },'; \ - ) > kernel32-GetStringTypeW.ok - -# Patchset kernel32-GetSystemTimes -# | -# | This patchset fixes the following Wine bugs: -# | * [#19813] Support for GetSystemTimes -# | -# | Modified files: -# | * dlls/kernel32/tests/time.c, dlls/kernel32/time.c -# | -.INTERMEDIATE: kernel32-GetSystemTimes.ok -kernel32-GetSystemTimes.ok: - $(call APPLY_FILE,kernel32-GetSystemTimes/0001-kernel32-Add-tests-for-GetSystemTimes.patch) - $(call APPLY_FILE,kernel32-GetSystemTimes/0002-kernel32-Implement-GetSystemTimes.patch) - @( \ - echo '+ { "Louis Lenders", "kernel32: Add tests for GetSystemTimes.", 1 },'; \ - echo '+ { "Erich E. Hoover", "kernel32: Implement GetSystemTimes.", 3 },'; \ - ) > kernel32-GetSystemTimes.ok - -# Patchset kernel32-GetVolumePathName -# | -# | Modified files: -# | * dlls/kernel32/tests/volume.c, dlls/kernel32/volume.c -# | -.INTERMEDIATE: kernel32-GetVolumePathName.ok -kernel32-GetVolumePathName.ok: - $(call APPLY_FILE,kernel32-GetVolumePathName/0001-kernel32-Implement-GetVolumePathName.patch) - $(call APPLY_FILE,kernel32-GetVolumePathName/0002-kernel32-Convert-GetVolumePathName-tests-into-a-list.patch) - $(call APPLY_FILE,kernel32-GetVolumePathName/0003-kernel32-Add-a-bunch-more-GetVolumePathName-tests.patch) - $(call APPLY_FILE,kernel32-GetVolumePathName/0004-kernel32-tests-Add-a-lot-of-picky-GetVolumePathName-.patch) - @( \ - echo '+ { "Erich E. Hoover", "kernel32: Implement GetVolumePathName.", 1 },'; \ - echo '+ { "Erich E. Hoover", "kernel32: Convert GetVolumePathName tests into a list.", 1 },'; \ - echo '+ { "Erich E. Hoover", "kernel32: Add a bunch more GetVolumePathName tests.", 1 },'; \ - echo '+ { "Sebastian Lackner", "kernel32/tests: Add a lot of picky GetVolumePathName tests.", 1 },'; \ - ) > kernel32-GetVolumePathName.ok - -# Patchset kernel32-Named_Pipe -# | -# | This patchset fixes the following Wine bugs: -# | * [#16550] Fix for ConnectNamedPort return value in overlapped mode -# | * [#17195] Support for named pipe message mode (Linux only) -# | -# | Modified files: -# | * dlls/kernel32/file.c, dlls/kernel32/sync.c, dlls/kernel32/tests/pipe.c, dlls/ntdll/file.c, server/named_pipe.c, -# | server/protocol.def, server/sock.c, server/sock.h -# | -.INTERMEDIATE: kernel32-Named_Pipe.ok -kernel32-Named_Pipe.ok: - $(call APPLY_FILE,kernel32-Named_Pipe/0001-kernel32-ConnectNamedPort-should-return-FALSE-and-se.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0002-kernel32-tests-Add-tests-for-PeekNamedPipe-with-part.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0003-kernel32-tests-Add-tests-for-sending-and-receiving-l.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0004-kernel32-tests-Add-tests-for-closing-named-pipes.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0005-server-Show-warning-if-message-mode-is-not-supported.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0006-ntdll-Unify-similar-code-in-NtReadFile-and-FILE_Asyn.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0007-ntdll-Move-logic-to-check-for-broken-pipe-into-a-sep.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0008-ntdll-Unify-similar-code-in-NtWriteFile-and-FILE_Asy.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0009-server-Use-SOCK_SEQPACKET-socket-in-combination-with.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0010-ntdll-Add-handling-for-partially-received-messages-i.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0011-kernel32-tests-Add-more-tests-with-overlapped-IO-and.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0012-ntdll-Fix-some-tests-for-overlapped-partial-reads.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0013-kernel32-tests-Test-sending-peeking-and-receiving-an.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0014-ntdll-Add-support-for-nonblocking-pipes.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0015-kernel32-tests-Add-tests-for-PIPE_NOWAIT-in-message-.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0016-ntdll-Allow-to-set-PIPE_NOWAIT-on-byte-mode-pipes.patch) - $(call APPLY_FILE,kernel32-Named_Pipe/0017-kernel32-tests-Add-additional-tests-for-PIPE_NOWAIT-.patch) - @( \ - echo '+ { "Dan Kegel", "kernel32: ConnectNamedPort should return FALSE and set ERROR_PIPE_CONNECTED on success in overlapped mode.", 1 },'; \ - echo '+ { "Sebastian Lackner", "kernel32/tests: Add tests for PeekNamedPipe with partial received messages.", 1 },'; \ - echo '+ { "Sebastian Lackner", "kernel32/tests: Add tests for sending and receiving large messages.", 1 },'; \ - echo '+ { "Adam Martinson", "kernel32/tests: Add tests for closing named pipes.", 1 },'; \ - echo '+ { "Sebastian Lackner", "server: Show warning if message mode is not supported.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll: Unify similar code in NtReadFile and FILE_AsyncReadService.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll: Move logic to check for broken pipe into a separate function.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll: Unify similar code in NtWriteFile and FILE_AsyncWriteService.", 1 },'; \ - echo '+ { "Sebastian Lackner", "server: Use SOCK_SEQPACKET socket in combination with SO_PEEK_OFF to implement message mode on Unix.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll: Add handling for partially received messages in NtReadFile.", 1 },'; \ - echo '+ { "Sebastian Lackner", "kernel32/tests: Add more tests with overlapped IO and partial reads from named pipes.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll: Fix some tests for overlapped partial reads.", 1 },'; \ - echo '+ { "Sebastian Lackner", "kernel32/tests: Test sending, peeking and receiving an empty message.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll: Add support for nonblocking pipes.", 1 },'; \ - echo '+ { "Sebastian Lackner", "kernel32/tests: Add tests for PIPE_NOWAIT in message mode.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll: Allow to set PIPE_NOWAIT on byte-mode pipes.", 1 },'; \ - echo '+ { "Sebastian Lackner", "kernel32/tests: Add additional tests for PIPE_NOWAIT in overlapped mode.", 1 },'; \ - ) > kernel32-Named_Pipe.ok - -# Patchset kernel32-NeedCurrentDirectoryForExePath -# | -# | This patchset fixes the following Wine bugs: -# | * [#23934] CreateProcess does not prioritize the working directory over the system search path -# | -# | Modified files: -# | * dlls/kernel32/path.c, dlls/kernel32/process.c, dlls/kernel32/tests/path.c -# | -.INTERMEDIATE: kernel32-NeedCurrentDirectoryForExePath.ok -kernel32-NeedCurrentDirectoryForExePath.ok: - $(call APPLY_FILE,kernel32-NeedCurrentDirectoryForExePath/0001-kernel32-Add-SearchPath-test-demonstrating-the-prior.patch) - $(call APPLY_FILE,kernel32-NeedCurrentDirectoryForExePath/0002-kernel32-NeedCurrentDirectoryForExePath-does-not-use.patch) - $(call APPLY_FILE,kernel32-NeedCurrentDirectoryForExePath/0003-kernel32-Consider-the-working-directory-first-when-l.patch) - @( \ - echo '+ { "Erich E. Hoover", "kernel32: Add SearchPath test demonstrating the priority of the working directory.", 1 },'; \ - echo '+ { "Erich E. Hoover", "kernel32: NeedCurrentDirectoryForExePath does not use the registry.", 1 },'; \ - echo '+ { "Erich E. Hoover", "kernel32: Consider the working directory first when launching executables with CreateProcess.", 1 },'; \ - ) > kernel32-NeedCurrentDirectoryForExePath.ok - -# Patchset kernel32-Profile -# | -# | This patchset fixes the following Wine bugs: -# | * [#8036] Fix handling of empty section and key name for profile files. -# | -# | Modified files: -# | * dlls/kernel32/profile.c, dlls/kernel32/tests/profile.c -# | -.INTERMEDIATE: kernel32-Profile.ok -kernel32-Profile.ok: - $(call APPLY_FILE,kernel32-Profile/0001-kernel32-Allow-empty-profile-section-and-key-name-st.patch) - @( \ - echo '+ { "Claudio Fontana", "kernel32: Allow empty profile section and key name strings.", 1 },'; \ - ) > kernel32-Profile.ok - -# Patchset kernel32-UTF7_Support -# | -# | This patchset fixes the following Wine bugs: -# | * [#27388] Support for UTF7 encoding/decoding -# | -# | Modified files: -# | * dlls/kernel32/locale.c -# | -.INTERMEDIATE: kernel32-UTF7_Support.ok -kernel32-UTF7_Support.ok: - $(call APPLY_FILE,kernel32-UTF7_Support/0001-kernel32-Support-UTF-7-in-MultiByteToWideChar.patch) - $(call APPLY_FILE,kernel32-UTF7_Support/0002-kernel32-Support-UTF-7-in-WideCharToMultiByte.patch) - @( \ - echo '+ { "Alex Henrie", "kernel32: Support UTF-7 in MultiByteToWideChar.", 3 },'; \ - echo '+ { "Alex Henrie", "kernel32: Support UTF-7 in WideCharToMultiByte.", 3 },'; \ - ) > kernel32-UTF7_Support.ok - -# Patchset kernel32-VerifyVersionInfo -# | -# | This patchset fixes the following Wine bugs: -# | * [#36143] Fix condition mask handling in RtlVerifyVersionInfo -# | -# | Modified files: -# | * dlls/kernel32/tests/version.c, dlls/ntdll/version.c -# | -.INTERMEDIATE: kernel32-VerifyVersionInfo.ok -kernel32-VerifyVersionInfo.ok: - $(call APPLY_FILE,kernel32-VerifyVersionInfo/0001-kernel32-tests-Add-additional-tests-for-condition-ma.patch) - $(call APPLY_FILE,kernel32-VerifyVersionInfo/0002-ntdll-Fix-condition-mask-handling-in-RtlVerifyVersio.patch) - @( \ - echo '+ { "Sebastian Lackner", "kernel32/tests: Add additional tests for condition mask of VerifyVersionInfoA.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll: Fix condition mask handling in RtlVerifyVersionInfo.", 1 },'; \ - ) > kernel32-VerifyVersionInfo.ok - -# Patchset libs-Unicode_Collation -# | -# | This patchset fixes the following Wine bugs: -# | * [#10767] Fix comparison of punctuation characters in lstrcmp -# | -# | Modified files: -# | * dlls/kernel32/tests/locale.c, libs/wine/collation.c -# | -.INTERMEDIATE: libs-Unicode_Collation.ok -libs-Unicode_Collation.ok: - $(call APPLY_FILE,libs-Unicode_Collation/0001-libs-Fix-most-problems-with-CompareString.patch) - @( \ - echo '+ { "Dmitry Timoshkov", "libs: Fix most problems with CompareString.", 1 },'; \ - ) > libs-Unicode_Collation.ok - -# Patchset makedep-PARENTSPEC -# | -# | Modified files: -# | * tools/makedep.c -# | -.INTERMEDIATE: makedep-PARENTSPEC.ok -makedep-PARENTSPEC.ok: - $(call APPLY_FILE,makedep-PARENTSPEC/0001-makedep-Add-support-for-PARENTSPEC-Makefile-variable.patch) - @( \ - echo '+ { "Sebastian Lackner", "makedep: Add support for PARENTSPEC Makefile variable.", 1 },'; \ - ) > makedep-PARENTSPEC.ok - -# Patchset mshtml-sessionStorage -# | -# | Modified files: -# | * dlls/mshtml/htmlstorage.c, dlls/mshtml/htmlwindow.c, dlls/mshtml/mshtml_private.h, dlls/mshtml/nsiface.idl, -# | dlls/mshtml/tests/htmldoc.c -# | -.INTERMEDIATE: mshtml-sessionStorage.ok -mshtml-sessionStorage.ok: - $(call APPLY_FILE,mshtml-sessionStorage/0001-mshtml-Added-nsIDOMStorage-declaration.patch) - $(call APPLY_FILE,mshtml-sessionStorage/0002-mshtml-Fixed-create_storage-and-IHTMLStorage-Release.patch) - $(call APPLY_FILE,mshtml-sessionStorage/0003-mshtml-Added-IHTMLStorage-getItem-setItem-methods-im.patch) - @( \ - echo '+ { "Zhenbo Li", "mshtml: Added nsIDOMStorage declaration.", 1 },'; \ - echo '+ { "Zhenbo Li", "mshtml: Fixed create_storage() and IHTMLStorage::Release().", 1 },'; \ - echo '+ { "Zhenbo Li", "mshtml: Added IHTMLStorage:: getItem/setItem methods implementation.", 1 },'; \ - ) > mshtml-sessionStorage.ok - -# Patchset msvcp90-basic_string_wchar_dtor -# | -# | This patchset fixes the following Wine bugs: -# | * [#37358] FEAR 1 installer expects basic_string_wchar_dtor to return NULL -# | -# | Modified files: -# | * dlls/msvcp90/msvcp90.h, dlls/msvcp90/string.c, dlls/msvcp90/tests/string.c -# | -.INTERMEDIATE: msvcp90-basic_string_wchar_dtor.ok -msvcp90-basic_string_wchar_dtor.ok: - $(call APPLY_FILE,msvcp90-basic_string_wchar_dtor/0001-msvcp90-basic_string_wchar_dtor-needs-to-return-NULL.patch) - $(call APPLY_FILE,msvcp90-basic_string_wchar_dtor/0002-msvcp90-tests-Add-tests-to-check-that-basic_string_w.patch) - @( \ - echo '+ { "Michael Müller", "msvcp90: basic_string_wchar_dtor needs to return NULL.", 1 },'; \ - echo '+ { "Michael Müller", "msvcp90/tests: Add tests to check that basic_string_wchar_dtor returns NULL.", 1 },'; \ - ) > msvcp90-basic_string_wchar_dtor.ok - -# Patchset msvcrt-atof_strtod -# | -# | This patchset fixes the following Wine bugs: -# | * [#32550] MSVCRT crashes when NULL is passed as string to atof or strtod -# | -# | Modified files: -# | * dlls/msvcrt/string.c, dlls/msvcrt/tests/string.c -# | -.INTERMEDIATE: msvcrt-atof_strtod.ok -msvcrt-atof_strtod.ok: - $(call APPLY_FILE,msvcrt-atof_strtod/0001-msvcrt-Avoid-crash-when-NULL-pointer-is-passed-to-at.patch) - @( \ - echo '+ { "Michael Müller", "msvcrt: Avoid crash when NULL pointer is passed to atof / strtod functions.", 1 },'; \ - ) > msvcrt-atof_strtod.ok - -# Patchset ntdll-DOS_Attributes -# | -# | This patchset fixes the following Wine bugs: -# | * [#9158] Support for DOS hidden/system file attributes -# | -# | Modified files: -# | * configure.ac, dlls/ntdll/directory.c, dlls/ntdll/file.c, dlls/ntdll/ntdll_misc.h, dlls/ntdll/tests/directory.c, -# | dlls/ntdll/tests/file.c, include/wine/port.h, libs/port/Makefile.in, libs/port/xattr.c -# | -.INTERMEDIATE: ntdll-DOS_Attributes.ok -ntdll-DOS_Attributes.ok: - $(call APPLY_FILE,ntdll-DOS_Attributes/0001-ntdll-Implement-retrieving-DOS-attributes-in-NtQuery.patch) - $(call APPLY_FILE,ntdll-DOS_Attributes/0002-ntdll-Implement-retrieving-DOS-attributes-in-NtQuery.patch) - $(call APPLY_FILE,ntdll-DOS_Attributes/0003-ntdll-Implement-storing-DOS-attributes-in-NtSetInfor.patch) - $(call APPLY_FILE,ntdll-DOS_Attributes/0004-ntdll-Implement-storing-DOS-attributes-in-NtCreateFi.patch) - $(call APPLY_FILE,ntdll-DOS_Attributes/0005-libport-Add-support-for-Mac-OS-X-style-extended-attr.patch) - $(call APPLY_FILE,ntdll-DOS_Attributes/0006-libport-Add-support-for-FreeBSD-style-extended-attri.patch) - $(call APPLY_FILE,ntdll-DOS_Attributes/0007-ntdll-Perform-the-Unix-style-hidden-file-check-withi.patch) - @( \ - echo '+ { "Erich E. Hoover", "ntdll: Implement retrieving DOS attributes in NtQueryInformationFile.", 1 },'; \ - echo '+ { "Erich E. Hoover", "ntdll: Implement retrieving DOS attributes in NtQuery[Full]AttributesFile and NtQueryDirectoryFile.", 1 },'; \ - echo '+ { "Erich E. Hoover", "ntdll: Implement storing DOS attributes in NtSetInformationFile.", 1 },'; \ - echo '+ { "Erich E. Hoover", "ntdll: Implement storing DOS attributes in NtCreateFile.", 1 },'; \ - echo '+ { "Erich E. Hoover", "libport: Add support for Mac OS X style extended attributes.", 1 },'; \ - echo '+ { "Erich E. Hoover", "libport: Add support for FreeBSD style extended attributes.", 1 },'; \ - echo '+ { "Erich E. Hoover", "ntdll: Perform the Unix-style hidden file check within the unified file info grabbing routine.", 1 },'; \ - ) > ntdll-DOS_Attributes.ok - -# Patchset ntdll-DVD_Read_Size -# | -# | This patchset fixes the following Wine bugs: -# | * [#37767] IOCTL_DVD_READ_STRUCTURE expects the wrong size of output buffer for some requests -# | -# | Modified files: -# | * dlls/ntdll/cdrom.c -# | -.INTERMEDIATE: ntdll-DVD_Read_Size.ok -ntdll-DVD_Read_Size.ok: - $(call APPLY_FILE,ntdll-DVD_Read_Size/0001-ntdll-Fix-expected-IOCTL_DVD_READ_STRUCTURE-expected.patch) - @( \ - echo '+ { "Erich E. Hoover", "ntdll: Fix expected IOCTL_DVD_READ_STRUCTURE expected output size.", 1 },'; \ - ) > ntdll-DVD_Read_Size.ok - -# Patchset ntdll-DllRedirects -# | -# | Modified files: -# | * dlls/ntdll/loader.c, dlls/ntdll/loadorder.c, dlls/ntdll/ntdll_misc.h -# | -.INTERMEDIATE: ntdll-DllRedirects.ok -ntdll-DllRedirects.ok: - $(call APPLY_FILE,ntdll-DllRedirects/0001-ntdll-Move-logic-to-determine-loadorder-HKCU-app-key.patch) - $(call APPLY_FILE,ntdll-DllRedirects/0002-ntdll-Move-logic-to-read-loadorder-registry-values-i.patch) - $(call APPLY_FILE,ntdll-DllRedirects/0003-ntdll-Move-code-to-determine-module-basename-into-se.patch) - $(call APPLY_FILE,ntdll-DllRedirects/0004-ntdll-Implement-get_redirect-function.patch) - $(call APPLY_FILE,ntdll-DllRedirects/0005-ntdll-Implement-loader-redirection-scheme.patch) - @( \ - echo '+ { "Michael Müller", "ntdll: Move logic to determine loadorder HKCU/app key into separate functions.", 1 },'; \ - echo '+ { "Michael Müller", "ntdll: Move logic to read loadorder registry values into separate function.", 1 },'; \ - echo '+ { "Michael Müller", "ntdll: Move code to determine module basename into separate function.", 1 },'; \ - echo '+ { "Michael Müller", "ntdll: Implement get_redirect function.", 1 },'; \ - echo '+ { "Michael Müller", "ntdll: Implement loader redirection scheme.", 1 },'; \ - ) > ntdll-DllRedirects.ok - -# Patchset ntdll-Dynamic_DST -# | -# | This patchset fixes the following Wine bugs: -# | * [#36374] Add Dynamic DST exceptions for Israel Standard Time -# | -# | Modified files: -# | * dlls/ntdll/time.c, loader/wine.inf.in -# | -.INTERMEDIATE: ntdll-Dynamic_DST.ok -ntdll-Dynamic_DST.ok: - $(call APPLY_FILE,ntdll-Dynamic_DST/0001-ntdll-Add-support-for-Dynamic-DST-daylight-saving-ti.patch) - $(call APPLY_FILE,ntdll-Dynamic_DST/0002-wine.inf-Add-Dynamic-DST-exceptions-for-Israel-Stand.patch) - @( \ - echo '+ { "Michael Müller", "ntdll: Add support for Dynamic DST (daylight saving time) information in registry.", 1 },'; \ - echo '+ { "Sebastian Lackner", "wine.inf: Add Dynamic DST exceptions for Israel Standard Time.", 1 },'; \ - ) > ntdll-Dynamic_DST.ok - -# Patchset ntdll-Exception -# | -# | Modified files: -# | * dlls/kernel32/debugger.c, dlls/ntdll/om.c, dlls/ntdll/tests/exception.c -# | -.INTERMEDIATE: ntdll-Exception.ok -ntdll-Exception.ok: - $(call APPLY_FILE,ntdll-Exception/0001-ntdll-Throw-exception-if-invalid-handle-is-passed-to.patch) - $(call APPLY_FILE,ntdll-Exception/0002-ntdll-OutputDebugString-should-throw-the-exception-a.patch) - @( \ - echo '+ { "Sebastian Lackner", "ntdll: Throw exception if invalid handle is passed to NtClose and debugger enabled.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll: OutputDebugString should throw the exception a second time, if a debugger is attached.", 1 },'; \ - ) > ntdll-Exception.ok - -# Patchset ntdll-FD_Cache -# | -# | Modified files: -# | * dlls/ntdll/server.c -# | -.INTERMEDIATE: ntdll-FD_Cache.ok -ntdll-FD_Cache.ok: - $(call APPLY_FILE,ntdll-FD_Cache/0001-ntdll-Use-lockfree-implementation-for-get_cached_fd.patch) - @( \ - echo '+ { "Sebastian Lackner", "ntdll: Use lockfree implementation for get_cached_fd.", 5 },'; \ - ) > ntdll-FD_Cache.ok - -# Patchset ntdll-FileDispositionInformation -# | -# | This patchset fixes the following Wine bugs: -# | * [#30397] Support for NtSetInformationFile class FileDispositionInformation -# | -# | Modified files: -# | * dlls/ntdll/file.c, dlls/ntdll/tests/file.c, server/fd.c, server/file.c, server/file.h, server/protocol.def -# | -.INTERMEDIATE: ntdll-FileDispositionInformation.ok -ntdll-FileDispositionInformation.ok: - $(call APPLY_FILE,ntdll-FileDispositionInformation/0001-server-Keep-a-pointer-to-parent-s-fd-unix_name-in-th.patch) - $(call APPLY_FILE,ntdll-FileDispositionInformation/0002-server-Add-support-for-setting-file-disposition-info.patch) - $(call APPLY_FILE,ntdll-FileDispositionInformation/0003-server-Do-not-permit-FileDispositionInformation-to-d.patch) - @( \ - echo '+ { "Dmitry Timoshkov", "server: Keep a pointer to parent'\''s fd unix_name in the closed_fd structure.", 1 },'; \ - echo '+ { "Dmitry Timoshkov", "server: Add support for setting file disposition information.", 1 },'; \ - echo '+ { "Erich E. Hoover", "server: Do not permit FileDispositionInformation to delete a file without write access.", 1 },'; \ - ) > ntdll-FileDispositionInformation.ok - -# Patchset ntdll-Fix_Alignment -# | -# | This patchset fixes the following Wine bugs: -# | * [#33162] Ensure NtProtectVirtualMemory and NtCreateSection are on separate pages -# | -# | Modified files: -# | * dlls/ntdll/virtual.c -# | -.INTERMEDIATE: ntdll-Fix_Alignment.ok -ntdll-Fix_Alignment.ok: - $(call APPLY_FILE,ntdll-Fix_Alignment/0001-ntdll-Move-NtProtectVirtualMemory-and-NtCreateSectio.patch) - @( \ - echo '+ { "Michael Müller", "ntdll: Move NtProtectVirtualMemory and NtCreateSection to separate pages on x86.", 2 },'; \ - ) > ntdll-Fix_Alignment.ok - -# Patchset ntdll-Fix_Free -# | -# | Modified files: -# | * dlls/kernel32/path.c -# | -.INTERMEDIATE: ntdll-Fix_Free.ok -ntdll-Fix_Free.ok: - $(call APPLY_FILE,ntdll-Fix_Free/0001-kernel32-Fix-leaking-directory-handle-in-RemoveDirec.patch) - @( \ - echo '+ { "Sebastian Lackner", "kernel32: Fix leaking directory handle in RemoveDirectoryW.", 2 },'; \ - ) > ntdll-Fix_Free.ok - -# Patchset ntdll-Heap_FreeLists -# | -# | Modified files: -# | * dlls/ntdll/heap.c -# | -.INTERMEDIATE: ntdll-Heap_FreeLists.ok -ntdll-Heap_FreeLists.ok: - $(call APPLY_FILE,ntdll-Heap_FreeLists/0001-ntdll-Improve-heap-allocation-performance-by-using-m.patch) - @( \ - echo '+ { "Steaphan Greene", "ntdll: Improve heap allocation performance by using more fine-grained free lists.", 1 },'; \ - ) > ntdll-Heap_FreeLists.ok - -# Patchset ntdll-Junction_Points -# | -# | This patchset fixes the following Wine bugs: -# | * [#12401] Support for Junction Points -# | -# | Modified files: -# | * dlls/kernel32/path.c, dlls/kernel32/volume.c, dlls/ntdll/file.c, dlls/ntdll/tests/file.c, include/Makefile.in, -# | include/ntifs.h -# | -.INTERMEDIATE: ntdll-Junction_Points.ok -ntdll-Junction_Points.ok: ntdll-Fix_Free.ok - $(call APPLY_FILE,ntdll-Junction_Points/0001-ntdll-Add-support-for-junction-point-creation.patch) - $(call APPLY_FILE,ntdll-Junction_Points/0002-ntdll-Add-support-for-reading-junction-points.patch) - $(call APPLY_FILE,ntdll-Junction_Points/0003-ntdll-Add-support-for-deleting-junction-points.patch) - $(call APPLY_FILE,ntdll-Junction_Points/0004-ntdll-Add-a-test-for-junction-point-advertisement.patch) - $(call APPLY_FILE,ntdll-Junction_Points/0005-kernel32-ntdll-Add-support-for-deleting-junction-poi.patch) - $(call APPLY_FILE,ntdll-Junction_Points/0006-kernel32-Advertise-junction-point-support.patch) - $(call APPLY_FILE,ntdll-Junction_Points/0007-ntdll-tests-Add-test-for-deleting-junction-point-tar.patch) - @( \ - echo '+ { "Erich E. Hoover", "ntdll: Add support for junction point creation.", 1 },'; \ - echo '+ { "Erich E. Hoover", "ntdll: Add support for reading junction points.", 1 },'; \ - echo '+ { "Erich E. Hoover", "ntdll: Add support for deleting junction points.", 1 },'; \ - echo '+ { "Erich E. Hoover", "ntdll: Add a test for junction point advertisement.", 1 },'; \ - echo '+ { "Erich E. Hoover", "kernel32,ntdll: Add support for deleting junction points with RemoveDirectory.", 1 },'; \ - echo '+ { "Erich E. Hoover", "kernel32: Advertise junction point support.", 1 },'; \ - echo '+ { "Erich E. Hoover", "ntdll/tests: Add test for deleting junction point target.", 1 },'; \ - ) > ntdll-Junction_Points.ok - -# Patchset ntdll-LZNT1_Compression -# | -# | This patchset fixes the following Wine bugs: -# | * [#37449] Support for RtlDecompressBuffer -# | -# | Modified files: -# | * dlls/ntdll/ntdll.spec, dlls/ntdll/rtl.c, dlls/ntdll/tests/rtl.c, dlls/ntoskrnl.exe/ntoskrnl.exe.spec, include/winnt.h -# | -.INTERMEDIATE: ntdll-LZNT1_Compression.ok -ntdll-LZNT1_Compression.ok: - $(call APPLY_FILE,ntdll-LZNT1_Compression/0001-ntdll-Implement-semi-stub-for-RtlGetCompressionWorkS.patch) - $(call APPLY_FILE,ntdll-LZNT1_Compression/0002-ntdll-Implement-semi-stub-for-RtlCompressBuffer.patch) - $(call APPLY_FILE,ntdll-LZNT1_Compression/0003-ntdll-Implement-LZNT1-algorithm-for-RtlDecompressBuf.patch) - $(call APPLY_FILE,ntdll-LZNT1_Compression/0004-ntdll-tests-Add-tests-for-Rtl-Decompress-Compress-Bu.patch) - @( \ - echo '+ { "Sebastian Lackner", "ntdll: Implement semi-stub for RtlGetCompressionWorkSpaceSize.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll: Implement semi-stub for RtlCompressBuffer.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll: Implement LZNT1 algorithm for RtlDecompressBuffer.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll/tests: Add tests for Rtl[Decompress|Compress]Buffer and RtlGetCompressionWorkSpaceSize.", 1 },'; \ - ) > ntdll-LZNT1_Compression.ok - -# Patchset ntdll-NtQuerySection -# | -# | This patchset fixes the following Wine bugs: -# | * [#37338] Support for NtQuerySection -# | -# | Modified files: -# | * dlls/kernel32/tests/virtual.c, dlls/ntdll/nt.c, dlls/ntdll/ntdll.spec, dlls/ntdll/virtual.c, include/winternl.h, -# | server/mapping.c, server/protocol.def -# | -.INTERMEDIATE: ntdll-NtQuerySection.ok -ntdll-NtQuerySection.ok: - $(call APPLY_FILE,ntdll-NtQuerySection/0001-include-Fix-definition-of-SECTION_BASIC_INFORMATION-.patch) - $(call APPLY_FILE,ntdll-NtQuerySection/0002-ntdll-Implement-NtQuerySection.patch) - $(call APPLY_FILE,ntdll-NtQuerySection/0003-kernel32-tests-Add-tests-for-NtQuerySection.patch) - @( \ - echo '+ { "Dmitry Timoshkov", "include: Fix definition of SECTION_BASIC_INFORMATION and SECTION_IMAGE_INFORMATION.", 1 },'; \ - echo '+ { "Dmitry Timoshkov", "ntdll: Implement NtQuerySection.", 2 },'; \ - echo '+ { "Dmitry Timoshkov", "kernel32/tests: Add tests for NtQuerySection.", 2 },'; \ - ) > ntdll-NtQuerySection.ok - -# Patchset ntdll-NtSetLdtEntries -# | -# | This patchset fixes the following Wine bugs: -# | * [#26268] Add stub for NtSetLdtEntries/ZwSetLdtEntries -# | -# | Modified files: -# | * dlls/ntdll/nt.c, dlls/ntdll/ntdll.spec, include/ddk/wdm.h, include/winternl.h -# | -.INTERMEDIATE: ntdll-NtSetLdtEntries.ok -ntdll-NtSetLdtEntries.ok: - $(call APPLY_FILE,ntdll-NtSetLdtEntries/0001-ntdll-add-NtSetLdtEntries-ZwSetLdtEntries-stub-try-2.patch) - @( \ - echo '+ { "Austin English", "ntdll: add NtSetLdtEntries/ZwSetLdtEntries stub.", 2 },'; \ - ) > ntdll-NtSetLdtEntries.ok - -# Patchset ntdll-Pipe_SpecialCharacters -# | -# | This patchset fixes the following Wine bugs: -# | * [#28995] Allow special characters in pipe names -# | -# | Modified files: -# | * dlls/kernel32/tests/pipe.c, dlls/ntdll/directory.c -# | -.INTERMEDIATE: ntdll-Pipe_SpecialCharacters.ok -ntdll-Pipe_SpecialCharacters.ok: - $(call APPLY_FILE,ntdll-Pipe_SpecialCharacters/0001-ntdll-Allow-special-characters-in-pipe-names.patch) - @( \ - echo '+ { "Michael Müller", "ntdll: Allow special characters in pipe names.", 1 },'; \ - ) > ntdll-Pipe_SpecialCharacters.ok - -# Patchset ntdll-RtlIpv4StringToAddressExA -# | -# | Modified files: -# | * dlls/ntdll/tests/rtl.c -# | -.INTERMEDIATE: ntdll-RtlIpv4StringToAddressExA.ok -ntdll-RtlIpv4StringToAddressExA.ok: - $(call APPLY_FILE,ntdll-RtlIpv4StringToAddressExA/0001-ntdll-tests-Add-tests-for-RtlIpv4StringToAddressExA.patch) - @( \ - echo '+ { "Sebastian Lackner", "ntdll/tests: Add tests for RtlIpv4StringToAddressExA.", 1 },'; \ - ) > ntdll-RtlIpv4StringToAddressExA.ok - -# Patchset ntdll-ThreadTime -# | -# | This patchset fixes the following Wine bugs: -# | * [#20230] Return correct values for GetThreadTimes function -# | -# | Modified files: -# | * dlls/ntdll/thread.c, server/protocol.def, server/thread.c -# | -.INTERMEDIATE: ntdll-ThreadTime.ok -ntdll-ThreadTime.ok: - $(call APPLY_FILE,ntdll-ThreadTime/0001-ntdll-Return-correct-values-in-GetThreadTimes-for-al.patch) - @( \ - echo '+ { "Sebastian Lackner", "ntdll: Return correct values in GetThreadTimes() for all threads.", 1 },'; \ - ) > ntdll-ThreadTime.ok - -# Patchset ntdll-User_Shared_Data -# | -# | Modified files: -# | * dlls/ntdll/ntdll.spec, dlls/ntdll/thread.c -# | -.INTERMEDIATE: ntdll-User_Shared_Data.ok -ntdll-User_Shared_Data.ok: - $(call APPLY_FILE,ntdll-User_Shared_Data/0001-ntdll-Move-code-to-update-user-shared-data-into-a-se.patch) - @( \ - echo '+ { "Sebastian Lackner", "ntdll: Move code to update user shared data into a separate function.", 1 },'; \ - ) > ntdll-User_Shared_Data.ok - -# Patchset ntdll-WRITECOPY -# | -# | This patchset fixes the following Wine bugs: -# | * [#29384] Voobly expects correct handling of WRITECOPY memory protection -# | -# | Modified files: -# | * dlls/advapi32/crypt.c, dlls/kernel32/tests/virtual.c, dlls/ntdll/ntdll_misc.h, dlls/ntdll/server.c, -# | dlls/ntdll/signal_arm.c, dlls/ntdll/signal_arm64.c, dlls/ntdll/signal_i386.c, dlls/ntdll/signal_powerpc.c, -# | dlls/ntdll/signal_x86_64.c, dlls/ntdll/thread.c, dlls/ntdll/virtual.c -# | -.INTERMEDIATE: ntdll-WRITECOPY.ok -ntdll-WRITECOPY.ok: ws2_32-WriteWatches.ok - $(call APPLY_FILE,ntdll-WRITECOPY/0001-ntdll-Trigger-write-watches-before-passing-userdata-.patch) - $(call APPLY_FILE,ntdll-WRITECOPY/0002-advapi-Trigger-write-watches-before-passing-userdata.patch) - $(call APPLY_FILE,ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch) - $(call APPLY_FILE,ntdll-WRITECOPY/0004-ntdll-Properly-handle-PAGE_WRITECOPY-protection.-try.patch) - $(call APPLY_FILE,ntdll-WRITECOPY/0005-ntdll-Only-enable-true-WRITECOPY-protection-when-a-s.patch) - @( \ - echo '+ { "Sebastian Lackner", "ntdll: Trigger write watches before passing userdata pointer to wait_reply.", 1 },'; \ - echo '+ { "Sebastian Lackner", "advapi: Trigger write watches before passing userdata pointer to read syscall.", 1 },'; \ - echo '+ { "Michael Müller", "ntdll: Setup a temporary signal handler during process startup to handle page faults.", 1 },'; \ - echo '+ { "Michael Müller", "ntdll: Properly handle PAGE_WRITECOPY protection.", 5 },'; \ - echo '+ { "Michael Müller", "ntdll: Only enable true WRITECOPY protection when a special environment variable is set.", 1 },'; \ - ) > ntdll-WRITECOPY.ok - -# Patchset ntdll-WinSqm -# | -# | This patchset fixes the following Wine bugs: -# | * [#31971] ntdll is missing WinSqm[Start|End]Session implementation -# | -# | Modified files: -# | * dlls/ntdll/ntdll.spec, dlls/ntdll/rtl.c, dlls/ntdll/tests/rtl.c -# | -.INTERMEDIATE: ntdll-WinSqm.ok -ntdll-WinSqm.ok: - $(call APPLY_FILE,ntdll-WinSqm/0001-ntdll-Add-stubs-for-WinSqmStartSession-WinSqmEndSess.patch) - @( \ - echo '+ { "Erich E. Hoover", "ntdll: Add stubs for WinSqmStartSession / WinSqmEndSession.", 1 },'; \ - ) > ntdll-WinSqm.ok - -# Patchset ntoskrnl-Emulator -# | -# | This patchset fixes the following Wine bugs: -# | * [#33849] Emulate access to KI_USER_SHARED_DATA kernel page on x86_64 -# | -# | Modified files: -# | * dlls/ntoskrnl.exe/instr.c, dlls/ntoskrnl.exe/ntoskrnl.c -# | -.INTERMEDIATE: ntoskrnl-Emulator.ok -ntoskrnl-Emulator.ok: ntdll-User_Shared_Data.ok - $(call APPLY_FILE,ntoskrnl-Emulator/0001-ntoskrnl-Emulate-mov-Eb-Gb-instruction-on-x86-proces.patch) - $(call APPLY_FILE,ntoskrnl-Emulator/0002-ntoskrnl-Emulate-memory-access-to-KI_USER_SHARED_DAT.patch) - $(call APPLY_FILE,ntoskrnl-Emulator/0003-ntoskrnl-Add-TRACEs-for-instruction-emulator-on-x86_.patch) - @( \ - echo '+ { "Sebastian Lackner", "ntoskrnl: Emulate '\''mov Eb, Gb'\'' instruction on x86 processor architecture.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntoskrnl: Emulate memory access to KI_USER_SHARED_DATA on x86_64.", 2 },'; \ - echo '+ { "Sebastian Lackner", "ntoskrnl: Add TRACEs for instruction emulator on x86_64 to simplify debugging.", 1 },'; \ - ) > ntoskrnl-Emulator.ok - -# Patchset ntoskrnl-Irp_Status -# | -# | This patchset fixes the following Wine bugs: -# | * [#30155] Fix issues when driver dispatch routine returns different status codes -# | -# | Modified files: -# | * dlls/ntoskrnl.exe/ntoskrnl.c -# | -.INTERMEDIATE: ntoskrnl-Irp_Status.ok -ntoskrnl-Irp_Status.ok: - $(call APPLY_FILE,ntoskrnl-Irp_Status/0001-ntoskrnl-Handle-issues-when-driver-returns-two-diffe.patch) - @( \ - echo '+ { "Sebastian Lackner", "ntoskrnl: Handle issues when driver returns two different status codes from dispatcher.", 1 },'; \ - ) > ntoskrnl-Irp_Status.ok - -# Patchset ntoskrnl-Stub_FileObject -# | -# | This patchset fixes the following Wine bugs: -# | * [#37537] Initialize irp.Tail.Overlay.OriginalFileObject with stub file object -# | -# | Modified files: -# | * dlls/ntoskrnl.exe/ntoskrnl.c -# | -.INTERMEDIATE: ntoskrnl-Stub_FileObject.ok -ntoskrnl-Stub_FileObject.ok: - $(call APPLY_FILE,ntoskrnl-Stub_FileObject/0001-ntoskrnl-Initialize-irp.Tail.Overlay.OriginalFileObj.patch) - @( \ - echo '+ { "Sebastian Lackner", "ntoskrnl: Initialize irp.Tail.Overlay.OriginalFileObject with stub file object.", 1 },'; \ - ) > ntoskrnl-Stub_FileObject.ok - -# Patchset nvcuda-CUDA_Support -# | -# | Modified files: -# | * configure.ac, dlls/nvcuda/Makefile.in, dlls/nvcuda/internal.c, dlls/nvcuda/nvcuda.c, dlls/nvcuda/nvcuda.h, -# | dlls/nvcuda/nvcuda.rc, dlls/nvcuda/nvcuda.spec, dlls/nvcuda/tests/Makefile.in, dlls/nvcuda/tests/nvcuda.c, -# | include/Makefile.in, include/cuda.h -# | -.INTERMEDIATE: nvcuda-CUDA_Support.ok -nvcuda-CUDA_Support.ok: - $(call APPLY_FILE,nvcuda-CUDA_Support/0001-include-Add-cuda.h.h.patch) - $(call APPLY_FILE,nvcuda-CUDA_Support/0002-nvcuda-Add-stub-dll.patch) - $(call APPLY_FILE,nvcuda-CUDA_Support/0003-nvcuda-First-implementation.patch) - $(call APPLY_FILE,nvcuda-CUDA_Support/0004-nvcuda-Add-Unknown5-internal-interface.patch) - $(call APPLY_FILE,nvcuda-CUDA_Support/0005-nvcuda-Emulate-two-d3d9-initialization-functions.patch) - @( \ - echo '+ { "Sebastian Lackner", "include: Add cuda.h.h.", 1 },'; \ - echo '+ { "Sebastian Lackner", "nvcuda: Add stub dll.", 1 },'; \ - echo '+ { "Michael Müller", "nvcuda: First implementation.", 1 },'; \ - echo '+ { "Michael Müller", "nvcuda: Add Unknown5 internal interface.", 1 },'; \ - echo '+ { "Michael Müller", "nvcuda: Emulate two d3d9 initialization functions.", 1 },'; \ - ) > nvcuda-CUDA_Support.ok - -# Patchset ole32-CoWaitForMultipleHandles -# | -# | Modified files: -# | * dlls/ole32/tests/compobj.c -# | -.INTERMEDIATE: ole32-CoWaitForMultipleHandles.ok -ole32-CoWaitForMultipleHandles.ok: - $(call APPLY_FILE,ole32-CoWaitForMultipleHandles/0001-ole32-tests-Add-additional-tests-for-CoWaitForMultip.patch) - @( \ - echo '+ { "Sebastian Lackner", "ole32/tests: Add additional tests for CoWaitForMultipleHandles and WM_QUIT.", 1 },'; \ - ) > ole32-CoWaitForMultipleHandles.ok - -# Patchset quartz-MediaSeeking_Positions -# | -# | This patchset fixes the following Wine bugs: -# | * [#23174] Return correct IMediaSeeking stream positions in quartz -# | -# | Modified files: -# | * dlls/quartz/filtergraph.c -# | -.INTERMEDIATE: quartz-MediaSeeking_Positions.ok -quartz-MediaSeeking_Positions.ok: - $(call APPLY_FILE,quartz-MediaSeeking_Positions/0001-quartz-Include-the-stream-position-in-addition-to-th.patch) - $(call APPLY_FILE,quartz-MediaSeeking_Positions/0002-quartz-Implement-MediaSeeking_GetCurrentPosition-on-.patch) - $(call APPLY_FILE,quartz-MediaSeeking_Positions/0003-quartz-Implement-MediaSeeking_GetStopPosition-on-top.patch) - $(call APPLY_FILE,quartz-MediaSeeking_Positions/0004-quartz-Remove-unused-cache-of-MediaSeeking-stop-posi.patch) - @( \ - echo '+ { "Erich E. Hoover", "quartz: Include the stream position in addition to the reference clock offset in the time returned by MediaSeeking_GetPositions.", 1 },'; \ - echo '+ { "Erich E. Hoover", "quartz: Implement MediaSeeking_GetCurrentPosition on top of MediaSeeking_GetPositions.", 1 },'; \ - echo '+ { "Erich E. Hoover", "quartz: Implement MediaSeeking_GetStopPosition on top of MediaSeeking_GetPositions.", 1 },'; \ - echo '+ { "Erich E. Hoover", "quartz: Remove unused cache of MediaSeeking stop position.", 1 },'; \ - ) > quartz-MediaSeeking_Positions.ok - -# Patchset riched20-IText_Interface -# | -# | This patchset fixes the following Wine bugs: -# | * [#12458] Support for ITextDocument_fnRange function -# | * [#18303] Support for ITextRange, ITextFont and ITextPara -# | -# | Modified files: -# | * dlls/riched20/richole.c, dlls/riched20/run.c, dlls/riched20/tests/richole.c -# | -.INTERMEDIATE: riched20-IText_Interface.ok -riched20-IText_Interface.ok: - $(call APPLY_FILE,riched20-IText_Interface/0001-riched20-Implement-IText-Selection-Range-Set-Start-E.patch) - $(call APPLY_FILE,riched20-IText_Interface/0002-riched20-Stub-for-ITextFont-interface-and-implement-.patch) - $(call APPLY_FILE,riched20-IText_Interface/0003-riched20-Stub-for-ITextPara-interface-and-implement-.patch) - $(call APPLY_FILE,riched20-IText_Interface/0004-riched20-Fix-ME_RunOfsFromCharOfs-when-nCharOfs-strl.patch) - $(call APPLY_FILE,riched20-IText_Interface/0005-riched20-Implement-ITextRange-GetText.patch) - $(call APPLY_FILE,riched20-IText_Interface/0006-riched20-Implement-ITextRange-SetRange.patch) - $(call APPLY_FILE,riched20-IText_Interface/0007-riched20-Implement-ITextRange-IsEqual.patch) - $(call APPLY_FILE,riched20-IText_Interface/0008-riched20-Implement-ITextRange-GetStoryLength.patch) - $(call APPLY_FILE,riched20-IText_Interface/0009-riched20-Implement-ITextSelection-GetStoryLength.patch) - $(call APPLY_FILE,riched20-IText_Interface/0010-riched20-Fix-invalid-memory-access-when-parent-objec.patch) - $(call APPLY_FILE,riched20-IText_Interface/0011-riched20-Silence-repeated-FIXMEs-triggered-by-Adobe-.patch) - $(call APPLY_FILE,riched20-IText_Interface/0012-riched20-Implement-ITextSelection_fnGetDuplicate.patch) - @( \ - echo '+ { "Jactry Zeng", "riched20: Implement IText{Selection, Range}::Set{Start, End}.", 1 },'; \ - echo '+ { "Jactry Zeng", "riched20: Stub for ITextFont interface and implement ITextRange::GetFont and ITextSelection::GetFont.", 1 },'; \ - echo '+ { "Jactry Zeng", "riched20: Stub for ITextPara interface and implement ITextRange::GetPara.", 1 },'; \ - echo '+ { "Jactry Zeng", "riched20: Fix ME_RunOfsFromCharOfs() when nCharOfs > strlen().", 1 },'; \ - echo '+ { "Jactry Zeng", "riched20: Implement ITextRange::GetText.", 1 },'; \ - echo '+ { "Jactry Zeng", "riched20: Implement ITextRange::SetRange.", 1 },'; \ - echo '+ { "Jactry Zeng", "riched20: Implement ITextRange::IsEqual.", 1 },'; \ - echo '+ { "Jactry Zeng", "riched20: Implement ITextRange::GetStoryLength.", 1 },'; \ - echo '+ { "Jactry Zeng", "riched20: Implement ITextSelection::GetStoryLength.", 1 },'; \ - echo '+ { "Sebastian Lackner", "riched20: Fix invalid memory access when parent object was destroyed earlier than child object.", 1 },'; \ - echo '+ { "Sebastian Lackner", "riched20: Silence repeated FIXMEs triggered by Adobe Reader.", 1 },'; \ - echo '+ { "Sebastian Lackner", "riched20: Implement ITextSelection_fnGetDuplicate.", 1 },'; \ - ) > riched20-IText_Interface.ok - -# Patchset secur32-Schannel_ContextAttr -# | -# | This patchset fixes the following Wine bugs: -# | * [#37527] Return more context attributes in schan_InitializeSecurityContextW -# | -# | Modified files: -# | * dlls/secur32/schannel.c -# | -.INTERMEDIATE: secur32-Schannel_ContextAttr.ok -secur32-Schannel_ContextAttr.ok: - $(call APPLY_FILE,secur32-Schannel_ContextAttr/0001-secur32-Return-more-context-attributes-in-schan_Init.patch) - @( \ - echo '+ { "Sebastian Lackner", "secur32: Return more context attributes in schan_InitializeSecurityContextW.", 1 },'; \ - ) > secur32-Schannel_ContextAttr.ok - -# Patchset server-ACL_Compat -# | -# | Modified files: -# | * server/file.c -# | -.INTERMEDIATE: server-ACL_Compat.ok -server-ACL_Compat.ok: server-Inherited_ACLs.ok - $(call APPLY_FILE,server-ACL_Compat/0001-server-Add-compatibility-code-for-handling-the-old-m.patch) - @( \ - echo '+ { "Erich E. Hoover", "server: Add compatibility code for handling the old method of storing ACLs.", 6 },'; \ - ) > server-ACL_Compat.ok - -# Patchset server-Address_Change_Notification -# | -# | This patchset fixes the following Wine bugs: -# | * [#32328] Support for interface change notifications -# | -# | Modified files: -# | * Makefile.in, dlls/ws2_32/tests/sock.c, server/event.c, server/named_pipe.c, server/object.h, server/sock.c -# | -.INTERMEDIATE: server-Address_Change_Notification.ok -server-Address_Change_Notification.ok: - $(call APPLY_FILE,server-Address_Change_Notification/0001-server-Implement-socket-specific-ioctl-routine.patch) - $(call APPLY_FILE,server-Address_Change_Notification/0002-server-Add-socket-side-support-for-the-interface-cha.patch) - $(call APPLY_FILE,server-Address_Change_Notification/0003-server-Add-blocked-support-for-SIO_ADDRESS_LIST_CHAN.patch) - $(call APPLY_FILE,server-Address_Change_Notification/0004-server-Implement-the-interface-change-notification-o.patch) - $(call APPLY_FILE,server-Address_Change_Notification/0005-ws2_32-Add-an-interactive-test-for-interface-change-.patch) - @( \ - echo '+ { "Erich E. Hoover", "server: Implement socket-specific ioctl() routine.", 1 },'; \ - echo '+ { "Erich E. Hoover", "server: Add socket-side support for the interface change notification object.", 1 },'; \ - echo '+ { "Erich E. Hoover", "server: Add blocked support for SIO_ADDRESS_LIST_CHANGE ioctl().", 1 },'; \ - echo '+ { "Erich E. Hoover", "server: Implement the interface change notification object.", 2 },'; \ - echo '+ { "Erich E. Hoover", "ws2_32: Add an interactive test for interface change notifications.", 1 },'; \ - ) > server-Address_Change_Notification.ok - -# Patchset server-CreateProcess_ACLs -# | -# | This patchset fixes the following Wine bugs: -# | * [#22006] Support for process ACLs -# | -# | Modified files: -# | * dlls/advapi32/tests/security.c, dlls/kernel32/process.c, server/process.c, server/protocol.def -# | -.INTERMEDIATE: server-CreateProcess_ACLs.ok -server-CreateProcess_ACLs.ok: - $(call APPLY_FILE,server-CreateProcess_ACLs/0001-server-Support-for-thread-and-process-security-descr.patch) - $(call APPLY_FILE,server-CreateProcess_ACLs/0002-kernel32-Implement-passing-security-descriptors-from.patch) - $(call APPLY_FILE,server-CreateProcess_ACLs/0003-advapi32-tests-Add-additional-tests-for-passing-a-th.patch) - @( \ - echo '+ { "Sebastian Lackner", "server: Support for thread and process security descriptors in new_process wineserver call.", 2 },'; \ - echo '+ { "Sebastian Lackner", "kernel32: Implement passing security descriptors from CreateProcess to the wineserver.", 2 },'; \ - echo '+ { "Joris van der Wel", "advapi32/tests: Add additional tests for passing a thread sd to CreateProcess.", 1 },'; \ - ) > server-CreateProcess_ACLs.ok - -# Patchset server-Inherited_ACLs -# | -# | This patchset fixes the following Wine bugs: -# | * [#34406] Support for inherited file ACLs -# | -# | Modified files: -# | * dlls/advapi32/tests/security.c, include/winnt.h, server/fd.c, server/file.c, server/file.h -# | -.INTERMEDIATE: server-Inherited_ACLs.ok -server-Inherited_ACLs.ok: server-Stored_ACLs.ok - $(call APPLY_FILE,server-Inherited_ACLs/0001-server-Inherit-security-attributes-from-parent-direc.patch) - $(call APPLY_FILE,server-Inherited_ACLs/0002-server-Inherit-security-attributes-from-parent-direc.patch) - @( \ - echo '+ { "Erich E. Hoover", "server: Inherit security attributes from parent directories on creation.", 7 },'; \ - echo '+ { "Erich E. Hoover", "server: Inherit security attributes from parent directories on SetSecurityInfo.", 7 },'; \ - ) > server-Inherited_ACLs.ok - -# Patchset server-Misc_ACL -# | -# | This patchset fixes the following Wine bugs: -# | * [#15980] GetSecurityInfo returns NULL DACL for process object -# | -# | Modified files: -# | * dlls/advapi32/tests/security.c, server/process.c, server/security.h, server/token.c -# | -.INTERMEDIATE: server-Misc_ACL.ok -server-Misc_ACL.ok: - $(call APPLY_FILE,server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch) - $(call APPLY_FILE,server-Misc_ACL/0002-server-Add-default-security-descriptor-DACL-for-proc.patch) - @( \ - echo '+ { "Erich E. Hoover", "server: Add default security descriptor ownership for processes.", 1 },'; \ - echo '+ { "Erich E. Hoover", "server: Add default security descriptor DACL for processes.", 1 },'; \ - ) > server-Misc_ACL.ok - -# Patchset server-OpenProcess -# | -# | This patchset fixes the following Wine bugs: -# | * [#37087] Return an error when trying to open a terminated process -# | -# | Modified files: -# | * server/process.c, server/process.h -# | -.INTERMEDIATE: server-OpenProcess.ok -server-OpenProcess.ok: - $(call APPLY_FILE,server-OpenProcess/0001-server-Return-error-when-opening-a-terminating-proce.patch) - @( \ - echo '+ { "Michael Müller", "server: Return error when opening a terminating process.", 3 },'; \ - ) > server-OpenProcess.ok - -# Patchset server-Stored_ACLs -# | -# | This patchset fixes the following Wine bugs: -# | * [#31858] Support for stored file ACLs -# | -# | Modified files: -# | * dlls/advapi32/tests/security.c, include/wine/port.h, server/change.c, server/file.c, server/file.h -# | -.INTERMEDIATE: server-Stored_ACLs.ok -server-Stored_ACLs.ok: ntdll-DOS_Attributes.ok - $(call APPLY_FILE,server-Stored_ACLs/0001-server-Unify-the-storage-of-security-attributes-for-.patch) - $(call APPLY_FILE,server-Stored_ACLs/0002-server-Unify-the-retrieval-of-security-attributes-fo.patch) - $(call APPLY_FILE,server-Stored_ACLs/0003-server-Store-file-security-attributes-with-extended-.patch) - $(call APPLY_FILE,server-Stored_ACLs/0004-server-Store-user-and-group-inside-stored-extended-f.patch) - $(call APPLY_FILE,server-Stored_ACLs/0005-server-Retrieve-file-security-attributes-with-extend.patch) - $(call APPLY_FILE,server-Stored_ACLs/0006-server-Convert-return-of-file-security-masks-with-ge.patch) - @( \ - echo '+ { "Erich E. Hoover", "server: Unify the storage of security attributes for files and directories.", 7 },'; \ - echo '+ { "Erich E. Hoover", "server: Unify the retrieval of security attributes for files and directories.", 7 },'; \ - echo '+ { "Erich E. Hoover", "server: Store file security attributes with extended file attributes.", 7 },'; \ - echo '+ { "Erich E. Hoover", "server: Store user and group inside stored extended file attribute information.", 7 },'; \ - echo '+ { "Erich E. Hoover", "server: Retrieve file security attributes with extended file attributes.", 7 },'; \ - echo '+ { "Erich E. Hoover", "server: Convert return of file security masks with generic access mappings.", 7 },'; \ - ) > server-Stored_ACLs.ok - -# Patchset server-Unexpected_Wakeup -# | -# | Modified files: -# | * dlls/kernel32/tests/sync.c, server/thread.c -# | -.INTERMEDIATE: server-Unexpected_Wakeup.ok -server-Unexpected_Wakeup.ok: - $(call APPLY_FILE,server-Unexpected_Wakeup/0001-server-Avoid-sending-unexpected-wakeup-with-uninitia.patch) - $(call APPLY_FILE,server-Unexpected_Wakeup/0002-kernel32-tests-Repeat-test-for-SignalObjectAndWait-m.patch) - @( \ - echo '+ { "Sebastian Lackner", "server: Avoid sending unexpected wakeup with uninitialized cookie value.", 1 },'; \ - echo '+ { "Sebastian Lackner", "kernel32/tests: Repeat test for SignalObjectAndWait multiple times to test wineserver wakeup cookie management.", 1 },'; \ - ) > server-Unexpected_Wakeup.ok - -# Patchset setupapi-SetupPromptForDisk -# | -# | This patchset fixes the following Wine bugs: -# | * [#20465] Wine ignores IDF_CHECKFIRST flag in SetupPromptForDisk -# | -# | Modified files: -# | * dlls/setupapi/dialog.c, dlls/setupapi/tests/Makefile.in, dlls/setupapi/tests/dialog.c -# | -.INTERMEDIATE: setupapi-SetupPromptForDisk.ok -setupapi-SetupPromptForDisk.ok: - $(call APPLY_FILE,setupapi-SetupPromptForDisk/0001-setupapi-Add-support-for-IDF_CHECKFIRST-flag-in-Setu.patch) - $(call APPLY_FILE,setupapi-SetupPromptForDisk/0002-setupapi-tests-Add-test-for-IDF_CHECKFIRST-and-Setup.patch) - @( \ - echo '+ { "Michael Müller", "setupapi: Add support for IDF_CHECKFIRST flag in SetupPromptForDiskW.", 1 },'; \ - echo '+ { "Michael Müller", "setupapi/tests: Add test for IDF_CHECKFIRST and SetupPromptForDiskA/W.", 1 },'; \ - ) > setupapi-SetupPromptForDisk.ok - -# Patchset shdocvw-ParseURLFromOutsideSource_Tests -# | -# | Modified files: -# | * dlls/shdocvw/shdocvw_main.c, dlls/shdocvw/tests/shdocvw.c -# | -.INTERMEDIATE: shdocvw-ParseURLFromOutsideSource_Tests.ok -shdocvw-ParseURLFromOutsideSource_Tests.ok: - $(call APPLY_FILE,shdocvw-ParseURLFromOutsideSource_Tests/0001-shdocvw-Check-precisely-ParseURLFromOutsideSourceX-r.patch) - @( \ - echo '+ { "Christian Costa", "shdocvw: Check precisely ParseURLFromOutsideSourceX returned values in tests and make code clearer about that.", 3 },'; \ - ) > shdocvw-ParseURLFromOutsideSource_Tests.ok - -# Patchset shell32-Default_Folder_ACLs -# | -# | Modified files: -# | * dlls/shell32/shellpath.c -# | -.INTERMEDIATE: shell32-Default_Folder_ACLs.ok -shell32-Default_Folder_ACLs.ok: - $(call APPLY_FILE,shell32-Default_Folder_ACLs/0001-shell32-Set-the-default-security-attributes-for-user.patch) - @( \ - echo '+ { "Sebastian Lackner", "shell32: Set the default security attributes for user shell folders.", 7 },'; \ - ) > shell32-Default_Folder_ACLs.ok - -# Patchset shell32-Default_Path -# | -# | This patchset fixes the following Wine bugs: -# | * [#30385] Support for KF_FLAG_DEFAULT_PATH in SHGetKnownFolderPath -# | -# | Modified files: -# | * dlls/shell32/shellpath.c, dlls/shell32/tests/shellpath.c -# | -.INTERMEDIATE: shell32-Default_Path.ok -shell32-Default_Path.ok: - $(call APPLY_FILE,shell32-Default_Path/0001-shell32-Implement-KF_FLAG_DEFAULT_PATH-flag-for-SHGe.patch) - @( \ - echo '+ { "Sebastian Lackner", "shell32: Implement KF_FLAG_DEFAULT_PATH flag for SHGetKnownFolderPath.", 1 },'; \ - ) > shell32-Default_Path.ok - -# Patchset shell32-Icons -# | -# | This patchset fixes the following Wine bugs: -# | * [#24721] Support for extra large and jumbo icon lists in shell32 -# | -# | Modified files: -# | * dlls/shell32/iconcache.c, dlls/shell32/shell32_main.h, dlls/shell32/shellord.c -# | -.INTERMEDIATE: shell32-Icons.ok -shell32-Icons.ok: - $(call APPLY_FILE,shell32-Icons/0001-shell32-Add-support-for-extra-large-and-jumbo-icon-l.patch) - @( \ - echo '+ { "Michael Müller", "shell32: Add support for extra large and jumbo icon lists.", 1 },'; \ - ) > shell32-Icons.ok - -# Patchset shell32-RunDLL_CallEntry16 -# | -# | This patchset fixes the following Wine bugs: -# | * [#23033] Use manual relay for RunDLL_CallEntry16 in shell32 -# | -# | Modified files: -# | * dlls/shell32/control.c, dlls/shell32/shell32.spec -# | -.INTERMEDIATE: shell32-RunDLL_CallEntry16.ok -shell32-RunDLL_CallEntry16.ok: - $(call APPLY_FILE,shell32-RunDLL_CallEntry16/0001-shell32-Use-manual-redirection-for-RunDLL_CallEntry1.patch) - @( \ - echo '+ { "Michael Müller", "shell32: Use manual redirection for RunDLL_CallEntry16.", 1 },'; \ - ) > shell32-RunDLL_CallEntry16.ok - -# Patchset shell32-SHCreateSessionKey -# | -# | This patchset fixes the following Wine bugs: -# | * [#35630] Support for SHCreateSessionKey -# | -# | Modified files: -# | * dlls/shell32/shell32.spec, dlls/shell32/shellreg.c -# | -.INTERMEDIATE: shell32-SHCreateSessionKey.ok -shell32-SHCreateSessionKey.ok: - $(call APPLY_FILE,shell32-SHCreateSessionKey/0001-shell32-Implement-SHCreateSessionKey.patch) - @( \ - echo '+ { "Dmitry Timoshkov", "shell32: Implement SHCreateSessionKey.", 1 },'; \ - ) > shell32-SHCreateSessionKey.ok - -# Patchset shell32-SHFileOperation -# | -# | Modified files: -# | * dlls/shell32/shlfileop.c -# | -.INTERMEDIATE: shell32-SHFileOperation.ok -shell32-SHFileOperation.ok: - $(call APPLY_FILE,shell32-SHFileOperation/0001-shell32-Choose-return-value-for-SHFileOperationW-dep.patch) - @( \ - echo '+ { "Michael Müller", "shell32: Choose return value for SHFileOperationW depending on windows version.", 1 },'; \ - ) > shell32-SHFileOperation.ok - -# Patchset shlwapi-PathIsDirectoryEmptyW -# | -# | This patchset fixes the following Wine bugs: -# | * [#26272] Correctly treat '.' when checking for empty directories -# | -# | Modified files: -# | * dlls/shlwapi/path.c -# | -.INTERMEDIATE: shlwapi-PathIsDirectoryEmptyW.ok -shlwapi-PathIsDirectoryEmptyW.ok: - $(call APPLY_FILE,shlwapi-PathIsDirectoryEmptyW/0001-shlwapi-Correctly-treat-.-when-enumerating-files-in-.patch) - @( \ - echo '+ { "Michael Müller", "shlwapi: Correctly treat '\''.'\'' when enumerating files in PathIsDirectoryEmptyW.", 1 },'; \ - ) > shlwapi-PathIsDirectoryEmptyW.ok - -# Patchset shlwapi-UrlCombine -# | -# | Modified files: -# | * dlls/shlwapi/tests/url.c, dlls/shlwapi/url.c -# | -.INTERMEDIATE: shlwapi-UrlCombine.ok -shlwapi-UrlCombine.ok: - $(call APPLY_FILE,shlwapi-UrlCombine/0001-shlwapi-tests-Add-additional-tests-for-UrlCombine-and-.patch) - $(call APPLY_FILE,shlwapi-UrlCombine/0002-shlwapi-UrlCombineW-workaround-for-relative-paths.patch) - @( \ - echo '+ { "Sebastian Lackner", "shlwapi/tests: Add additional tests for UrlCombine and UrlCanonicalize.", 1 },'; \ - echo '+ { "Sebastian Lackner", "shlwapi: UrlCombineW workaround for relative paths.", 1 },'; \ - ) > shlwapi-UrlCombine.ok - -# Patchset slc-SLGetWindowsInformation -# | -# | This patchset fixes the following Wine bugs: -# | * [#36709] Support for SLGetWindowsInformationDWORD -# | -# | Modified files: -# | * configure.ac, dlls/ntdll/ntdll.spec, dlls/ntdll/reg.c, dlls/ntdll/tests/reg.c, dlls/slc/slc.c, -# | dlls/slc/tests/Makefile.in, dlls/slc/tests/slc.c, include/slerror.h, include/winternl.h, loader/wine.inf.in -# | -.INTERMEDIATE: slc-SLGetWindowsInformation.ok -slc-SLGetWindowsInformation.ok: - $(call APPLY_FILE,slc-SLGetWindowsInformation/0001-slc-tests-Add-tests-for-SLGetWindowsInformationDWORD.patch) - $(call APPLY_FILE,slc-SLGetWindowsInformation/0002-ntdll-tests-Add-tests-for-NtQueryLicenseKey.patch) - $(call APPLY_FILE,slc-SLGetWindowsInformation/0003-ntdll-Implement-Nt-Zw-QueryLicenseValue.patch) - $(call APPLY_FILE,slc-SLGetWindowsInformation/0004-slc-Implement-SLGetWindowsInformationDWORD.patch) - @( \ - echo '+ { "Sebastian Lackner", "slc/tests: Add tests for SLGetWindowsInformationDWORD.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll/tests: Add tests for NtQueryLicenseKey.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll: Implement [Nt|Zw]QueryLicenseValue.", 1 },'; \ - echo '+ { "Sebastian Lackner", "slc: Implement SLGetWindowsInformationDWORD.", 1 },'; \ - ) > slc-SLGetWindowsInformation.ok - -# Patchset urlmon-CoInternetSetFeatureEnabled -# | -# | This patchset fixes the following Wine bugs: -# | * [#35197] Ignore unsupported flags for CoInternetSetFeatureEnabled -# | -# | Modified files: -# | * dlls/urlmon/internet.c -# | -.INTERMEDIATE: urlmon-CoInternetSetFeatureEnabled.ok -urlmon-CoInternetSetFeatureEnabled.ok: - $(call APPLY_FILE,urlmon-CoInternetSetFeatureEnabled/0001-urlmon-Ignore-unsupported-flags-for-CoInternetSetFea.patch) - @( \ - echo '+ { "Bruno Jesus", "urlmon: Ignore unsupported flags for CoInternetSetFeatureEnabled.", 1 },'; \ - ) > urlmon-CoInternetSetFeatureEnabled.ok - -# Patchset user32-Dialog_Paint_Event -# | -# | This patchset fixes the following Wine bugs: -# | * [#35652] Send WM_PAINT event during dialog creation -# | -# | Modified files: -# | * dlls/user32/dialog.c -# | -.INTERMEDIATE: user32-Dialog_Paint_Event.ok -user32-Dialog_Paint_Event.ok: - $(call APPLY_FILE,user32-Dialog_Paint_Event/0001-user32-Call-UpdateWindow-during-DIALOG_CreateIndirec.patch) - @( \ - echo '+ { "Sebastian Lackner", "user32: Call UpdateWindow() during DIALOG_CreateIndirect.", 1 },'; \ - ) > user32-Dialog_Paint_Event.ok - -# Patchset user32-DrawTextExW -# | -# | This patchset fixes the following Wine bugs: -# | * [#22109] Fix handling of invert_y in DrawTextExW -# | -# | Modified files: -# | * dlls/user32/text.c -# | -.INTERMEDIATE: user32-DrawTextExW.ok -user32-DrawTextExW.ok: - $(call APPLY_FILE,user32-DrawTextExW/0001-user32-Fix-handling-of-invert_y-in-DrawTextExW.patch) - @( \ - echo '+ { "Sebastian Lackner", "user32: Fix handling of invert_y in DrawTextExW.", 1 },'; \ - ) > user32-DrawTextExW.ok - -# Patchset user32-GetRawInputDeviceList -# | -# | This patchset fixes the following Wine bugs: -# | * [#37667] Set last error when GetRawInputDeviceList fails -# | -# | Modified files: -# | * dlls/user32/input.c -# | -.INTERMEDIATE: user32-GetRawInputDeviceList.ok -user32-GetRawInputDeviceList.ok: - $(call APPLY_FILE,user32-GetRawInputDeviceList/0001-user32-Set-last-error-when-GetRawInputDeviceList-fai.patch) - @( \ - echo '+ { "Andrew Church", "user32: Set last error when GetRawInputDeviceList fails.", 1 },'; \ - ) > user32-GetRawInputDeviceList.ok - -# Patchset user32-GetSystemMetrics -# | -# | This patchset fixes the following Wine bugs: -# | * [#18732] Make it possible to change media center / tablet pc status -# | -# | Modified files: -# | * dlls/user32/sysparams.c -# | -.INTERMEDIATE: user32-GetSystemMetrics.ok -user32-GetSystemMetrics.ok: - $(call APPLY_FILE,user32-GetSystemMetrics/0001-user32-Allow-changing-the-tablet-media-center-status.patch) - @( \ - echo '+ { "Michael Müller", "user32: Allow changing the tablet / media center status via wine registry key.", 1 },'; \ - ) > user32-GetSystemMetrics.ok - -# Patchset user32-GetTipText -# | -# | This patchset fixes the following Wine bugs: -# | * [#30648] Support for TOOLTIPS_GetTipText edge cases -# | -# | Modified files: -# | * dlls/comctl32/tooltips.c -# | -.INTERMEDIATE: user32-GetTipText.ok -user32-GetTipText.ok: - $(call APPLY_FILE,user32-GetTipText/0001-Fix-TOOLTIPS_GetTipText-when-a-resource-cannot-be-fo.patch) - $(call APPLY_FILE,user32-GetTipText/0002-Fix-TOOLTIPS_GetTipText-when-a-NULL-instance-is-used.patch) - @( \ - echo '+ { "Erich E. Hoover", "Fix TOOLTIPS_GetTipText when a resource cannot be found.", 1 },'; \ - echo '+ { "Erich E. Hoover", "Fix TOOLTIPS_GetTipText when a NULL instance is used.", 1 },'; \ - ) > user32-GetTipText.ok - -# Patchset user32-Mouse_Message_Hwnd -# | -# | This patchset fixes the following Wine bugs: -# | * [#12007] Fix issues with dragging layers between images in Adobe Photoshop 7.0 -# | -# | Modified files: -# | * dlls/user32/message.c, dlls/user32/tests/input.c -# | -.INTERMEDIATE: user32-Mouse_Message_Hwnd.ok -user32-Mouse_Message_Hwnd.ok: - $(call APPLY_FILE,user32-Mouse_Message_Hwnd/0001-user32-Try-harder-to-find-a-target-for-mouse-message.patch) - @( \ - echo '+ { "Dmitry Timoshkov", "user32: Try harder to find a target for mouse messages.", 1 },'; \ - ) > user32-Mouse_Message_Hwnd.ok - -# Patchset user32-ScrollWindowEx -# | -# | This patchset fixes the following Wine bugs: -# | * [#37706] Fix return value of ScrollWindowEx for invisible windows -# | -# | Modified files: -# | * dlls/user32/painting.c -# | -.INTERMEDIATE: user32-ScrollWindowEx.ok -user32-ScrollWindowEx.ok: - $(call APPLY_FILE,user32-ScrollWindowEx/0001-user32-Fix-return-value-of-ScrollWindowEx-for-invisi.patch) - @( \ - echo '+ { "Dmitry Timoshkov", "user32: Fix return value of ScrollWindowEx for invisible windows.", 1 },'; \ - ) > user32-ScrollWindowEx.ok - -# Patchset user32-WndProc -# | -# | This patchset fixes the following Wine bugs: -# | * [#32451] Fix for programs leaking wndproc slots -# | -# | Modified files: -# | * dlls/user.exe16/message.c, dlls/user32/winproc.c -# | -.INTERMEDIATE: user32-WndProc.ok -user32-WndProc.ok: - $(call APPLY_FILE,user32-WndProc/0001-user32-Increase-MAX_WINPROCS-to-16384.patch) - @( \ - echo '+ { "Sebastian Lackner", "user32: Increase MAX_WINPROCS to 16384.", 2 },'; \ - ) > user32-WndProc.ok - -# Patchset wineboot-HKEY_DYN_DATA -# | -# | This patchset fixes the following Wine bugs: -# | * [#7115] Need for Speed 3 installer requires devices in HKEY_DYN_DATA -# | -# | Modified files: -# | * programs/wineboot/wineboot.c -# | -.INTERMEDIATE: wineboot-HKEY_DYN_DATA.ok -wineboot-HKEY_DYN_DATA.ok: - $(call APPLY_FILE,wineboot-HKEY_DYN_DATA/0001-wineboot-Add-some-generic-hardware-in-HKEY_DYN_DATA-.patch) - @( \ - echo '+ { "Michael Müller", "wineboot: Add some generic hardware in HKEY_DYN_DATA\\\\Config Manager\\\\Enum.", 1 },'; \ - ) > wineboot-HKEY_DYN_DATA.ok - -# Patchset winebuild-LinkerVersion -# | -# | This patchset fixes the following Wine bugs: -# | * [#28768] Games For Windows Live 1.x expects a valid linker version in the PE header -# | -# | Modified files: -# | * tools/winebuild/spec32.c -# | -.INTERMEDIATE: winebuild-LinkerVersion.ok -winebuild-LinkerVersion.ok: - $(call APPLY_FILE,winebuild-LinkerVersion/0001-winebuild-Set-a-valid-major-and-minor-linker-version.patch) - @( \ - echo '+ { "Michael Müller", "winebuild: Set a valid major and minor linker version.", 1 },'; \ - ) > winebuild-LinkerVersion.ok - -# Patchset winecfg-Staging -# | -# | Modified files: -# | * programs/winecfg/Makefile.in, programs/winecfg/main.c, programs/winecfg/resource.h, programs/winecfg/staging.c, -# | programs/winecfg/winecfg.h, programs/winecfg/winecfg.rc -# | -.INTERMEDIATE: winecfg-Staging.ok -winecfg-Staging.ok: ntdll-DllRedirects.ok wined3d-CSMT_Main.ok - $(call APPLY_FILE,winecfg-Staging/0001-winecfg-Add-staging-tab-for-CSMT.patch) - @( \ - echo '+ { "Michael Müller", "winecfg: Add staging tab for CSMT.", 1 },'; \ - ) > winecfg-Staging.ok - -# Patchset wined3d-CSMT_Helper -# | -# | Modified files: -# | * configure.ac, dlls/ddraw/surface.c, dlls/wined3d-csmt/Makefile.in, dlls/wined3d-csmt/version.rc, -# | dlls/wined3d/resource.c, dlls/wined3d/surface.c, dlls/wined3d/texture.c, dlls/wined3d/volume.c, -# | dlls/wined3d/wined3d.spec, dlls/wined3d/wined3d_private.h, include/wine/wined3d.h -# | -.INTERMEDIATE: wined3d-CSMT_Helper.ok -wined3d-CSMT_Helper.ok: makedep-PARENTSPEC.ok wined3d-DXTn.ok - $(call APPLY_FILE,wined3d-CSMT_Helper/0001-wined3d-Merge-get_pitch-functions.patch) - $(call APPLY_FILE,wined3d-CSMT_Helper/0002-wined3d-Add-second-dll-with-STAGING_CSMT-definition-.patch) - @( \ - echo '+ { "Stefan Dösinger", "wined3d: Merge get_pitch functions.", 1 },'; \ - echo '+ { "Sebastian Lackner", "wined3d: Add second dll with STAGING_CSMT definition set.", 1 },'; \ - ) > wined3d-CSMT_Helper.ok - -# Patchset wined3d-CSMT_Main -# | -# | This patchset fixes the following Wine bugs: -# | * [#11674] Support for CSMT (command stream) to increase graphic performance -# | -# | Modified files: -# | * dlls/d3d8/tests/visual.c, dlls/d3d9/tests/visual.c, dlls/wined3d/arb_program_shader.c, dlls/wined3d/buffer.c, -# | dlls/wined3d/context.c, dlls/wined3d/cs.c, dlls/wined3d/device.c, dlls/wined3d/directx.c, dlls/wined3d/drawprim.c, -# | dlls/wined3d/glsl_shader.c, dlls/wined3d/query.c, dlls/wined3d/resource.c, dlls/wined3d/shader.c, dlls/wined3d/state.c, -# | dlls/wined3d/stateblock.c, dlls/wined3d/surface.c, dlls/wined3d/swapchain.c, dlls/wined3d/texture.c, -# | dlls/wined3d/utils.c, dlls/wined3d/vertexdeclaration.c, dlls/wined3d/view.c, dlls/wined3d/volume.c, -# | dlls/wined3d/wined3d_main.c, dlls/wined3d/wined3d_private.h, dlls/winex11.drv/opengl.c -# | -.INTERMEDIATE: wined3d-CSMT_Main.ok -wined3d-CSMT_Main.ok: wined3d-CSMT_Helper.ok - $(call APPLY_FILE,wined3d-CSMT_Main/0001-wined3d-Pass-a-context-to-surface_load_sysmem.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0002-wined3d-Pass-a-context-to-read_from_framebuffer.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0003-wined3d-Pass-a-context-to-surface_load_drawable-and-.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0004-wined3d-Pass-a-context-to-surface_blt_fbo.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0005-wined3d-Pass-a-context-to-surface_multisample_resolv.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0006-wined3d-Pass-a-context-to-surface_load_texture.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0007-wined3d-Pass-a-context-to-surface_load_location.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0008-wined3d-Make-surface_load_location-return-nothing.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0009-wined3d-Store-volume-locations-in-the-resource.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0010-wined3d-Move-validate_location-to-resource.c.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0011-wined3d-Move-surface-locations-into-the-resource.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0012-wined3d-Remove-surface_validate_location.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0013-wined3d-Move-invalidate_location-to-resource.c.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0014-wined3d-Invalidate-containers-via-callback.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0015-wined3d-Remove-surface_invalidate_location.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0016-wined3d-Move-bitmap_data-and-user_memory-into-the-re.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0017-wined3d-Move-load_location-into-the-resource.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0018-wined3d-Replace-surface_load_location-with-resource_.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0019-wined3d-Introduce-helper-functions-for-mapping-volum.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0020-wined3d-Move-volume-PBO-infrastructure-into-the-reso.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0021-wined3d-Remove-surface-pbo.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0022-wined3d-Use-resource-buffer-mapping-facilities-in-su.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0023-wined3d-Move-buffer-creation-into-the-resource.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0024-wined3d-Handle-WINED3D_LOCATION_DISCARDED-in-surface.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0025-wined3d-Handle-LOCATION_DISCARDED-in-surface_load_dr.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0026-wined3d-Handle-WINED3D_LOCATION_DISCARDED-for-sysmem.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0027-wined3d-Discard-implicit-surfaces-on-unload.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0028-wined3d-Don-t-try-to-flip-sysmem-copies-in-swapchain.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0029-wined3d-Discard-the-backbuffer-in-discard-presents.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0030-wined3d-Allocate-sysmem-for-client-storage-if-it-doe.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0031-wined3d-Introduce-a-function-to-retrieve-resource-me.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0032-wined3d-Make-surface_ops-unmap-specific-for-front-bu.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0033-wined3d-Move-check_block_align-to-resource.c.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0034-wined3d-Replace-surface-alloc-functions-with-resourc.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0035-wined3d-Don-t-delete-the-buffer-in-surface_cleanup.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0036-wined3d-Use-resource-facilities-to-destroy-PBOs.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0037-wined3d-Move-simple-location-copying-to-the-resource.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0038-wined3d-Move-most-of-volume_map-to-resource.c.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0039-wined3d-Use-resource_map-for-surface_map.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0040-wined3d-Use-client-storage-with-DIB-sections.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0041-wined3d-Don-t-call-the-public-map-function-in-surfac.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0042-wined3d-Don-t-call-the-public-map-function-in-surfac.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0043-wined3d-Move-the-framebuffer-into-wined3d_state.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0044-wined3d-Get-rid-of-state-access-in-shader_generate_g.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0045-wined3d-Preload-buffers-if-streamsrc-is-not-dirty.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0046-wined3d-Hackily-introduce-a-multithreaded-command-st.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0047-wined3d-Wait-for-resource-updates-to-finish-when-usi.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0048-wined3d-Don-t-store-pointers-in-struct-wined3d_cs_pr.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0049-wined3d-Don-t-put-rectangle-pointers-into-wined3d_cs.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0050-wined3d-Store-the-color-in-clear-ops-instead-of-a-po.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0051-wined3d-Pass-the-state-to-draw_primitive.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0052-wined3d-Wait-for-the-cs-before-destroying-objects.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0053-wined3d-Give-the-cs-its-own-state.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0054-wined3d-Send-float-constant-updates-through-the-comm.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0055-wined3d-Request-a-glFinish-before-modifying-resource.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0056-wined3d-Finish-the-cs-before-changing-the-texture-lo.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0057-wined3d-Don-t-call-glFinish-after-clears.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0058-wined3d-Don-t-call-glFinish-after-draws.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0059-wined3d-Shadow-device-offscreenBuffer-in-the-context.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0060-wined3d-Don-t-access-the-stateblock-in-find_draw_buf.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0061-wined3d-Pass-the-depth-stencil-to-swapchain-present.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0062-wined3d-Don-t-store-viewport-pointers-in-the-command.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0063-wined3d-Keep-track-of-the-onscreen-depth-stencil-in-.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0064-wined3d-Send-base-vertex-index-updates-through-the-c.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0065-wined3d-Send-primitive-type-updates-through-the-comm.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0066-wined3d-Send-bool-constant-updates-through-the-comma.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0067-wined3d-Send-int-constant-updates-through-the-comman.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0068-wined3d-Send-light-updates-through-the-command-strea.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0069-wined3d-Prevent-the-command-stream-from-running-ahea.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0070-wined3d-Wait-for-the-cs-to-finish-before-destroying-.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0071-wined3d-Run-the-cs-asynchronously.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0072-wined3d-Send-blits-through-the-command-stream.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0073-wined3d-Put-update_surface-checks-back-in-place.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0074-wined3d-Get-rid-of-WINED3D_BUFFER_FLUSH.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0075-wined3d-Add-cs-waiting-debug-code.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0076-wined3d-Don-t-force-strict-draw-ordering-for-multith.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0077-wined3d-Send-render-target-view-clears-through-the-c.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0078-wined3d-Wait-for-the-CS-in-GetDC.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0079-wined3d-send-resource-maps-through-the-command-strea.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0080-wined3d-Get-rid-of-the-end_scene-flush-and-finish.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0081-wined3d-Replace-the-linked-lists-with-a-ringbuffer.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0082-wined3d-Don-t-preload-buffers-on-unmap.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0083-wined3d-Don-t-call-glFinish-before-swapping.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0084-wined3d-wined3d_-_query_issue-never-fails.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0085-wined3d-Add-query-support-to-the-command-stream.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0086-wined3d-Check-our-CS-state-to-find-out-if-a-query-is.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0087-wined3d-Poll-queries-automatically-in-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0088-wined3d-Introduce-a-separate-queue-for-priority-comm.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0089-wined3d-Destroy-queries-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0090-wined3d-Separate-main-and-worker-thread-query-state.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0091-wined3d-Don-t-poll-queries-that-failed-to-start.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0092-wined3d-Remove-restated-queries-from-the-poll-list.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0093-wined3d-Don-t-reset-the-query-state-if-it-doesn-t-ha.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0094-wined3d-Put-this-into-the-query-poll-patch.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0095-wined3d-Send-update_surface-commands-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0096-wined3d-Send-texture-preloads-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0097-wined3d-Send-surface-preloads-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0098-wined3d-Send-update_texture-calls-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0099-wined3d-Get-rid-of-the-surface_upload_data-glFinish.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0100-wined3d-Don-t-lock-the-src-volume-in-device_update_v.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0101-wined3d-Handle-evit_managed_resources-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0102-wined3d-Send-flips-through-the-command-stream.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0103-wined3d-Introduce-resource-fencing.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0104-wined3d-Fence-update_texture-and-update_surface-call.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0105-wined3d-Dirtify-resources-on-unmap.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0106-wined3d-Fence-texture-reads-in-draws.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0107-wined3d-Fence-render-targets-and-depth-stencils.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0108-wined3d-Fence-blit-operations.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0109-wined3d-Fence-color_fill-operations.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0110-wined3d-Fence-clear-calls.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0111-wined3d-Fence-present-calls.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0112-wined3d-Make-resource-maps-and-unmaps-a-priority-com.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0113-wined3d-Dirtify-changed-textures-through-the-command.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0114-wined3d-Wrap-GL-BOs-in-a-structure.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0115-wined3d-Separate-resource-map-and-draw-buffers.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0116-wined3d-Implement-DISCARD-resource-maps-with-buffers.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0117-wined3d-Implement-DISCARD-resource-maps-with-heap-me.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0118-wined3d-Unset-some-objects-in-state_init_default.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0119-wined3d-Don-t-request-the-frontbuffer-to-create-dumm.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0120-wined3d-Use-double-buffered-buffers-for-multithreade.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0121-wined3d-Don-t-synchronize-NOOVERWRITE-buffer-maps.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0122-wined3d-Separate-buffer-map-write-and-draw-read-memo.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0123-wined3d-Accelerate-DISCARD-buffer-maps.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0124-wined3d-Accelerate-READONLY-buffer-maps.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0125-wined3d-Access-the-buffer-dirty-areas-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0126-wined3d-Ignore-buffer-resource.map_count-in-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0127-wined3d-Send-buffer-preloads-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0128-wined3d-Use-glBufferSubData-instead-of-glMapBufferRa.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0129-wined3d-Separate-GL-buffer-discard-control-from-igno.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0130-wined3d-Create-buffers-before-mapping-them.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0131-wined3d-Destroy-views-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0132-wined3d-Remove-another-glFinish.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0133-wined3d-Destroy-vertex-declarations-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0134-wined3d-Destroy-shaders-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0135-wined3d-Create-VBOs-through-the-command-stream.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0136-wined3d-Clean-up-resource-data-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0137-wined3d-Clean-up-buffer-resource-data-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0138-wined3d-Clean-up-volume-resource-data-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0139-wined3d-Clean-up-surfaces-through-the-cs.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0140-wined3d-Clean-up-texture-resources-through-the-cs.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0141-wined3d-Unload-resources-through-the-CS-in-uninit_3d.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0142-wined3d-Unload-resources-through-the-CS-in-device_re.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0143-wined3d-Don-t-glFinish-after-a-depth-buffer-blit.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0144-wined3d-Remove-software-cursor-support.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0145-wined3d-Create-dummy-textures-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0146-wined3d-Create-the-initial-context-through-the-CS.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0147-wined3d-Recreate-ctx-and-dummy-textures-through-the-.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0148-wined3d-Ignore-WINED3D_MAP_NO_DIRTY_UPDATE-in-resour.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0149-wined3d-Delete-GL-contexts-through-the-CS-in-reset.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0150-wined3d-Delete-GL-contexts-through-the-CS-in-uninit_.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0151-wined3d-Invoke-surface_unload-through-the-CS-in-wine.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0152-wined3d-Use-an-event-to-block-the-worker-thread-when.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0153-wined3d-Fence-preload-operations.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0154-d3d8-tests-D3DLOCK_NO_DIRTY_UPDATE-on-managed-textur.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0155-d3d9-tests-D3DLOCK_NO_DIRTY_UPDATE-on-managed-textur.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0156-wined3d-Completely-reset-the-state-on-reset.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0157-wined3d-Send-getdc-and-releasedc-through-the-command.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0158-wined3d-Set-map_heap_memory-NULL-when-allocating-a-P.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0159-wined3d-Wait-only-for-the-buffer-to-be-idle.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0160-wined3d-Add-a-comment-about-worker-thread-lag.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0161-wined3d-Remove-the-texture-destroy-glFinish.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0162-wined3d-Move-FBO-destruction-into-the-worker-thread.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0163-wined3d-Don-t-incref-decref-textures-in-color-depth-.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0164-Winex11-complain-about-glfinish.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0165-wined3d-Make-sure-the-new-window-is-set-up-before-se.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0166-wined3d-Remove-the-device_reset-CS-sync-fixme.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0167-wined3d-Put-GL_APPLE_flush_buffer_range-syncing-back.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0168-wined3d-Wait-for-the-resource-to-be-idle-when-destro.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0169-wined3d-Don-t-sync-on-redundant-discard-calls.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0170-wined3d-Don-t-discard-new-buffers.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0171-wined3d-Don-t-try-to-sync-VBOs-manually-on-OSX-with-.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0172-wined3d-Render-target-lock-hack.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0173-wined3d-Avoid-calling-wined3d_surface_blt-from-surfa.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0174-wined3d-Fix-some-uninitialized-memory-accesses.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/0175-wined3d-Enable-CSMT-by-default-print-a-winediag-mess.patch) - $(call APPLY_FILE,wined3d-CSMT_Main/9999-IfDefined.patch) - @( \ - echo '+ { "Stefan Dösinger", "wined3d: Pass a context to surface_load_sysmem.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Pass a context to read_from_framebuffer.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Pass a context to surface_load_drawable and surface_blt_to_drawable.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Pass a context to surface_blt_fbo.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Pass a context to surface_multisample_resolve.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Pass a context to surface_load_texture.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Pass a context to surface_load_location.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Make surface_load_location return nothing.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Store volume locations in the resource.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Move validate_location to resource.c.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Move surface locations into the resource.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Remove surface_validate_location.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Move invalidate_location to resource.c.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Invalidate containers via callback.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Remove surface_invalidate_location.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Move bitmap_data and user_memory into the resource.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Move load_location into the resource.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Replace surface_load_location with resource_load_location.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Introduce helper functions for mapping volumes.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Move volume PBO infrastructure into the resource.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Remove surface->pbo.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Use resource buffer mapping facilities in surfaces.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Move buffer creation into the resource.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Handle WINED3D_LOCATION_DISCARDED in surface_load_texture.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Handle LOCATION_DISCARDED in surface_load_drawable.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Handle WINED3D_LOCATION_DISCARDED for sysmem loads.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Discard implicit surfaces on unload.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t try to flip sysmem copies in swapchain_present.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Discard the backbuffer in discard presents.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Allocate sysmem for client storage if it doesn'\''t exist already.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Introduce a function to retrieve resource memory.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Make surface_ops->unmap specific for front buffers.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Move check_block_align to resource.c.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Replace surface alloc functions with resource ones.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t delete the buffer in surface_cleanup.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Use resource facilities to destroy PBOs.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Move simple location copying to the resource.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Move most of volume_map to resource.c.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Use resource_map for surface_map.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Use client storage with DIB sections.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t call the public map function in surface_convert_format.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t call the public map function in surface_cpu_blt.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Move the framebuffer into wined3d_state.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Get rid of state access in shader_generate_glsl_declarations.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Preload buffers if streamsrc is not dirty.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Hackily introduce a multithreaded command stream.", 1 },'; \ - echo '+ { "Henri Verbeet", "wined3d: Wait for resource updates to finish when using the multithreaded command stream.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t store pointers in struct wined3d_cs_present.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t put rectangle pointers into wined3d_cs_clear.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Store the color in clear ops instead of a pointer.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Pass the state to draw_primitive.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Wait for the cs before destroying objects.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Give the cs its own state.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Send float constant updates through the command stream.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Request a glFinish before modifying resources outside the cs.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Finish the cs before changing the texture lod.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t call glFinish after clears.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t call glFinish after draws.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Shadow device->offscreenBuffer in the context.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t access the stateblock in find_draw_buffers_mask.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Pass the depth stencil to swapchain->present.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t store viewport pointers in the command stream.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Keep track of the onscreen depth stencil in the command stream instead of the device.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Send base vertex index updates through the cs.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Send primitive type updates through the command stream.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Send bool constant updates through the command stream.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Send int constant updates through the command stream.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Send light updates through the command stream.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Prevent the command stream from running ahead too far.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Wait for the cs to finish before destroying the device.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Run the cs asynchronously.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Send blits through the command stream.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Put update_surface checks back in place.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Get rid of WINED3D_BUFFER_FLUSH.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Add cs waiting debug code.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t force strict draw ordering for multithreaded CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Send render target view clears through the command stream.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Wait for the CS in GetDC.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: send resource maps through the command stream.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Get rid of the end_scene flush and finish.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Replace the linked lists with a ringbuffer.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t preload buffers on unmap.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t call glFinish before swapping.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: wined3d_*_query_issue never fails.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Add query support to the command stream.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Check our CS state to find out if a query is done.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Poll queries automatically in the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Introduce a separate queue for priority commands.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Destroy queries through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Separate main and worker thread query state.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t poll queries that failed to start.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Remove restated queries from the poll list.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t reset the query state if it doesn'\''t have a ctx.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Put this into the query poll patch.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Send update_surface commands through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Send texture preloads through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Send surface preloads through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Send update_texture calls through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Get rid of the surface_upload_data glFinish.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t lock the src volume in device_update_volume.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Handle evit_managed_resources through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Send flips through the command stream.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Introduce resource fencing.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Fence update_texture and update_surface calls.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Dirtify resources on unmap.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Fence texture reads in draws.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Fence render targets and depth stencils.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Fence blit operations.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Fence color_fill operations.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Fence clear calls.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Fence present calls.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Make resource maps and unmaps a priority command.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Dirtify changed textures through the command stream.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Wrap GL BOs in a structure.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Separate resource map and draw buffers.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Implement DISCARD resource maps with buffers.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Implement DISCARD resource maps with heap memory.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Unset some objects in state_init_default.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t request the frontbuffer to create dummy textures.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Use double-buffered buffers for multithreaded CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t synchronize NOOVERWRITE buffer maps.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Separate buffer map write and draw read memory pointers.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Accelerate DISCARD buffer maps.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Accelerate READONLY buffer maps.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Access the buffer dirty areas through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Ignore buffer->resource.map_count in the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Send buffer preloads through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Use glBufferSubData instead of glMapBufferRange.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Separate GL buffer discard control from ignoring MAP_DISCARD.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Create buffers before mapping them.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Destroy views through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Remove another glFinish.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Destroy vertex declarations through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Destroy shaders through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Create VBOs through the command stream.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Clean up resource data through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Clean up buffer resource data through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Clean up volume resource data through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Clean up surfaces through the cs.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Clean up texture resources through the cs.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Unload resources through the CS in uninit_3d.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Unload resources through the CS in device_reset.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t glFinish after a depth buffer blit.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Remove software cursor support.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Create dummy textures through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Create the initial context through the CS.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Recreate ctx and dummy textures through the CS after resets.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Ignore WINED3D_MAP_NO_DIRTY_UPDATE in resource_map.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Delete GL contexts through the CS in reset.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Delete GL contexts through the CS in uninit_3d.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Invoke surface_unload through the CS in wined3d_surface_update_desc.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Use an event to block the worker thread when it is idle.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Fence preload operations.", 1 },'; \ - echo '+ { "Stefan Dösinger", "d3d8/tests: D3DLOCK_NO_DIRTY_UPDATE on managed textures is temporarily broken.", 1 },'; \ - echo '+ { "Stefan Dösinger", "d3d9/tests: D3DLOCK_NO_DIRTY_UPDATE on managed textures is temporarily broken.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Completely reset the state on reset.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Send getdc and releasedc through the command stream.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Set map_heap_memory = NULL when allocating a PBO.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Wait only for the buffer to be idle.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Add a comment about worker thread lag.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Remove the texture destroy glFinish.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Move FBO destruction into the worker thread.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t incref / decref textures in color / depth fill blits.", 1 },'; \ - echo '+ { "Stefan Dösinger", "Winex11: complain about glfinish.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Make sure the new window is set up before setting up a context.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Remove the device_reset CS sync fixme.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Put GL_APPLE_flush_buffer_range syncing back in place.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Wait for the resource to be idle when destroying user memory surfaces.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t sync on redundant discard calls.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t discard new buffers.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Don'\''t try to sync VBOs manually on OSX with CSMT.", 1 },'; \ - echo '+ { "Stefan Dösinger", "wined3d: Render target lock hack.", 1 },'; \ - echo '+ { "Matteo Bruni", "wined3d: Avoid calling wined3d_surface_blt() from surface_upload_from_surface().", 1 },'; \ - echo '+ { "Sebastian Lackner", "wined3d: Fix some uninitialized memory accesses.", 1 },'; \ - echo '+ { "Sebastian Lackner", "wined3d: Enable CSMT by default, print a winediag message informing about this patchset.", 1 },'; \ - echo '+ { "Wine Staging Team", "Autogenerated #ifdef patch for wined3d-CSMT_Main.", 1 },'; \ - ) > wined3d-CSMT_Main.ok - -# Patchset wined3d-DXTn -# | -# | This patchset fixes the following Wine bugs: -# | * [#25486] Lego Stunt Rally requires DXTn software de/encoding support -# | * [#29586] Tumblebugs 2 requires DXTn software encoding support -# | * [#14939] Black & White needs DXTn software decoding support -# | -# | Modified files: -# | * configure.ac, dlls/wined3d/Makefile.in, dlls/wined3d/dxtn.c, dlls/wined3d/surface.c, dlls/wined3d/wined3d.spec, -# | dlls/wined3d/wined3d_main.c, dlls/wined3d/wined3d_private.h, include/wine/wined3d.h -# | -.INTERMEDIATE: wined3d-DXTn.ok -wined3d-DXTn.ok: - $(call APPLY_FILE,wined3d-DXTn/0001-wined3d-Add-support-for-DXTn-software-decoding-throu.patch) - $(call APPLY_FILE,wined3d-DXTn/0002-wined3d-Improve-DXTn-support-and-export-conversion-f.patch) - $(call APPLY_FILE,wined3d-DXTn/0003-wined3d-add-DXT1-to-B4G4R4A4-DXT1-to-B5G5R5A1-and-DX.patch) - @( \ - echo '+ { "Michael Müller", "wined3d: Add support for DXTn software decoding through libtxc_dxtn.", 1 },'; \ - echo '+ { "Christian Costa", "wined3d: Improve DXTn support and export conversion functions for d3dx9_36.", 1 },'; \ - echo '+ { "Michael Müller", "wined3d: add DXT1 to B4G4R4A4, DXT1 to B5G5R5A1 and DXT3 to B4G4R4A4 conversion.", 1 },'; \ - ) > wined3d-DXTn.ok - -# Patchset wined3d-Revert_PixelFormat -# | -# | This patchset fixes the following Wine bugs: -# | * [#35655] Fix wined3d performance drop introduced by pixelformat changes. -# | * [#35718] Fix flickering introduced by pixelformat changes. -# | * [#35950] Fix black screen on startup introduced by pixelformat changes. -# | * [#35975] Fix gray screen on startup introduced by pixelformat changes. -# | * [#36900] Fix missing video introduced by pixelformat changes. -# | -# | Modified files: -# | * dlls/d3d8/tests/device.c, dlls/d3d9/tests/device.c, dlls/ddraw/tests/ddraw1.c, dlls/ddraw/tests/ddraw2.c, -# | dlls/ddraw/tests/ddraw4.c, dlls/ddraw/tests/ddraw7.c, dlls/wined3d/context.c, dlls/wined3d/wined3d_private.h -# | -.INTERMEDIATE: wined3d-Revert_PixelFormat.ok -wined3d-Revert_PixelFormat.ok: - $(call APPLY_FILE,wined3d-Revert_PixelFormat/0001-Revert-wined3d-Track-if-a-context-s-private-hdc-has-.patch) - $(call APPLY_FILE,wined3d-Revert_PixelFormat/0002-Revert-wined3d-Track-if-a-context-s-hdc-is-private-s.patch) - $(call APPLY_FILE,wined3d-Revert_PixelFormat/0003-Revert-wined3d-When-restoring-pixel-format-in-contex.patch) - $(call APPLY_FILE,wined3d-Revert_PixelFormat/0004-Revert-wined3d-Don-t-call-GetPixelFormat-to-set-a-fl.patch) - $(call APPLY_FILE,wined3d-Revert_PixelFormat/0005-Revert-wined3d-Restore-the-pixel-format-of-the-windo.patch) - $(call APPLY_FILE,wined3d-Revert_PixelFormat/0006-d3d8-Mark-tests-which-no-longer-pass-due-to-reverts-.patch) - $(call APPLY_FILE,wined3d-Revert_PixelFormat/0007-d3d9-Mark-tests-which-no-longer-pass-due-to-reverts-.patch) - $(call APPLY_FILE,wined3d-Revert_PixelFormat/0008-ddraw-Mark-tests-which-no-longer-pass-due-to-reverts.patch) - @( \ - echo '+ { "Ken Thomases", "Revert \"wined3d: Track if a context'\''s private hdc has had its pixel format set, so we don'\''t need to check it.\".", 1 },'; \ - echo '+ { "Ken Thomases", "Revert \"wined3d: Track if a context'\''s hdc is private so we never need to restore its pixel format.\".", 1 },'; \ - echo '+ { "Ken Thomases", "Revert \"wined3d: When restoring pixel format in context_release(), mark the context as needing to be set on the next context_acquire().\".", 1 },'; \ - echo '+ { "Ken Thomases", "Revert \"wined3d: Don'\''t call GetPixelFormat() to set a flag that'\''s already set.\".", 1 },'; \ - echo '+ { "Ken Thomases", "Revert \"wined3d: Restore the pixel format of the window whose pixel format was actually changed.\".", 1 },'; \ - echo '+ { "Ken Thomases", "d3d8: Mark tests which no longer pass due to reverts as todo_wine.", 1 },'; \ - echo '+ { "Ken Thomases", "d3d9: Mark tests which no longer pass due to reverts as todo_wine.", 1 },'; \ - echo '+ { "Ken Thomases", "ddraw: Mark tests which no longer pass due to reverts as todo_wine.", 1 },'; \ - ) > wined3d-Revert_PixelFormat.ok - -# Patchset winedevice-Fix_Relocation -# | -# | This patchset fixes the following Wine bugs: -# | * [#28254] Fix crash of winedevice when relocation entry crosses page boundary -# | -# | Modified files: -# | * programs/winedevice/device.c -# | -.INTERMEDIATE: winedevice-Fix_Relocation.ok -winedevice-Fix_Relocation.ok: - $(call APPLY_FILE,winedevice-Fix_Relocation/0001-winedevice-Avoid-invalid-memory-access-when-relocati.patch) - @( \ - echo '+ { "Sebastian Lackner", "winedevice: Avoid invalid memory access when relocation block addresses memory outside of the current page.", 1 },'; \ - ) > winedevice-Fix_Relocation.ok - -# Patchset winemenubuilder-Desktop_Icon_Path -# | -# | Modified files: -# | * programs/winemenubuilder/Makefile.in, programs/winemenubuilder/winemenubuilder.c -# | -.INTERMEDIATE: winemenubuilder-Desktop_Icon_Path.ok -winemenubuilder-Desktop_Icon_Path.ok: - $(call APPLY_FILE,winemenubuilder-Desktop_Icon_Path/0001-winemenubuilder-Create-desktop-shortcuts-with-absolu.patch) - @( \ - echo '+ { "Sebastian Lackner", "winemenubuilder: Create desktop shortcuts with absolute wine path.", 1 },'; \ - ) > winemenubuilder-Desktop_Icon_Path.ok - -# Patchset winepulse-PulseAudio_Support -# | -# | This patchset fixes the following Wine bugs: -# | * [#10495] Support for PulseAudio backend for audio -# | * [#37042] Implement exclusive mode in PulseAudio backend -# | -# | Modified files: -# | * configure.ac, dlls/mmdevapi/main.c, dlls/mmdevapi/tests/render.c, dlls/winepulse.drv/Makefile.in, -# | dlls/winepulse.drv/mmdevdrv.c, dlls/winepulse.drv/winepulse.drv.spec, dlls/winmm/lolvldrv.c -# | -.INTERMEDIATE: winepulse-PulseAudio_Support.ok -winepulse-PulseAudio_Support.ok: - $(call APPLY_FILE,winepulse-PulseAudio_Support/0001-winmm-Load-winealsa-if-winepulse-is-found.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0002-winepulse-Add-initial-stub-for-pulseaudio-support.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0003-winepulse-Add-format-and-period-probing.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0004-winepulse-Add-audioclient.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0005-winepulse-Add-IAudioRenderClient-and-IAudioCaptureCl.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0006-winepulse-Add-IAudioClock-and-IAudioClock2.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0007-winepulse-Add-audiostreamvolume.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0008-winepulse-Add-session-support.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0009-fix-fdels-trailing-whitespaces.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0010-winepulse-v12.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0011-winepulse-v15-Add-support-for-missing-formats-and-si.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0012-winepulse-v16-Add-official-warning-wine-doesn-t-want.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0013-winepulse-v17-Fix-winmm-tests.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0014-winepulse-v18-Latency-and-compilation-improvements.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0015-winepulse-API-Compatibility-with-1.5.2-onward-v2.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0016-winepulse-Fix-low-latency-support.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0017-winepulse-drop-realtime-priority-before-thread-destr.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0018-winepulse-remove-bogus-SetEvent-from-pulse_started_c.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0019-winepulse-disable-the-setevent-part-of-the-latency-h.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0020-winepulse-v20-fix-the-checks-in-IsFormatSupported.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0021-winepulse-fixup-IsFormatSupported-calls.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0022-winepulse-v21-return-early-if-padding-didn-t-update.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0023-winepulse-fix-unneeded-free-in-write.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0024-winepulse-v23-fixup-a-invalid-free-in-mmdevapi.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0025-winepulse-use-a-pi-mutex-for-serialization.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0026-winepulse-add-support-for-IMarshal.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0027-winepulse-handle-stream-create-failing-correctly.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0028-winepulse-expose-audio-devices-directly-to-programs.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0029-winepulse-implement-exclusive-mode.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0030-winepulse-fix-segfault-in-pulse_rd_loop.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0031-winepulse-implement-GetPropValue.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0032-winepulse-fetch-actual-program-name-if-possible.patch) - $(call APPLY_FILE,winepulse-PulseAudio_Support/0033-winepulse-return-PKEY_AudioEndpoint_PhysicalSpeakers.patch) - @( \ - echo '+ { "Maarten Lankhorst", "winmm: Load winealsa if winepulse is found.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: Add initial stub for pulseaudio support.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: Add format and period probing.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: Add audioclient.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: Add IAudioRenderClient and IAudioCaptureClient.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: Add IAudioClock and IAudioClock2.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: Add audiostreamvolume.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: Add session support.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "fix fdels trailing whitespaces.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse.", 12 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: Add support for missing formats, and silence an error for missing format tags.", 15 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: Add official warning wine doesn'\''t want to support winepulse.", 16 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: Fix winmm tests.", 17 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: Latency and compilation improvements.", 18 },'; \ - echo '+ { "Juergen Tretthahn", "winepulse: API Compatibility with 1.5.2 onward.", 2 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: Fix low latency support.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: drop realtime priority before thread destruction.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: remove bogus SetEvent from pulse_started_callback.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: disable the setevent part of the latency hack.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: fix the checks in IsFormatSupported.", 20 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: fixup IsFormatSupported calls.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: return early if padding didn'\''t update.", 21 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: fix unneeded free in write.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: fixup a invalid free in mmdevapi.", 23 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: use a pi-mutex for serialization.", 1 },'; \ - echo '+ { "Maarten Lankhorst", "winepulse: add support for IMarshal.", 1 },'; \ - echo '+ { "Mark Harmstone", "winepulse: handle stream create failing correctly.", 1 },'; \ - echo '+ { "Mark Harmstone", "winepulse: expose audio devices directly to programs.", 1 },'; \ - echo '+ { "Mark Harmstone", "winepulse: implement exclusive mode.", 1 },'; \ - echo '+ { "Mark Harmstone", "winepulse: fix segfault in pulse_rd_loop.", 1 },'; \ - echo '+ { "Mark Harmstone", "winepulse: implement GetPropValue.", 1 },'; \ - echo '+ { "Mark Harmstone", "winepulse: fetch actual program name if possible.", 1 },'; \ - echo '+ { "Mark Harmstone", "winepulse: return PKEY_AudioEndpoint_PhysicalSpeakers device prop.", 1 },'; \ - ) > winepulse-PulseAudio_Support.ok - -# Patchset winex11-CandidateWindowPos -# | -# | This patchset fixes the following Wine bugs: -# | * [#30938] Update a XIM candidate position when cursor location changes -# | -# | Modified files: -# | * dlls/user32/caret.c, dlls/user32/driver.c, dlls/user32/user_private.h, dlls/winex11.drv/winex11.drv.spec, -# | dlls/winex11.drv/xim.c -# | -.INTERMEDIATE: winex11-CandidateWindowPos.ok -winex11-CandidateWindowPos.ok: - $(call APPLY_FILE,winex11-CandidateWindowPos/0001-winex11.drv-Update-a-candidate-window-s-position-wit.patch) - @( \ - echo '+ { "Felix Yan", "winex11.drv: Update a candidate window'\''s position with over-the-spot style.", 2 },'; \ - ) > winex11-CandidateWindowPos.ok - -# Patchset winex11-Clipboard_HTML -# | -# | This patchset fixes the following Wine bugs: -# | * [#7372] Support for pasting HTML from Unix applications -# | -# | Modified files: -# | * dlls/winex11.drv/clipboard.c -# | -.INTERMEDIATE: winex11-Clipboard_HTML.ok -winex11-Clipboard_HTML.ok: - $(call APPLY_FILE,winex11-Clipboard_HTML/0001-winex11.drv-Import-X11-s-text-html-as-HTML-Format.patch) - @( \ - echo '+ { "Damjan Jovanovic", "winex11.drv: Import X11'\''s \"text/html\" as \"HTML Format\".", 3 },'; \ - ) > winex11-Clipboard_HTML.ok - -# Patchset winex11-Limited_Resolutions -# | -# | Modified files: -# | * dlls/winex11.drv/xrandr.c -# | -.INTERMEDIATE: winex11-Limited_Resolutions.ok -winex11-Limited_Resolutions.ok: - $(call APPLY_FILE,winex11-Limited_Resolutions/0001-winex11.drv-Update-the-check-for-broken-nVidia-RandR.patch) - @( \ - echo '+ { "Erich E. Hoover", "winex11.drv: Update the check for broken nVidia RandR to test for the number of resolutions instead of the number of modes.", 1 },'; \ - ) > winex11-Limited_Resolutions.ok - -# Patchset winex11-Window_Groups -# | -# | This patchset fixes the following Wine bugs: -# | * [#32699] Prevent window managers from grouping all wine programs together -# | -# | Modified files: -# | * dlls/winex11.drv/window.c -# | -.INTERMEDIATE: winex11-Window_Groups.ok -winex11-Window_Groups.ok: - $(call APPLY_FILE,winex11-Window_Groups/0001-winex11-Prevent-window-managers-from-grouping-all-wi.patch) - @( \ - echo '+ { "Michael Müller", "winex11: Prevent window managers from grouping all wine programs together.", 1 },'; \ - ) > winex11-Window_Groups.ok - -# Patchset winex11-XEMBED -# | -# | Modified files: -# | * dlls/winex11.drv/event.c -# | -.INTERMEDIATE: winex11-XEMBED.ok -winex11-XEMBED.ok: - $(call APPLY_FILE,winex11-XEMBED/0001-winex11-Enable-disable-windows-when-they-are-un-mapped.patch) - @( \ - echo '+ { "Sebastian Lackner", "winex11: Enable/disable windows when they are (un)mapped by foreign applications.", 1 },'; \ - ) > winex11-XEMBED.ok - -# Patchset winex11-wglShareLists -# | -# | This patchset fixes the following Wine bugs: -# | * [#11436] Do not fail when a used context is passed to wglShareLists -# | -# | Modified files: -# | * dlls/winex11.drv/opengl.c -# | -.INTERMEDIATE: winex11-wglShareLists.ok -winex11-wglShareLists.ok: - $(call APPLY_FILE,winex11-wglShareLists/0001-winex11.drv-Only-warn-about-used-contexts-in-wglShar.patch) - @( \ - echo '+ { "Michael Müller", "winex11.drv: Only warn about used contexts in wglShareLists.", 1 },'; \ - ) > winex11-wglShareLists.ok - -# Patchset wininet-FtpFindFirstFile -# | -# | This patchset fixes the following Wine bugs: -# | * [#16526] Fix handling of subdirectory in FtpFindFirstFile -# | -# | Modified files: -# | * dlls/wininet/ftp.c, dlls/wininet/tests/ftp.c -# | -.INTERMEDIATE: wininet-FtpFindFirstFile.ok -wininet-FtpFindFirstFile.ok: - $(call APPLY_FILE,wininet-FtpFindFirstFile/0001-wininet-Fix-handling-of-subdirectory-in-FtpFindFirst.patch) - @( \ - echo '+ { "Sebastian Lackner", "wininet: Fix handling of subdirectory in FtpFindFirstFile.", 1 },'; \ - ) > wininet-FtpFindFirstFile.ok - -# Patchset wininet-encoding -# | -# | This patchset fixes the following Wine bugs: -# | * [#37046] wininet should allow Accept-Encoding header for HTTP/1.0 -# | -# | Modified files: -# | * dlls/wininet/http.c, dlls/wininet/tests/http.c -# | -.INTERMEDIATE: wininet-encoding.ok -wininet-encoding.ok: - $(call APPLY_FILE,wininet-encoding/0001-wininet-Allow-Accept-Encoding-for-HTTP-1.0-requests.patch) - @( \ - echo '+ { "Michael Müller", "wininet: Allow Accept-Encoding for HTTP/1.0 requests.", 1 },'; \ - ) > wininet-encoding.ok - -# Patchset wpcap-Dynamic_Linking -# | -# | Modified files: -# | * configure.ac, dlls/wpcap/Makefile.in, dlls/wpcap/wpcap.c -# | -.INTERMEDIATE: wpcap-Dynamic_Linking.ok -wpcap-Dynamic_Linking.ok: - $(call APPLY_FILE,wpcap-Dynamic_Linking/0001-wpcap-Load-libpcap-dynamically.patch) - @( \ - echo '+ { "André Hentschel", "wpcap: Load libpcap dynamically.", 1 },'; \ - ) > wpcap-Dynamic_Linking.ok - -# Patchset ws2_32-Connect_Time -# | -# | Modified files: -# | * dlls/ws2_32/socket.c, dlls/ws2_32/tests/sock.c, server/protocol.def, server/sock.c -# | -.INTERMEDIATE: ws2_32-Connect_Time.ok -ws2_32-Connect_Time.ok: - $(call APPLY_FILE,ws2_32-Connect_Time/0001-ws2_32-Implement-returning-the-proper-time-with-SO_C.patch) - @( \ - echo '+ { "Sebastian Lackner", "ws2_32: Implement returning the proper time with SO_CONNECT_TIME.", 1 },'; \ - ) > ws2_32-Connect_Time.ok - -# Patchset ws2_32-TransmitFile -# | -# | This patchset fixes the following Wine bugs: -# | * [#5048] Support for TransmitFile -# | -# | Modified files: -# | * dlls/ws2_32/socket.c, dlls/ws2_32/tests/sock.c, include/winsock.h, server/protocol.def, server/sock.c -# | -.INTERMEDIATE: ws2_32-TransmitFile.ok -ws2_32-TransmitFile.ok: - $(call APPLY_FILE,ws2_32-TransmitFile/0001-ws2_32-Add-stub-for-TransmitFile.patch) - $(call APPLY_FILE,ws2_32-TransmitFile/0002-ws2_32-Check-for-invalid-parameters-in-TransmitFile.patch) - $(call APPLY_FILE,ws2_32-TransmitFile/0003-ws2_32-Implement-a-basic-synchronous-TransmitFile.patch) - $(call APPLY_FILE,ws2_32-TransmitFile/0004-ws2_32-Add-asynchronous-support-for-TransmitFile.patch) - $(call APPLY_FILE,ws2_32-TransmitFile/0005-ws2_32-Add-support-for-TF_DISCONNECT-and-TF_REUSE_SO.patch) - @( \ - echo '+ { "Erich E. Hoover", "ws2_32: Add stub for TransmitFile.", 1 },'; \ - echo '+ { "Erich E. Hoover", "ws2_32: Check for invalid parameters in TransmitFile.", 1 },'; \ - echo '+ { "Erich E. Hoover", "ws2_32: Implement a basic synchronous TransmitFile.", 1 },'; \ - echo '+ { "Erich E. Hoover", "ws2_32: Add asynchronous support for TransmitFile.", 1 },'; \ - echo '+ { "Erich E. Hoover", "ws2_32: Add support for TF_DISCONNECT and TF_REUSE_SOCKET to TransmitFile.", 1 },'; \ - ) > ws2_32-TransmitFile.ok - -# Patchset ws2_32-WriteWatches -# | -# | Modified files: -# | * dlls/ntdll/ntdll.spec, dlls/ntdll/ntdll_misc.h, dlls/ntdll/signal_i386.c, dlls/ntdll/virtual.c, dlls/ws2_32/socket.c, -# | include/winternl.h -# | -.INTERMEDIATE: ws2_32-WriteWatches.ok -ws2_32-WriteWatches.ok: - $(call APPLY_FILE,ws2_32-WriteWatches/0001-ntdll-Handle-write-watches-in-virtual_uninterrupted_.patch) - $(call APPLY_FILE,ws2_32-WriteWatches/0002-ntdll-Expose-wine_uninterrupted_-read-write-_memory-.patch) - $(call APPLY_FILE,ws2_32-WriteWatches/0003-ws2_32-Avoid-race-conditions-of-async-WSARecv-operat.patch) - @( \ - echo '+ { "Sebastian Lackner", "ntdll: Handle write watches in virtual_uninterrupted_write_memory.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ntdll: Expose wine_uninterrupted_[read|write]_memory as exports.", 1 },'; \ - echo '+ { "Sebastian Lackner", "ws2_32: Avoid race-conditions of async WSARecv() operations with write watches.", 2 },'; \ - ) > ws2_32-WriteWatches.ok - -# Patchset ws2_32-getaddrinfo -# | -# | This patchset fixes the following Wine bugs: -# | * [#29609] Try harder to get the host name address in getaddrinfo() -# | -# | Modified files: -# | * dlls/ws2_32/socket.c, dlls/ws2_32/tests/sock.c -# | -.INTERMEDIATE: ws2_32-getaddrinfo.ok -ws2_32-getaddrinfo.ok: - $(call APPLY_FILE,ws2_32-getaddrinfo/0001-ws2_32-Try-harder-to-get-the-host-name-address-in-ge.patch) - @( \ - echo '+ { "Bruno Jesus", "ws2_32: Try harder to get the host name address in getaddrinfo().", 1 },'; \ - ) > ws2_32-getaddrinfo.ok - -# Patchset wtsapi32-EnumerateProcesses -# | -# | This patchset fixes the following Wine bugs: -# | * [#29903] Support for WTSEnumerateProcessesW -# | -# | Modified files: -# | * dlls/wtsapi32/tests/wtsapi.c, dlls/wtsapi32/wtsapi32.c -# | -.INTERMEDIATE: wtsapi32-EnumerateProcesses.ok -wtsapi32-EnumerateProcesses.ok: - $(call APPLY_FILE,wtsapi32-EnumerateProcesses/0001-wtsapi32-Partial-implementation-of-WTSEnumerateProce.patch) - @( \ - echo '+ { "Sebastian Lackner", "wtsapi32: Partial implementation of WTSEnumerateProcessesW.", 1 },'; \ - ) > wtsapi32-EnumerateProcesses.ok - +install-git: + @echo "WARNING: Using this Makefile is deprecated!" >&2 + "$(CURDIR)/patchinstall.sh" DESTDIR="$(DESTDIR)" --all --backend=git + +.PHONY: series +series: + @echo "ERROR: Using this Makefile is deprecated!" >&2 + @false \ No newline at end of file diff --git a/patches/fonts-Missing_Fonts/0004-Add-licenses-for-fonts-as-separate-files.patch b/patches/fonts-Missing_Fonts/0004-Add-licenses-for-fonts-as-separate-files.patch index fb7aa8c7..4fcde2cb 100644 --- a/patches/fonts-Missing_Fonts/0004-Add-licenses-for-fonts-as-separate-files.patch +++ b/patches/fonts-Missing_Fonts/0004-Add-licenses-for-fonts-as-separate-files.patch @@ -865,7 +865,7 @@ index 429646c..8708008 100644 + +----------------------------------------------------------------------- + - Copyright (c) 1993-2014 the Wine project authors (see the file AUTHORS + Copyright (c) 1993-2015 the Wine project authors (see the file AUTHORS for a complete list) Wine is free software; you can redistribute it and/or modify it under diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh new file mode 100755 index 00000000..ebf6fc17 --- /dev/null +++ b/patches/patchinstall.sh @@ -0,0 +1,3389 @@ +#!/usr/bin/env bash +# +# Script to automatically install all Wine Staging patches +# +# Copyright (C) 2015 Sebastian Lackner +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +# + +# Show usage information +usage() +{ + echo "" + echo "Usage: ./patchinstall.sh [DESTDIR=path] [--all] [-W patchset] [patchset ...]" + echo "" + echo "Autogenerated script to apply all Wine Staging patches on your Wine" + echo "source tree. This script replaces and enhances the old method of" + echo "using a Makefile." + 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 "" + echo "Backends:" + echo " --backend=patch Use regular 'patch' utility to apply patches (default)" + echo " --backend=git Use 'git am' to apply patches" + echo "" +} + +# Critical error, abort +abort() +{ + echo "ERROR: $1" >&2 + exit 1 +} + +# Enable or disable all patchsets +patch_enable_all () +{ + enable_ws2_32_WriteWatches="$1" + enable_ntdll_WRITECOPY="$1" + enable_Exagear="$1" + enable_Miscellaneous="$1" + enable_Pipelight="$1" + enable_Staging="$1" + enable_atl_IOCS_Property="$1" + enable_comctl32_LoadIconMetric="$1" + enable_configure_Absolute_RPATH="$1" + enable_d3d9_Surface_Refcount="$1" + enable_d3dx9_36_ConvertToIndexedBlended="$1" + enable_d3dx9_36_D3DXStubs="$1" + enable_wined3d_DXTn="$1" + enable_d3dx9_36_DXTn="$1" + enable_d3dx9_36_DrawText="$1" + enable_d3dx9_36_Filter_Warnings="$1" + enable_d3dx9_36_FindNextValidTechnique="$1" + enable_d3dx9_36_GetShaderSemantics="$1" + enable_d3dx9_36_Optimize_Inplace="$1" + enable_d3dx9_36_Texture_Align="$1" + enable_d3dx9_36_UpdateSkinnedMesh="$1" + enable_dbghelp_Debug_Symbols="$1" + enable_dbghelp_KdHelp="$1" + enable_ddraw_d3d_execute_buffer="$1" + enable_dinput_Events="$1" + enable_dsound_Fast_Mixer="$1" + enable_dxgi_GetDesc="$1" + enable_fonts_Missing_Fonts="$1" + enable_gdi32_MaxPixelFormats="$1" + enable_gdi32_MultiMonitor="$1" + enable_gdiplus_GdipCreateRegionRgnData="$1" + enable_imagehlp_BindImageEx="$1" + enable_imm32_Cross_Thread_Access="$1" + enable_include_Winetest="$1" + enable_iphlpapi_TCP_Table="$1" + enable_kernel32_Console_Handles="$1" + enable_kernel32_GetFinalPathNameByHandle="$1" + enable_kernel32_GetNumaProcessorNode="$1" + enable_kernel32_GetStringTypeW="$1" + enable_kernel32_GetSystemTimes="$1" + enable_kernel32_GetVolumePathName="$1" + enable_kernel32_Named_Pipe="$1" + enable_kernel32_NeedCurrentDirectoryForExePath="$1" + enable_kernel32_Profile="$1" + enable_kernel32_UTF7_Support="$1" + enable_kernel32_VerifyVersionInfo="$1" + enable_libs_Unicode_Collation="$1" + enable_makedep_PARENTSPEC="$1" + enable_msvcp90_basic_string_wchar_dtor="$1" + enable_msvcrt_atof_strtod="$1" + enable_ntdll_DOS_Attributes="$1" + enable_ntdll_DVD_Read_Size="$1" + enable_ntdll_DllRedirects="$1" + enable_ntdll_Dynamic_DST="$1" + enable_ntdll_Exception="$1" + enable_ntdll_FD_Cache="$1" + enable_ntdll_FileDispositionInformation="$1" + enable_ntdll_Fix_Alignment="$1" + enable_ntdll_Fix_Free="$1" + enable_ntdll_Heap_FreeLists="$1" + enable_ntdll_Junction_Points="$1" + enable_ntdll_LZNT1_Compression="$1" + enable_ntdll_NtQuerySection="$1" + enable_ntdll_NtSetLdtEntries="$1" + enable_ntdll_Pipe_SpecialCharacters="$1" + enable_ntdll_RtlIpv4StringToAddressExA="$1" + enable_ntdll_ThreadTime="$1" + enable_ntdll_User_Shared_Data="$1" + enable_ntdll_WinSqm="$1" + enable_ntoskrnl_Emulator="$1" + enable_ntoskrnl_Irp_Status="$1" + enable_ntoskrnl_Stub_FileObject="$1" + enable_nvcuda_CUDA_Support="$1" + enable_ole32_CoWaitForMultipleHandles="$1" + enable_quartz_MediaSeeking_Positions="$1" + enable_riched20_IText_Interface="$1" + enable_secur32_Schannel_ContextAttr="$1" + enable_server_Stored_ACLs="$1" + enable_server_Inherited_ACLs="$1" + enable_server_ACL_Compat="$1" + enable_server_Address_Change_Notification="$1" + enable_server_CreateProcess_ACLs="$1" + enable_server_Misc_ACL="$1" + enable_server_OpenProcess="$1" + enable_server_Unexpected_Wakeup="$1" + enable_setupapi_SetupPromptForDisk="$1" + enable_shdocvw_ParseURLFromOutsideSource_Tests="$1" + enable_shell32_Default_Folder_ACLs="$1" + enable_shell32_Default_Path="$1" + enable_shell32_Icons="$1" + enable_shell32_RunDLL_CallEntry16="$1" + enable_shell32_SHCreateSessionKey="$1" + enable_shell32_SHFileOperation="$1" + enable_shlwapi_PathIsDirectoryEmptyW="$1" + enable_shlwapi_UrlCombine="$1" + enable_slc_SLGetWindowsInformation="$1" + enable_urlmon_CoInternetSetFeatureEnabled="$1" + enable_user32_Dialog_Paint_Event="$1" + enable_user32_DrawTextExW="$1" + enable_user32_GetRawInputDeviceList="$1" + enable_user32_GetSystemMetrics="$1" + enable_user32_GetTipText="$1" + enable_user32_Mouse_Message_Hwnd="$1" + enable_user32_ScrollWindowEx="$1" + enable_user32_WndProc="$1" + enable_wineboot_HKEY_DYN_DATA="$1" + enable_winebuild_LinkerVersion="$1" + enable_wined3d_CSMT_Helper="$1" + enable_wined3d_CSMT_Main="$1" + enable_winecfg_Staging="$1" + enable_wined3d_Revert_PixelFormat="$1" + enable_winedevice_Fix_Relocation="$1" + enable_winemenubuilder_Desktop_Icon_Path="$1" + enable_winepulse_PulseAudio_Support="$1" + enable_winex11_CandidateWindowPos="$1" + enable_winex11_Clipboard_HTML="$1" + enable_winex11_Limited_Resolutions="$1" + enable_winex11_Window_Groups="$1" + enable_winex11_XEMBED="$1" + enable_winex11_wglShareLists="$1" + enable_wininet_FtpFindFirstFile="$1" + enable_wininet_encoding="$1" + enable_wpcap_Dynamic_Linking="$1" + enable_ws2_32_Connect_Time="$1" + enable_ws2_32_TransmitFile="$1" + enable_ws2_32_getaddrinfo="$1" + enable_wtsapi32_EnumerateProcesses="$1" +} + +# Enable or disable a specific patchset +patch_enable () +{ + case "$1" in + ws2_32-WriteWatches) + enable_ws2_32_WriteWatches="$2" + ;; + ntdll-WRITECOPY) + enable_ntdll_WRITECOPY="$2" + ;; + Exagear) + enable_Exagear="$2" + ;; + Miscellaneous) + enable_Miscellaneous="$2" + ;; + Pipelight) + enable_Pipelight="$2" + ;; + Staging) + enable_Staging="$2" + ;; + atl-IOCS_Property) + enable_atl_IOCS_Property="$2" + ;; + comctl32-LoadIconMetric) + enable_comctl32_LoadIconMetric="$2" + ;; + configure-Absolute_RPATH) + enable_configure_Absolute_RPATH="$2" + ;; + d3d9-Surface_Refcount) + enable_d3d9_Surface_Refcount="$2" + ;; + d3dx9_36-ConvertToIndexedBlended) + enable_d3dx9_36_ConvertToIndexedBlended="$2" + ;; + d3dx9_36-D3DXStubs) + enable_d3dx9_36_D3DXStubs="$2" + ;; + wined3d-DXTn) + enable_wined3d_DXTn="$2" + ;; + d3dx9_36-DXTn) + enable_d3dx9_36_DXTn="$2" + ;; + d3dx9_36-DrawText) + enable_d3dx9_36_DrawText="$2" + ;; + d3dx9_36-Filter_Warnings) + enable_d3dx9_36_Filter_Warnings="$2" + ;; + d3dx9_36-FindNextValidTechnique) + enable_d3dx9_36_FindNextValidTechnique="$2" + ;; + d3dx9_36-GetShaderSemantics) + enable_d3dx9_36_GetShaderSemantics="$2" + ;; + d3dx9_36-Optimize_Inplace) + enable_d3dx9_36_Optimize_Inplace="$2" + ;; + d3dx9_36-Texture_Align) + enable_d3dx9_36_Texture_Align="$2" + ;; + d3dx9_36-UpdateSkinnedMesh) + enable_d3dx9_36_UpdateSkinnedMesh="$2" + ;; + dbghelp-Debug_Symbols) + enable_dbghelp_Debug_Symbols="$2" + ;; + dbghelp-KdHelp) + enable_dbghelp_KdHelp="$2" + ;; + ddraw-d3d_execute_buffer) + enable_ddraw_d3d_execute_buffer="$2" + ;; + dinput-Events) + enable_dinput_Events="$2" + ;; + dsound-Fast_Mixer) + enable_dsound_Fast_Mixer="$2" + ;; + dxgi-GetDesc) + enable_dxgi_GetDesc="$2" + ;; + fonts-Missing_Fonts) + enable_fonts_Missing_Fonts="$2" + ;; + gdi32-MaxPixelFormats) + enable_gdi32_MaxPixelFormats="$2" + ;; + gdi32-MultiMonitor) + enable_gdi32_MultiMonitor="$2" + ;; + gdiplus-GdipCreateRegionRgnData) + enable_gdiplus_GdipCreateRegionRgnData="$2" + ;; + imagehlp-BindImageEx) + enable_imagehlp_BindImageEx="$2" + ;; + imm32-Cross_Thread_Access) + enable_imm32_Cross_Thread_Access="$2" + ;; + include-Winetest) + enable_include_Winetest="$2" + ;; + iphlpapi-TCP_Table) + enable_iphlpapi_TCP_Table="$2" + ;; + kernel32-Console_Handles) + enable_kernel32_Console_Handles="$2" + ;; + kernel32-GetFinalPathNameByHandle) + enable_kernel32_GetFinalPathNameByHandle="$2" + ;; + kernel32-GetNumaProcessorNode) + enable_kernel32_GetNumaProcessorNode="$2" + ;; + kernel32-GetStringTypeW) + enable_kernel32_GetStringTypeW="$2" + ;; + kernel32-GetSystemTimes) + enable_kernel32_GetSystemTimes="$2" + ;; + kernel32-GetVolumePathName) + enable_kernel32_GetVolumePathName="$2" + ;; + kernel32-Named_Pipe) + enable_kernel32_Named_Pipe="$2" + ;; + kernel32-NeedCurrentDirectoryForExePath) + enable_kernel32_NeedCurrentDirectoryForExePath="$2" + ;; + kernel32-Profile) + enable_kernel32_Profile="$2" + ;; + kernel32-UTF7_Support) + enable_kernel32_UTF7_Support="$2" + ;; + kernel32-VerifyVersionInfo) + enable_kernel32_VerifyVersionInfo="$2" + ;; + libs-Unicode_Collation) + enable_libs_Unicode_Collation="$2" + ;; + makedep-PARENTSPEC) + enable_makedep_PARENTSPEC="$2" + ;; + msvcp90-basic_string_wchar_dtor) + enable_msvcp90_basic_string_wchar_dtor="$2" + ;; + msvcrt-atof_strtod) + enable_msvcrt_atof_strtod="$2" + ;; + ntdll-DOS_Attributes) + enable_ntdll_DOS_Attributes="$2" + ;; + ntdll-DVD_Read_Size) + enable_ntdll_DVD_Read_Size="$2" + ;; + ntdll-DllRedirects) + enable_ntdll_DllRedirects="$2" + ;; + ntdll-Dynamic_DST) + enable_ntdll_Dynamic_DST="$2" + ;; + ntdll-Exception) + enable_ntdll_Exception="$2" + ;; + ntdll-FD_Cache) + enable_ntdll_FD_Cache="$2" + ;; + ntdll-FileDispositionInformation) + enable_ntdll_FileDispositionInformation="$2" + ;; + ntdll-Fix_Alignment) + enable_ntdll_Fix_Alignment="$2" + ;; + ntdll-Fix_Free) + enable_ntdll_Fix_Free="$2" + ;; + ntdll-Heap_FreeLists) + enable_ntdll_Heap_FreeLists="$2" + ;; + ntdll-Junction_Points) + enable_ntdll_Junction_Points="$2" + ;; + ntdll-LZNT1_Compression) + enable_ntdll_LZNT1_Compression="$2" + ;; + ntdll-NtQuerySection) + enable_ntdll_NtQuerySection="$2" + ;; + ntdll-NtSetLdtEntries) + enable_ntdll_NtSetLdtEntries="$2" + ;; + ntdll-Pipe_SpecialCharacters) + enable_ntdll_Pipe_SpecialCharacters="$2" + ;; + ntdll-RtlIpv4StringToAddressExA) + enable_ntdll_RtlIpv4StringToAddressExA="$2" + ;; + ntdll-ThreadTime) + enable_ntdll_ThreadTime="$2" + ;; + ntdll-User_Shared_Data) + enable_ntdll_User_Shared_Data="$2" + ;; + ntdll-WinSqm) + enable_ntdll_WinSqm="$2" + ;; + ntoskrnl-Emulator) + enable_ntoskrnl_Emulator="$2" + ;; + ntoskrnl-Irp_Status) + enable_ntoskrnl_Irp_Status="$2" + ;; + ntoskrnl-Stub_FileObject) + enable_ntoskrnl_Stub_FileObject="$2" + ;; + nvcuda-CUDA_Support) + enable_nvcuda_CUDA_Support="$2" + ;; + ole32-CoWaitForMultipleHandles) + enable_ole32_CoWaitForMultipleHandles="$2" + ;; + quartz-MediaSeeking_Positions) + enable_quartz_MediaSeeking_Positions="$2" + ;; + riched20-IText_Interface) + enable_riched20_IText_Interface="$2" + ;; + secur32-Schannel_ContextAttr) + enable_secur32_Schannel_ContextAttr="$2" + ;; + server-Stored_ACLs) + enable_server_Stored_ACLs="$2" + ;; + server-Inherited_ACLs) + enable_server_Inherited_ACLs="$2" + ;; + server-ACL_Compat) + enable_server_ACL_Compat="$2" + ;; + server-Address_Change_Notification) + enable_server_Address_Change_Notification="$2" + ;; + server-CreateProcess_ACLs) + enable_server_CreateProcess_ACLs="$2" + ;; + server-Misc_ACL) + enable_server_Misc_ACL="$2" + ;; + server-OpenProcess) + enable_server_OpenProcess="$2" + ;; + server-Unexpected_Wakeup) + enable_server_Unexpected_Wakeup="$2" + ;; + setupapi-SetupPromptForDisk) + enable_setupapi_SetupPromptForDisk="$2" + ;; + shdocvw-ParseURLFromOutsideSource_Tests) + enable_shdocvw_ParseURLFromOutsideSource_Tests="$2" + ;; + shell32-Default_Folder_ACLs) + enable_shell32_Default_Folder_ACLs="$2" + ;; + shell32-Default_Path) + enable_shell32_Default_Path="$2" + ;; + shell32-Icons) + enable_shell32_Icons="$2" + ;; + shell32-RunDLL_CallEntry16) + enable_shell32_RunDLL_CallEntry16="$2" + ;; + shell32-SHCreateSessionKey) + enable_shell32_SHCreateSessionKey="$2" + ;; + shell32-SHFileOperation) + enable_shell32_SHFileOperation="$2" + ;; + shlwapi-PathIsDirectoryEmptyW) + enable_shlwapi_PathIsDirectoryEmptyW="$2" + ;; + shlwapi-UrlCombine) + enable_shlwapi_UrlCombine="$2" + ;; + slc-SLGetWindowsInformation) + enable_slc_SLGetWindowsInformation="$2" + ;; + urlmon-CoInternetSetFeatureEnabled) + enable_urlmon_CoInternetSetFeatureEnabled="$2" + ;; + user32-Dialog_Paint_Event) + enable_user32_Dialog_Paint_Event="$2" + ;; + user32-DrawTextExW) + enable_user32_DrawTextExW="$2" + ;; + user32-GetRawInputDeviceList) + enable_user32_GetRawInputDeviceList="$2" + ;; + user32-GetSystemMetrics) + enable_user32_GetSystemMetrics="$2" + ;; + user32-GetTipText) + enable_user32_GetTipText="$2" + ;; + user32-Mouse_Message_Hwnd) + enable_user32_Mouse_Message_Hwnd="$2" + ;; + user32-ScrollWindowEx) + enable_user32_ScrollWindowEx="$2" + ;; + user32-WndProc) + enable_user32_WndProc="$2" + ;; + wineboot-HKEY_DYN_DATA) + enable_wineboot_HKEY_DYN_DATA="$2" + ;; + winebuild-LinkerVersion) + enable_winebuild_LinkerVersion="$2" + ;; + wined3d-CSMT_Helper) + enable_wined3d_CSMT_Helper="$2" + ;; + wined3d-CSMT_Main) + enable_wined3d_CSMT_Main="$2" + ;; + winecfg-Staging) + enable_winecfg_Staging="$2" + ;; + wined3d-Revert_PixelFormat) + enable_wined3d_Revert_PixelFormat="$2" + ;; + winedevice-Fix_Relocation) + enable_winedevice_Fix_Relocation="$2" + ;; + winemenubuilder-Desktop_Icon_Path) + enable_winemenubuilder_Desktop_Icon_Path="$2" + ;; + winepulse-PulseAudio_Support) + enable_winepulse_PulseAudio_Support="$2" + ;; + winex11-CandidateWindowPos) + enable_winex11_CandidateWindowPos="$2" + ;; + winex11-Clipboard_HTML) + enable_winex11_Clipboard_HTML="$2" + ;; + winex11-Limited_Resolutions) + enable_winex11_Limited_Resolutions="$2" + ;; + winex11-Window_Groups) + enable_winex11_Window_Groups="$2" + ;; + winex11-XEMBED) + enable_winex11_XEMBED="$2" + ;; + winex11-wglShareLists) + enable_winex11_wglShareLists="$2" + ;; + wininet-FtpFindFirstFile) + enable_wininet_FtpFindFirstFile="$2" + ;; + wininet-encoding) + enable_wininet_encoding="$2" + ;; + wpcap-Dynamic_Linking) + enable_wpcap_Dynamic_Linking="$2" + ;; + ws2_32-Connect_Time) + enable_ws2_32_Connect_Time="$2" + ;; + ws2_32-TransmitFile) + enable_ws2_32_TransmitFile="$2" + ;; + ws2_32-getaddrinfo) + enable_ws2_32_getaddrinfo="$2" + ;; + wtsapi32-EnumerateProcesses) + enable_wtsapi32_EnumerateProcesses="$2" + ;; + *) + return 1 + ;; + esac + return 0 +} + +# Default settings +patch_enable_all 0 +enable_autoupdate=1 +patchlist="/dev/null" +backend="patch" +enable=1 + +if [ "$#" -eq 0 ]; then + abort "No commandline arguments given, don't know what to do." +fi + +while [ "$#" -gt 0 ]; do + if patch_enable "$1" "$enable"; then + shift + enable=1 + continue + fi + + if [ "$enable" -ne 1 ]; then + abort "Wrong use of -W commandline argument, expected patchname." + fi + + case "$1" in + DESTDIR=*) + DESTDIR="${1#*=}" + shift + ;; + + --all) + patch_enable_all 1 + shift + ;; + + --backend=*) + backend="${1#*=}" + shift + ;; + + --help) + usage + exit 0 + ;; + + --no-autoupdate) + enable_autoupdate=0 + shift + ;; + + -W) + enable=2 + shift + ;; + + *) + abort "Unknown commandline argument $1" + exit 1 + esac +done + +if [ "$enable" -ne 1 ]; then + abort "Missing argument for -W, expected patchname." +fi + +# Apply the patches using gitapply.sh, a small wrapper around 'patch' +if [ "$backend" == "patch" ]; then + + patch_apply () + { + echo "Applying $1" + if ! ../debian/tools/gitapply.sh -d "$DESTDIR" < "$1"; then + abort "Failed to apply patch, aborting!" + fi + } + +# GIT backend - apply patches using 'git am' +elif [ "$backend" == "git" ]; then + + patch_apply () + { + echo "Applying $1" + if ! cat "$1" | (cd "$DESTDIR" && git am); then + abort "Failed to apply patch, aborting!" + fi + } + +# Stacked GIT backend - import the patches (mainly for developers) +elif [ "$backend" == "stg" ]; then + + enable_autoupdate=0 + abort "Not implemented." + +else + abort "Selected backend $backend not supported." +fi + + +if [ "$enable_winecfg_Staging" -eq 1 ]; then + [ "$enable_ntdll_DllRedirects" -gt 1 ] && abort "ERROR: Patchset ntdll-DllRedirects disabled, but winecfg-Staging depends on that." >&2 + [ "$enable_wined3d_CSMT_Main" -gt 1 ] && abort "ERROR: Patchset wined3d-CSMT_Main disabled, but winecfg-Staging depends on that." >&2 + enable_ntdll_DllRedirects=1 + enable_wined3d_CSMT_Main=1 +fi + +if [ "$enable_wined3d_CSMT_Main" -eq 1 ]; then + [ "$enable_wined3d_CSMT_Helper" -gt 1 ] && abort "ERROR: Patchset wined3d-CSMT_Helper disabled, but wined3d-CSMT_Main depends on that." >&2 + enable_wined3d_CSMT_Helper=1 +fi + +if [ "$enable_wined3d_CSMT_Helper" -eq 1 ]; then + [ "$enable_makedep_PARENTSPEC" -gt 1 ] && abort "ERROR: Patchset makedep-PARENTSPEC disabled, but wined3d-CSMT_Helper depends on that." >&2 + [ "$enable_wined3d_DXTn" -gt 1 ] && abort "ERROR: Patchset wined3d-DXTn disabled, but wined3d-CSMT_Helper depends on that." >&2 + enable_makedep_PARENTSPEC=1 + enable_wined3d_DXTn=1 +fi + +if [ "$enable_server_ACL_Compat" -eq 1 ]; then + [ "$enable_server_Inherited_ACLs" -gt 1 ] && abort "ERROR: Patchset server-Inherited_ACLs disabled, but server-ACL_Compat depends on that." >&2 + enable_server_Inherited_ACLs=1 +fi + +if [ "$enable_server_Inherited_ACLs" -eq 1 ]; then + [ "$enable_server_Stored_ACLs" -gt 1 ] && abort "ERROR: Patchset server-Stored_ACLs disabled, but server-Inherited_ACLs depends on that." >&2 + enable_server_Stored_ACLs=1 +fi + +if [ "$enable_server_Stored_ACLs" -eq 1 ]; then + [ "$enable_ntdll_DOS_Attributes" -gt 1 ] && abort "ERROR: Patchset ntdll-DOS_Attributes disabled, but server-Stored_ACLs depends on that." >&2 + enable_ntdll_DOS_Attributes=1 +fi + +if [ "$enable_ntoskrnl_Emulator" -eq 1 ]; then + [ "$enable_ntdll_User_Shared_Data" -gt 1 ] && abort "ERROR: Patchset ntdll-User_Shared_Data disabled, but ntoskrnl-Emulator depends on that." >&2 + enable_ntdll_User_Shared_Data=1 +fi + +if [ "$enable_ntdll_Junction_Points" -eq 1 ]; then + [ "$enable_ntdll_Fix_Free" -gt 1 ] && abort "ERROR: Patchset ntdll-Fix_Free disabled, but ntdll-Junction_Points depends on that." >&2 + enable_ntdll_Fix_Free=1 +fi + +if [ "$enable_d3dx9_36_DXTn" -eq 1 ]; then + [ "$enable_wined3d_DXTn" -gt 1 ] && abort "ERROR: Patchset wined3d-DXTn disabled, but d3dx9_36-DXTn depends on that." >&2 + enable_wined3d_DXTn=1 +fi + +if [ "$enable_Exagear" -eq 1 ]; then + [ "$enable_ntdll_WRITECOPY" -gt 1 ] && abort "ERROR: Patchset ntdll-WRITECOPY disabled, but Exagear depends on that." >&2 + enable_ntdll_WRITECOPY=1 +fi + +if [ "$enable_ntdll_WRITECOPY" -eq 1 ]; then + [ "$enable_ws2_32_WriteWatches" -gt 1 ] && abort "ERROR: Patchset ws2_32-WriteWatches disabled, but ntdll-WRITECOPY depends on that." >&2 + enable_ws2_32_WriteWatches=1 +fi + + +if [ -z "$DESTDIR" -a -f ./tools/make_requests ]; then + DESTDIR="$(pwd)" + +elif [ ! -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 [ "$enable_autoupdate" -eq 1 ]; then + patchlist=$(mktemp) + if [ ! -f "$patchlist" ]; then + echo "ERROR: Unable to create temporary file for patchlist." >&2 + exit 1 + fi +fi + + +# Patchset ws2_32-WriteWatches +# | +# | Modified files: +# | * dlls/ntdll/ntdll.spec, dlls/ntdll/ntdll_misc.h, dlls/ntdll/signal_i386.c, dlls/ntdll/virtual.c, dlls/ws2_32/socket.c, +# | include/winternl.h +# | +if [ "$enable_ws2_32_WriteWatches" -eq 1 ]; then + patch_apply ws2_32-WriteWatches/0001-ntdll-Handle-write-watches-in-virtual_uninterrupted_.patch + patch_apply ws2_32-WriteWatches/0002-ntdll-Expose-wine_uninterrupted_-read-write-_memory-.patch + patch_apply ws2_32-WriteWatches/0003-ws2_32-Avoid-race-conditions-of-async-WSARecv-operat.patch + ( + echo '+ { "Sebastian Lackner", "ntdll: Handle write watches in virtual_uninterrupted_write_memory.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Expose wine_uninterrupted_[read|write]_memory as exports.", 1 },'; + echo '+ { "Sebastian Lackner", "ws2_32: Avoid race-conditions of async WSARecv() operations with write watches.", 2 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-WRITECOPY +# | +# | This patchset fixes the following Wine bugs: +# | * [#29384] Voobly expects correct handling of WRITECOPY memory protection +# | +# | Modified files: +# | * dlls/advapi32/crypt.c, dlls/kernel32/tests/virtual.c, dlls/ntdll/ntdll_misc.h, dlls/ntdll/server.c, +# | dlls/ntdll/signal_arm.c, dlls/ntdll/signal_arm64.c, dlls/ntdll/signal_i386.c, dlls/ntdll/signal_powerpc.c, +# | dlls/ntdll/signal_x86_64.c, dlls/ntdll/thread.c, dlls/ntdll/virtual.c +# | +if [ "$enable_ntdll_WRITECOPY" -eq 1 ]; then + patch_apply ntdll-WRITECOPY/0001-ntdll-Trigger-write-watches-before-passing-userdata-.patch + patch_apply ntdll-WRITECOPY/0002-advapi-Trigger-write-watches-before-passing-userdata.patch + patch_apply ntdll-WRITECOPY/0003-ntdll-Setup-a-temporary-signal-handler-during-proces.patch + patch_apply ntdll-WRITECOPY/0004-ntdll-Properly-handle-PAGE_WRITECOPY-protection.-try.patch + patch_apply ntdll-WRITECOPY/0005-ntdll-Only-enable-true-WRITECOPY-protection-when-a-s.patch + ( + echo '+ { "Sebastian Lackner", "ntdll: Trigger write watches before passing userdata pointer to wait_reply.", 1 },'; + echo '+ { "Sebastian Lackner", "advapi: Trigger write watches before passing userdata pointer to read syscall.", 1 },'; + echo '+ { "Michael Müller", "ntdll: Setup a temporary signal handler during process startup to handle page faults.", 1 },'; + echo '+ { "Michael Müller", "ntdll: Properly handle PAGE_WRITECOPY protection.", 5 },'; + echo '+ { "Michael Müller", "ntdll: Only enable true WRITECOPY protection when a special environment variable is set.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset Exagear +# | +# | Modified files: +# | * configure.ac, dlls/ntdll/signal_i386.c, dlls/ntdll/virtual.c, server/ptrace.c +# | +if [ "$enable_Exagear" -eq 1 ]; then + patch_apply Exagear/0001-ntdll-Implement-emulation-of-SIDT-instruction-when-u.patch + patch_apply Exagear/0002-ntdll-Fix-issues-with-write-watches-when-using-Exage.patch + patch_apply Exagear/0003-server-Don-t-attempt-to-use-ptrace-when-running-with.patch + ( + echo '+ { "Sebastian Lackner", "ntdll: Implement emulation of SIDT instruction when using Exagear.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Fix issues with write watches when using Exagear.", 1 },'; + echo '+ { "Sebastian Lackner", "server: Don'\''t attempt to use ptrace when running with Exagear.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset Miscellaneous +# | +# | Modified files: +# | * dlls/d3d9/tests/visual.c, dlls/kernel32/locale.c, dlls/netapi32/netapi32.c, dlls/winealsa.drv/mmdevdrv.c, +# | dlls/wined3d/glsl_shader.c, dlls/wined3d/resource.c, dlls/wined3d/swapchain.c, tools/makedep.c +# | +if [ "$enable_Miscellaneous" -eq 1 ]; then + patch_apply Miscellaneous/0001-wined3d-Silence-repeated-resource_check_usage-FIXME.patch + patch_apply Miscellaneous/0002-kernel32-Silence-repeated-CompareStringEx-FIXME.patch + patch_apply Miscellaneous/0003-wined3d-Silence-repeated-wined3d_swapchain_present-F.patch + patch_apply Miscellaneous/0004-Appease-the-blessed-version-of-gcc-4.5-when-Werror-i.patch + ( + echo '+ { "Erich E. Hoover", "wined3d: Silence repeated resource_check_usage FIXME.", 2 },'; + echo '+ { "Sebastian Lackner", "kernel32: Silence repeated CompareStringEx FIXME.", 1 },'; + echo '+ { "Sebastian Lackner", "wined3d: Silence repeated wined3d_swapchain_present FIXME.", 1 },'; + echo '+ { "Erich E. Hoover", "Appease the blessed version of gcc (4.5) when -Werror is enabled.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset Pipelight +# | +# | Modified files: +# | * dlls/user32/message.c, dlls/wined3d/wined3d.spec, dlls/wined3d/wined3d_main.c, dlls/winex11.drv/init.c, +# | dlls/winex11.drv/opengl.c, dlls/winex11.drv/x11drv.h +# | +if [ "$enable_Pipelight" -eq 1 ]; then + patch_apply Pipelight/0001-winex11-Implement-X11DRV_FLUSH_GDI_DISPLAY-ExtEscape-c.patch + patch_apply Pipelight/0002-user32-Decrease-minimum-SetTimer-interval-to-5-ms.patch + patch_apply Pipelight/0003-wined3d-allow-changing-strict-drawing-through-an-exp.patch + patch_apply Pipelight/0004-winex11.drv-Indicate-direct-rendering-through-OpenGL.patch + ( + echo '+ { "Sebastian Lackner", "winex11: Implement X11DRV_FLUSH_GDI_DISPLAY ExtEscape command.", 1 },'; + echo '+ { "Michael Müller", "user32: Decrease minimum SetTimer interval to 5 ms.", 2 },'; + echo '+ { "Michael Müller", "wined3d: allow changing strict drawing through an exported function.", 1 },'; + echo '+ { "Michael Müller", "winex11.drv: Indicate direct rendering through OpenGL extension.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset Staging +# | +# | Modified files: +# | * dlls/kernel32/process.c, dlls/ntdll/misc.c, dlls/ntdll/ntdll.spec, include/wine/library.h, libs/wine/Makefile.in, +# | libs/wine/config.c, libs/wine/loader.c, libs/wine/wine.def, libs/wine/wine.map, loader/main.c, po/ar.po, po/bg.po, +# | po/ca.po, po/cs.po, po/da.po, po/de.po, po/el.po, po/en.po, po/en_US.po, po/eo.po, po/es.po, po/fa.po, po/fi.po, +# | po/fr.po, po/he.po, po/hi.po, po/hr.po, po/hu.po, po/it.po, po/ja.po, po/ko.po, po/lt.po, po/ml.po, po/nb_NO.po, +# | po/nl.po, po/or.po, po/pa.po, po/pl.po, po/pt_BR.po, po/pt_PT.po, po/rm.po, po/ro.po, po/ru.po, po/sk.po, po/sl.po, +# | po/sr_RS@cyrillic.po, po/sr_RS@latin.po, po/sv.po, po/te.po, po/th.po, po/tr.po, po/uk.po, po/wa.po, po/wine.pot, +# | po/zh_CN.po, po/zh_TW.po, programs/winedbg/winedbg.rc +# | +if [ "$enable_Staging" -eq 1 ]; then + patch_apply Staging/0001-kernel32-Add-winediag-message-to-show-warning-that-t.patch + patch_apply Staging/0002-winedbg-Change-bug-reporting-URL-to-Wine-Staging.patch + patch_apply Staging/0003-winelib-Append-Staging-at-the-end-of-the-version-s.patch + patch_apply Staging/0004-loader-Add-commandline-option-patches-to-show-the-pa.patch + patch_apply Staging/0005-loader-Add-commandline-option-check-libs.patch + ( + echo '+ { "Sebastian Lackner", "kernel32: Add winediag message to show warning, that this isn'\''t vanilla wine.", 1 },'; + echo '+ { "Sebastian Lackner", "winedbg: Change bug reporting URL to Wine Staging.", 1 },'; + echo '+ { "Sebastian Lackner", "winelib: Append '\''(Staging)'\'' at the end of the version string.", 1 },'; + echo '+ { "Sebastian Lackner", "loader: Add commandline option --patches to show the patch list.", 1 },'; + echo '+ { "Michael Müller", "loader: Add commandline option --check-libs.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset atl-IOCS_Property +# | +# | This patchset fixes the following Wine bugs: +# | * [#21767] ATL IOCS data should not be stored in GWLP_USERDATA +# | +# | Modified files: +# | * dlls/atl/atl_ax.c +# | +if [ "$enable_atl_IOCS_Property" -eq 1 ]; then + patch_apply atl-IOCS_Property/0001-atl-Don-t-use-GWLP_USERDATA-to-store-IOCS-to-avoid-c.patch + ( + echo '+ { "Qian Hong", "atl: Don'\''t use GWLP_USERDATA to store IOCS to avoid conflict with Apps.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset comctl32-LoadIconMetric +# | +# | This patchset fixes the following Wine bugs: +# | * [#35375] Support for LoadIconMetric +# | +# | Modified files: +# | * dlls/comctl32/Makefile.in, dlls/comctl32/comctl32.spec, dlls/comctl32/icon.c, dlls/comctl32/tests/misc.c, +# | include/commctrl.h +# | +if [ "$enable_comctl32_LoadIconMetric" -eq 1 ]; then + patch_apply comctl32-LoadIconMetric/0001-comctl32-Implement-LoadIconMetric-function.patch + patch_apply comctl32-LoadIconMetric/0002-comctl32-tests-Add-tests-for-LoadIconMetric-function.patch + ( + echo '+ { "Michael Müller", "comctl32: Implement LoadIconMetric function.", 1 },'; + echo '+ { "Michael Müller", "comctl32/tests: Add tests for LoadIconMetric function.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset configure-Absolute_RPATH +# | +# | This patchset fixes the following Wine bugs: +# | * [#26256] Support for setcap on wine-preloader +# | +# | Modified files: +# | * configure.ac +# | +if [ "$enable_configure_Absolute_RPATH" -eq 1 ]; then + patch_apply configure-Absolute_RPATH/0001-configure-Also-add-the-absolute-RPATH-when-linking-a.patch + ( + echo '+ { "Sebastian Lackner", "configure: Also add the absolute RPATH when linking against libwine.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset d3d9-Surface_Refcount +# | +# | This patchset fixes the following Wine bugs: +# | * [#18477] Avoid crashing when broken app tries to release surface although refcount is zero +# | +# | Modified files: +# | * dlls/d3d9/surface.c +# | +if [ "$enable_d3d9_Surface_Refcount" -eq 1 ]; then + patch_apply d3d9-Surface_Refcount/0001-d3d9-Don-t-decrease-surface-refcount-when-its-alread.patch + ( + echo '+ { "Henri Verbeet", "d3d9: Don'\''t decrease surface refcount when its already zero.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset d3dx9_36-ConvertToIndexedBlended +# | +# | This patchset fixes the following Wine bugs: +# | * [#36449] Fix parameters for ConvertToIndexedBlendedMesh stub +# | +# | Modified files: +# | * dlls/d3dx9_36/skin.c, include/d3dx9mesh.h +# | +if [ "$enable_d3dx9_36_ConvertToIndexedBlended" -eq 1 ]; then + patch_apply d3dx9_36-ConvertToIndexedBlended/0001-d3dx9_36-Fix-d3dx9_skin_info_ConvertToIndexedBlended.patch + ( + echo '+ { "Christian Costa", "d3dx9_36: Fix d3dx9_skin_info_ConvertToIndexedBlendedMesh stub.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset d3dx9_36-D3DXStubs +# | +# | This patchset fixes the following Wine bugs: +# | * [#31984] Add stub for D3DXComputeTangentFrameEx +# | * [#26379] Support for D3DXComputeNormals +# | +# | Modified files: +# | * dlls/d3dx9_24/d3dx9_24.spec, dlls/d3dx9_25/d3dx9_25.spec, dlls/d3dx9_26/d3dx9_26.spec, dlls/d3dx9_27/d3dx9_27.spec, +# | dlls/d3dx9_28/d3dx9_28.spec, dlls/d3dx9_29/d3dx9_29.spec, dlls/d3dx9_30/d3dx9_30.spec, dlls/d3dx9_31/d3dx9_31.spec, +# | dlls/d3dx9_32/d3dx9_32.spec, dlls/d3dx9_33/d3dx9_33.spec, dlls/d3dx9_34/d3dx9_34.spec, dlls/d3dx9_35/d3dx9_35.spec, +# | dlls/d3dx9_36/d3dx9_36.spec, dlls/d3dx9_36/mesh.c, dlls/d3dx9_37/d3dx9_37.spec, dlls/d3dx9_38/d3dx9_38.spec, +# | dlls/d3dx9_39/d3dx9_39.spec, dlls/d3dx9_40/d3dx9_40.spec, dlls/d3dx9_41/d3dx9_41.spec, dlls/d3dx9_42/d3dx9_42.spec, +# | dlls/d3dx9_43/d3dx9_43.spec +# | +if [ "$enable_d3dx9_36_D3DXStubs" -eq 1 ]; then + patch_apply d3dx9_36-D3DXStubs/0001-d3dx9_36-Add-stub-for-D3DXComputeTangentFrameEx.patch + patch_apply d3dx9_36-D3DXStubs/0002-d3dx9_36-Add-stub-for-D3DXIntersect.patch + patch_apply d3dx9_36-D3DXStubs/0003-d3dx9_36-Implement-D3DXComputeNormals.patch + patch_apply d3dx9_36-D3DXStubs/0004-d3dx9_36-Add-stub-for-D3DXComputeNormalMap.patch + ( + echo '+ { "Christian Costa", "d3dx9_36: Add stub for D3DXComputeTangentFrameEx.", 1 },'; + echo '+ { "Christian Costa", "d3dx9_36: Add stub for D3DXIntersect.", 1 },'; + echo '+ { "Christian Costa", "d3dx9_36: Implement D3DXComputeNormals.", 1 },'; + echo '+ { "Christian Costa", "d3dx9_36: Add stub for D3DXComputeNormalMap.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset wined3d-DXTn +# | +# | This patchset fixes the following Wine bugs: +# | * [#25486] Lego Stunt Rally requires DXTn software de/encoding support +# | * [#29586] Tumblebugs 2 requires DXTn software encoding support +# | * [#14939] Black & White needs DXTn software decoding support +# | +# | Modified files: +# | * configure.ac, dlls/wined3d/Makefile.in, dlls/wined3d/dxtn.c, dlls/wined3d/surface.c, dlls/wined3d/wined3d.spec, +# | dlls/wined3d/wined3d_main.c, dlls/wined3d/wined3d_private.h, include/wine/wined3d.h +# | +if [ "$enable_wined3d_DXTn" -eq 1 ]; then + patch_apply wined3d-DXTn/0001-wined3d-Add-support-for-DXTn-software-decoding-throu.patch + patch_apply wined3d-DXTn/0002-wined3d-Improve-DXTn-support-and-export-conversion-f.patch + patch_apply wined3d-DXTn/0003-wined3d-add-DXT1-to-B4G4R4A4-DXT1-to-B5G5R5A1-and-DX.patch + ( + echo '+ { "Michael Müller", "wined3d: Add support for DXTn software decoding through libtxc_dxtn.", 1 },'; + echo '+ { "Christian Costa", "wined3d: Improve DXTn support and export conversion functions for d3dx9_36.", 1 },'; + echo '+ { "Michael Müller", "wined3d: add DXT1 to B4G4R4A4, DXT1 to B5G5R5A1 and DXT3 to B4G4R4A4 conversion.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset d3dx9_36-DXTn +# | +# | This patchset fixes the following Wine bugs: +# | * [#33768] Fix texture corruption in CSI: Fatal Conspiracy +# | * [#19231] Fix crash of Trine Demo on start +# | * [#37391] Exception during start of fr-043 caused by missing DXTn support +# | +# | Modified files: +# | * dlls/d3dx9_36/Makefile.in, dlls/d3dx9_36/surface.c +# | +if [ "$enable_d3dx9_36_DXTn" -eq 1 ]; then + patch_apply d3dx9_36-DXTn/0001-d3dx9_36-Add-dxtn-support.patch + ( + echo '+ { "Christian Costa", "d3dx9_36: Add dxtn support.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset d3dx9_36-DrawText +# | +# | This patchset fixes the following Wine bugs: +# | * [#24754] Support for ID3DXFont::DrawTextA/W +# | +# | Modified files: +# | * dlls/d3dx9_36/font.c +# | +if [ "$enable_d3dx9_36_DrawText" -eq 1 ]; then + patch_apply d3dx9_36-DrawText/0001-d3dx9_36-Implement-ID3DXFontImpl_DrawText.patch + patch_apply d3dx9_36-DrawText/0002-d3dx9_36-Fix-horizontal-centering-in-ID3DXFont_DrawT.patch + ( + echo '+ { "Christian Costa", "d3dx9_36: Implement ID3DXFontImpl_DrawText.", 1 },'; + echo '+ { "Christian Costa", "d3dx9_36: Fix horizontal centering in ID3DXFont_DrawText.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset d3dx9_36-Filter_Warnings +# | +# | This patchset fixes the following Wine bugs: +# | * [#33770] D3DCompileShader should filter specific warning messages +# | +# | Modified files: +# | * dlls/d3dx9_36/shader.c +# | +if [ "$enable_d3dx9_36_Filter_Warnings" -eq 1 ]; then + patch_apply d3dx9_36-Filter_Warnings/0001-d3dx9_36-Filter-out-D3DCompile-warning-messages-that.patch + ( + echo '+ { "Christian Costa", "d3dx9_36: Filter out D3DCompile warning messages that are not present with D3DCompileShader.", 4 },'; + ) >> "$patchlist" +fi + +# Patchset d3dx9_36-FindNextValidTechnique +# | +# | This patchset fixes the following Wine bugs: +# | * [#34101] Implement ID3DXEffect::FindNextValidTechnique +# | +# | Modified files: +# | * dlls/d3dx9_36/effect.c, dlls/d3dx9_36/tests/effect.c +# | +if [ "$enable_d3dx9_36_FindNextValidTechnique" -eq 1 ]; then + patch_apply d3dx9_36-FindNextValidTechnique/0001-d3dx9_36-Implement-ID3DXEffect_FindNextValidTechniqu.patch + ( + echo '+ { "Christian Costa", "d3dx9_36: Implement ID3DXEffect_FindNextValidTechnique + add tests.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset d3dx9_36-GetShaderSemantics +# | +# | This patchset fixes the following Wine bugs: +# | * [#22682] Support for D3DXGetShaderInputSemantics +# | +# | Modified files: +# | * dlls/d3dx9_36/d3dx9_36.spec, dlls/d3dx9_36/shader.c, dlls/d3dx9_36/tests/shader.c, include/d3dx9shader.h +# | +if [ "$enable_d3dx9_36_GetShaderSemantics" -eq 1 ]; then + patch_apply d3dx9_36-GetShaderSemantics/0001-d3dx9_36-Implement-D3DXGetShaderInputSemantics-tests.patch + ( + echo '+ { "Christian Costa", "d3dx9_36: Implement D3DXGetShaderInputSemantics + tests.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset d3dx9_36-Optimize_Inplace +# | +# | Modified files: +# | * dlls/d3dx9_36/mesh.c +# | +if [ "$enable_d3dx9_36_Optimize_Inplace" -eq 1 ]; then + patch_apply d3dx9_36-Optimize_Inplace/0001-d3dx9_36-No-need-to-fail-if-we-don-t-support-vertice.patch + ( + echo '+ { "Christian Costa", "d3dx9_36: No need to fail if we don'\''t support vertices reordering in D3DXMESHOPT_ATTRSORT.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset d3dx9_36-Texture_Align +# | +# | Modified files: +# | * dlls/d3dx9_36/tests/texture.c, dlls/d3dx9_36/texture.c +# | +if [ "$enable_d3dx9_36_Texture_Align" -eq 1 ]; then + patch_apply d3dx9_36-Texture_Align/0001-d3dx9_36-Align-texture-dimensions-to-block-size-for-.patch + ( + echo '+ { "Christian Costa", "d3dx9_36: Align texture dimensions to block size for compressed textures in D3DXCheckTextureRequirements.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset d3dx9_36-UpdateSkinnedMesh +# | +# | This patchset fixes the following Wine bugs: +# | * [#32572] Support for ID3DXSkinInfoImpl_UpdateSkinnedMesh +# | +# | Modified files: +# | * dlls/d3dx9_36/skin.c, dlls/d3dx9_36/tests/mesh.c +# | +if [ "$enable_d3dx9_36_UpdateSkinnedMesh" -eq 1 ]; then + patch_apply d3dx9_36-UpdateSkinnedMesh/0001-d3dx9_36-Implement-ID3DXSkinInfoImpl_UpdateSkinnedMe.patch + ( + echo '+ { "Christian Costa", "d3dx9_36: Implement ID3DXSkinInfoImpl_UpdateSkinnedMesh.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset dbghelp-Debug_Symbols +# | +# | Modified files: +# | * dlls/dbghelp/Makefile.in, dlls/dbghelp/elf_module.c +# | +if [ "$enable_dbghelp_Debug_Symbols" -eq 1 ]; then + patch_apply dbghelp-Debug_Symbols/0001-dbghelp-Always-check-for-debug-symbols-in-BINDIR.patch + ( + echo '+ { "Sebastian Lackner", "dbghelp: Always check for debug symbols in BINDIR.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset dbghelp-KdHelp +# | +# | This patchset fixes the following Wine bugs: +# | * [#37272] Don't fill KdHelp structure for usermode applications +# | +# | Modified files: +# | * dlls/dbghelp/stack.c +# | +if [ "$enable_dbghelp_KdHelp" -eq 1 ]; then + patch_apply dbghelp-KdHelp/0001-dbghelp-Don-t-fill-KdHelp-structure-for-usermode-app.patch + ( + echo '+ { "Sebastian Lackner", "dbghelp: Don'\''t fill KdHelp structure for usermode applications.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ddraw-d3d_execute_buffer +# | +# | Modified files: +# | * dlls/ddraw/executebuffer.c +# | +if [ "$enable_ddraw_d3d_execute_buffer" -eq 1 ]; then + patch_apply ddraw-d3d_execute_buffer/0001-ddraw-Don-t-call-IDirect3DDevice7_DrawIndexedPrimiti.patch + ( + echo '+ { "Christian Costa", "ddraw: Don'\''t call IDirect3DDevice7_DrawIndexedPrimitive if there is no primitive.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset dinput-Events +# | +# | This patchset fixes the following Wine bugs: +# | * [#8854] Ensure X11 input events are handled even without explicit message loop +# | +# | Modified files: +# | * dlls/dinput/device.c, dlls/dinput/keyboard.c, dlls/user32/input.c, dlls/user32/user32.spec, include/winuser.h +# | +if [ "$enable_dinput_Events" -eq 1 ]; then + patch_apply dinput-Events/0001-dinput-Ensure-X11-input-events-are-handled-even-with.patch + ( + echo '+ { "Sebastian Lackner", "dinput: Ensure X11 input events are handled even without explicit message loop.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset dsound-Fast_Mixer +# | +# | This patchset fixes the following Wine bugs: +# | * [#30639] Audio stuttering and performance drops in multiple applications +# | +# | Modified files: +# | * dlls/dsound/dsound_main.c, dlls/dsound/dsound_private.h, dlls/dsound/mixer.c +# | +if [ "$enable_dsound_Fast_Mixer" -eq 1 ]; then + patch_apply dsound-Fast_Mixer/0001-dsound-Add-a-linear-resampler-for-use-with-a-large-n.patch + ( + echo '+ { "Alexander E. Patrakov", "dsound: Add a linear resampler for use with a large number of mixing buffers.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset dxgi-GetDesc +# | +# | Modified files: +# | * dlls/dxgi/output.c +# | +if [ "$enable_dxgi_GetDesc" -eq 1 ]; then + patch_apply dxgi-GetDesc/0001-dxgi-Implement-IDXGIOutput-GetDesc.patch + ( + echo '+ { "Michael Müller", "dxgi: Implement IDXGIOutput::GetDesc.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset fonts-Missing_Fonts +# | +# | This patchset fixes the following Wine bugs: +# | * [#32323] Implement an Arial replacement font +# | * [#13829] Implement a Microsoft Yahei replacement font +# | +# | Modified files: +# | * COPYING.arial, COPYING.cour, COPYING.msyh, LICENSE, fonts/Makefile.in, fonts/arial.sfd, fonts/arial.ttf, fonts/cour.sfd, +# | fonts/cour.ttf, fonts/msyh.sfd, fonts/msyh.ttf +# | +if [ "$enable_fonts_Missing_Fonts" -eq 1 ]; then + patch_apply fonts-Missing_Fonts/0001-fonts-Add-Liberation-Sans-as-an-Arial-replacement.patch + patch_apply fonts-Missing_Fonts/0002-fonts-Add-WenQuanYi-Micro-Hei-as-a-Microsoft-Yahei-r.patch + patch_apply fonts-Missing_Fonts/0003-fonts-Add-Courier-Prime-as-a-Courier-New-replacement.patch + patch_apply fonts-Missing_Fonts/0004-Add-licenses-for-fonts-as-separate-files.patch + ( + echo '+ { "Torsten Kurbad", "fonts: Add Liberation Sans as an Arial replacement.", 2 },'; + echo '+ { "Erich E. Hoover", "fonts: Add WenQuanYi Micro Hei as a Microsoft Yahei replacement.", 1 },'; + echo '+ { "Erich E. Hoover", "fonts: Add Courier Prime as a Courier New replacement.", 1 },'; + echo '+ { "Michael Müller", "Add licenses for fonts as separate files.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset gdi32-MaxPixelFormats +# | +# | This patchset fixes the following Wine bugs: +# | * [#6176] wglDescribePixelFormat should return max index for NULL descriptor +# | +# | Modified files: +# | * dlls/gdi32/dibdrv/opengl.c +# | +if [ "$enable_gdi32_MaxPixelFormats" -eq 1 ]; then + patch_apply gdi32-MaxPixelFormats/0001-gdi32-Return-maximum-number-of-pixel-formats-when-NU.patch + ( + echo '+ { "Sebastian Lackner", "gdi32: Return maximum number of pixel formats when NULL pointer is passed to wglDescribePixelFormat.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset gdi32-MultiMonitor +# | +# | This patchset fixes the following Wine bugs: +# | * [#34978] Multiple applications need EnumDisplayDevicesW implementation +# | * [#37709] GetMonitorInfo returns the same name for all monitors +# | +# | Modified files: +# | * dlls/gdi32/driver.c, dlls/user32/misc.c, dlls/winex11.drv/xinerama.c +# | +if [ "$enable_gdi32_MultiMonitor" -eq 1 ]; then + patch_apply gdi32-MultiMonitor/0001-gdi32-Also-accept-.-DISPLAY-n-devices-names-with-n-o.patch + patch_apply gdi32-MultiMonitor/0002-winex11-Make-GetMonitorInfo-give-a-different-device-.patch + patch_apply gdi32-MultiMonitor/0003-user32-Implement-EnumDisplayDevicesW-based-on-EnumDi.patch + ( + echo '+ { "Ken Thomases", "gdi32: Also accept \"\\\\\\\\.\\\\DISPLAY\" devices names with other than 1 as display devices.", 1 },'; + echo '+ { "Ken Thomases", "winex11: Make GetMonitorInfo() give a different device name (\\\\.\\\\DISPLAY) to each monitor.", 1 },'; + echo '+ { "Ken Thomases", "user32: Implement EnumDisplayDevicesW() based on EnumDisplayMonitors() and GetMonitorInfoW().", 1 },'; + ) >> "$patchlist" +fi + +# Patchset gdiplus-GdipCreateRegionRgnData +# | +# | This patchset fixes the following Wine bugs: +# | * [#34843] Support for GdipCreateRegionRgnData +# | +# | Modified files: +# | * dlls/gdiplus/region.c, dlls/gdiplus/tests/region.c +# | +if [ "$enable_gdiplus_GdipCreateRegionRgnData" -eq 1 ]; then + patch_apply gdiplus-GdipCreateRegionRgnData/0001-gdiplus-Implement-GdipCreateRegionRgnData.-Take-3.patch + ( + echo '+ { "Dmitry Timoshkov", "gdiplus: Implement GdipCreateRegionRgnData.", 3 },'; + ) >> "$patchlist" +fi + +# Patchset imagehlp-BindImageEx +# | +# | This patchset fixes the following Wine bugs: +# | * [#3591] Support for BindImageEx +# | +# | Modified files: +# | * dlls/imagehlp/modify.c, dlls/imagehlp/tests/image.c +# | +if [ "$enable_imagehlp_BindImageEx" -eq 1 ]; then + patch_apply imagehlp-BindImageEx/0001-imagehlp-Implement-parts-of-BindImageEx-to-make-free.patch + ( + echo '+ { "Bernhard Reiter", "imagehlp: Implement parts of BindImageEx to make freezing Python scripts work.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset imm32-Cross_Thread_Access +# | +# | This patchset fixes the following Wine bugs: +# | * [#35361] Limit cross thread access to ImmSet* functions +# | +# | Modified files: +# | * dlls/imm32/imm.c, dlls/imm32/tests/imm32.c +# | +if [ "$enable_imm32_Cross_Thread_Access" -eq 1 ]; then + patch_apply imm32-Cross_Thread_Access/0001-imm32-Move-thread-data-from-TLSEntry-to-an-internal-.patch + patch_apply imm32-Cross_Thread_Access/0002-imm32-Do-not-let-ImmDestroyContext-destroy-any-defau.patch + patch_apply imm32-Cross_Thread_Access/0003-imm32-Use-thread-data-from-target-HWND.patch + patch_apply imm32-Cross_Thread_Access/0004-imm32-Restrict-crossthread-Association-and-destructi.patch + patch_apply imm32-Cross_Thread_Access/0005-imm32-Limit-cross-thread-access-to-ImmSet-functions.patch + ( + echo '+ { "Aric Stewart", "imm32: Move thread data from TLSEntry to an internal list.", 1 },'; + echo '+ { "Aric Stewart", "imm32: Do not let ImmDestroyContext destroy any default contexts.", 1 },'; + echo '+ { "Aric Stewart", "imm32: Use thread data from target HWND.", 1 },'; + echo '+ { "Aric Stewart", "imm32: Restrict crossthread Association and destruction.", 1 },'; + echo '+ { "Aric Stewart", "imm32: Limit cross thread access to ImmSet* functions.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset include-Winetest +# | +# | Modified files: +# | * include/wine/test.h +# | +if [ "$enable_include_Winetest" -eq 1 ]; then + patch_apply include-Winetest/0001-include-Automatically-detect-if-tests-are-running-un.patch + ( + echo '+ { "Sebastian Lackner", "include: Automatically detect if tests are running under Wine when WINETEST_PLATFORM is not specified.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset iphlpapi-TCP_Table +# | +# | This patchset fixes the following Wine bugs: +# | * [#34372] Support for AllocateAndGetTcpExTableFromStack +# | +# | Modified files: +# | * dlls/iphlpapi/iphlpapi.spec, dlls/iphlpapi/ipstats.c, dlls/iphlpapi/ipstats.h +# | +if [ "$enable_iphlpapi_TCP_Table" -eq 1 ]; then + patch_apply iphlpapi-TCP_Table/0001-iphlpapi-Implement-AllocateAndGetTcpExTableFromStack.patch + ( + echo '+ { "Erich E. Hoover", "iphlpapi: Implement AllocateAndGetTcpExTableFromStack.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset kernel32-Console_Handles +# | +# | This patchset fixes the following Wine bugs: +# | * [#36216] Hearthstone fails to start +# | +# | Modified files: +# | * dlls/kernel32/console.c, dlls/kernel32/environ.c, dlls/kernel32/tests/process.c +# | +if [ "$enable_kernel32_Console_Handles" -eq 1 ]; then + patch_apply kernel32-Console_Handles/0001-kernel32-Invalid-console-handles-for-new-processes-a.patch + ( + echo '+ { "Erich E. Hoover", "kernel32: Invalid console handles for new processes are 0, not INVALID_HANDLE_VALUE.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset kernel32-GetFinalPathNameByHandle +# | +# | This patchset fixes the following Wine bugs: +# | * [#36073] Support for GetFinalPathNameByHandle +# | +# | Modified files: +# | * dlls/api-ms-win-core-file-l1-2-0/api-ms-win-core-file-l1-2-0.spec, dlls/kernel32/file.c, dlls/kernel32/kernel32.spec, +# | dlls/kernel32/tests/file.c, include/fileapi.h +# | +if [ "$enable_kernel32_GetFinalPathNameByHandle" -eq 1 ]; then + patch_apply kernel32-GetFinalPathNameByHandle/0001-kernel32-Implement-GetFinalPathNameByHandle.patch + patch_apply kernel32-GetFinalPathNameByHandle/0002-kernel32-tests-Add-tests-for-GetFinalPathNameByHandl.patch + ( + echo '+ { "Michael Müller", "kernel32: Implement GetFinalPathNameByHandle.", 1 },'; + echo '+ { "Michael Müller", "kernel32/tests: Add tests for GetFinalPathNameByHandle.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset kernel32-GetNumaProcessorNode +# | +# | Modified files: +# | * dlls/kernel32/cpu.c, dlls/kernel32/kernel32.spec, dlls/kernel32/tests/Makefile.in, dlls/kernel32/tests/cpu.c, +# | include/winbase.h +# | +if [ "$enable_kernel32_GetNumaProcessorNode" -eq 1 ]; then + patch_apply kernel32-GetNumaProcessorNode/0001-kernel32-Implement-GetNumaProcessorNode.patch + patch_apply kernel32-GetNumaProcessorNode/0002-kernel32-tests-Add-tests-for-GetNumaProcessorNode.patch + ( + echo '+ { "Michael Müller", "kernel32: Implement GetNumaProcessorNode.", 1 },'; + echo '+ { "Michael Müller", "kernel32/tests: Add tests for GetNumaProcessorNode.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset kernel32-GetStringTypeW +# | +# | This patchset fixes the following Wine bugs: +# | * [#37759] Fix access violation when calling GetStringTypeW with NULL src. +# | +# | Modified files: +# | * dlls/kernel32/locale.c, dlls/kernel32/tests/locale.c +# | +if [ "$enable_kernel32_GetStringTypeW" -eq 1 ]; then + patch_apply kernel32-GetStringTypeW/0001-kernel32-Allow-empty-source-in-GetStringTypeW.patch + ( + echo '+ { "Christian Faure", "kernel32: Allow empty source in GetStringTypeW.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset kernel32-GetSystemTimes +# | +# | This patchset fixes the following Wine bugs: +# | * [#19813] Support for GetSystemTimes +# | +# | Modified files: +# | * dlls/kernel32/tests/time.c, dlls/kernel32/time.c +# | +if [ "$enable_kernel32_GetSystemTimes" -eq 1 ]; then + patch_apply kernel32-GetSystemTimes/0001-kernel32-Add-tests-for-GetSystemTimes.patch + patch_apply kernel32-GetSystemTimes/0002-kernel32-Implement-GetSystemTimes.patch + ( + echo '+ { "Louis Lenders", "kernel32: Add tests for GetSystemTimes.", 1 },'; + echo '+ { "Erich E. Hoover", "kernel32: Implement GetSystemTimes.", 3 },'; + ) >> "$patchlist" +fi + +# Patchset kernel32-GetVolumePathName +# | +# | Modified files: +# | * dlls/kernel32/tests/volume.c, dlls/kernel32/volume.c +# | +if [ "$enable_kernel32_GetVolumePathName" -eq 1 ]; then + patch_apply kernel32-GetVolumePathName/0001-kernel32-Implement-GetVolumePathName.patch + patch_apply kernel32-GetVolumePathName/0002-kernel32-Convert-GetVolumePathName-tests-into-a-list.patch + patch_apply kernel32-GetVolumePathName/0003-kernel32-Add-a-bunch-more-GetVolumePathName-tests.patch + patch_apply kernel32-GetVolumePathName/0004-kernel32-tests-Add-a-lot-of-picky-GetVolumePathName-.patch + ( + echo '+ { "Erich E. Hoover", "kernel32: Implement GetVolumePathName.", 1 },'; + echo '+ { "Erich E. Hoover", "kernel32: Convert GetVolumePathName tests into a list.", 1 },'; + echo '+ { "Erich E. Hoover", "kernel32: Add a bunch more GetVolumePathName tests.", 1 },'; + echo '+ { "Sebastian Lackner", "kernel32/tests: Add a lot of picky GetVolumePathName tests.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset kernel32-Named_Pipe +# | +# | This patchset fixes the following Wine bugs: +# | * [#16550] Fix for ConnectNamedPort return value in overlapped mode +# | * [#17195] Support for named pipe message mode (Linux only) +# | +# | Modified files: +# | * dlls/kernel32/file.c, dlls/kernel32/sync.c, dlls/kernel32/tests/pipe.c, dlls/ntdll/file.c, server/named_pipe.c, +# | server/protocol.def, server/sock.c, server/sock.h +# | +if [ "$enable_kernel32_Named_Pipe" -eq 1 ]; then + patch_apply kernel32-Named_Pipe/0001-kernel32-ConnectNamedPort-should-return-FALSE-and-se.patch + patch_apply kernel32-Named_Pipe/0002-kernel32-tests-Add-tests-for-PeekNamedPipe-with-part.patch + patch_apply kernel32-Named_Pipe/0003-kernel32-tests-Add-tests-for-sending-and-receiving-l.patch + patch_apply kernel32-Named_Pipe/0004-kernel32-tests-Add-tests-for-closing-named-pipes.patch + patch_apply kernel32-Named_Pipe/0005-server-Show-warning-if-message-mode-is-not-supported.patch + patch_apply kernel32-Named_Pipe/0006-ntdll-Unify-similar-code-in-NtReadFile-and-FILE_Asyn.patch + patch_apply kernel32-Named_Pipe/0007-ntdll-Move-logic-to-check-for-broken-pipe-into-a-sep.patch + patch_apply kernel32-Named_Pipe/0008-ntdll-Unify-similar-code-in-NtWriteFile-and-FILE_Asy.patch + patch_apply kernel32-Named_Pipe/0009-server-Use-SOCK_SEQPACKET-socket-in-combination-with.patch + patch_apply kernel32-Named_Pipe/0010-ntdll-Add-handling-for-partially-received-messages-i.patch + patch_apply kernel32-Named_Pipe/0011-kernel32-tests-Add-more-tests-with-overlapped-IO-and.patch + patch_apply kernel32-Named_Pipe/0012-ntdll-Fix-some-tests-for-overlapped-partial-reads.patch + patch_apply kernel32-Named_Pipe/0013-kernel32-tests-Test-sending-peeking-and-receiving-an.patch + patch_apply kernel32-Named_Pipe/0014-ntdll-Add-support-for-nonblocking-pipes.patch + patch_apply kernel32-Named_Pipe/0015-kernel32-tests-Add-tests-for-PIPE_NOWAIT-in-message-.patch + patch_apply kernel32-Named_Pipe/0016-ntdll-Allow-to-set-PIPE_NOWAIT-on-byte-mode-pipes.patch + patch_apply kernel32-Named_Pipe/0017-kernel32-tests-Add-additional-tests-for-PIPE_NOWAIT-.patch + ( + echo '+ { "Dan Kegel", "kernel32: ConnectNamedPort should return FALSE and set ERROR_PIPE_CONNECTED on success in overlapped mode.", 1 },'; + echo '+ { "Sebastian Lackner", "kernel32/tests: Add tests for PeekNamedPipe with partial received messages.", 1 },'; + echo '+ { "Sebastian Lackner", "kernel32/tests: Add tests for sending and receiving large messages.", 1 },'; + echo '+ { "Adam Martinson", "kernel32/tests: Add tests for closing named pipes.", 1 },'; + echo '+ { "Sebastian Lackner", "server: Show warning if message mode is not supported.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Unify similar code in NtReadFile and FILE_AsyncReadService.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Move logic to check for broken pipe into a separate function.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Unify similar code in NtWriteFile and FILE_AsyncWriteService.", 1 },'; + echo '+ { "Sebastian Lackner", "server: Use SOCK_SEQPACKET socket in combination with SO_PEEK_OFF to implement message mode on Unix.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Add handling for partially received messages in NtReadFile.", 1 },'; + echo '+ { "Sebastian Lackner", "kernel32/tests: Add more tests with overlapped IO and partial reads from named pipes.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Fix some tests for overlapped partial reads.", 1 },'; + echo '+ { "Sebastian Lackner", "kernel32/tests: Test sending, peeking and receiving an empty message.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Add support for nonblocking pipes.", 1 },'; + echo '+ { "Sebastian Lackner", "kernel32/tests: Add tests for PIPE_NOWAIT in message mode.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Allow to set PIPE_NOWAIT on byte-mode pipes.", 1 },'; + echo '+ { "Sebastian Lackner", "kernel32/tests: Add additional tests for PIPE_NOWAIT in overlapped mode.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset kernel32-NeedCurrentDirectoryForExePath +# | +# | This patchset fixes the following Wine bugs: +# | * [#23934] CreateProcess does not prioritize the working directory over the system search path +# | +# | Modified files: +# | * dlls/kernel32/path.c, dlls/kernel32/process.c, dlls/kernel32/tests/path.c +# | +if [ "$enable_kernel32_NeedCurrentDirectoryForExePath" -eq 1 ]; then + patch_apply kernel32-NeedCurrentDirectoryForExePath/0001-kernel32-Add-SearchPath-test-demonstrating-the-prior.patch + patch_apply kernel32-NeedCurrentDirectoryForExePath/0002-kernel32-NeedCurrentDirectoryForExePath-does-not-use.patch + patch_apply kernel32-NeedCurrentDirectoryForExePath/0003-kernel32-Consider-the-working-directory-first-when-l.patch + ( + echo '+ { "Erich E. Hoover", "kernel32: Add SearchPath test demonstrating the priority of the working directory.", 1 },'; + echo '+ { "Erich E. Hoover", "kernel32: NeedCurrentDirectoryForExePath does not use the registry.", 1 },'; + echo '+ { "Erich E. Hoover", "kernel32: Consider the working directory first when launching executables with CreateProcess.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset kernel32-Profile +# | +# | This patchset fixes the following Wine bugs: +# | * [#8036] Fix handling of empty section and key name for profile files. +# | +# | Modified files: +# | * dlls/kernel32/profile.c, dlls/kernel32/tests/profile.c +# | +if [ "$enable_kernel32_Profile" -eq 1 ]; then + patch_apply kernel32-Profile/0001-kernel32-Allow-empty-profile-section-and-key-name-st.patch + ( + echo '+ { "Claudio Fontana", "kernel32: Allow empty profile section and key name strings.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset kernel32-UTF7_Support +# | +# | This patchset fixes the following Wine bugs: +# | * [#27388] Support for UTF7 encoding/decoding +# | +# | Modified files: +# | * dlls/kernel32/locale.c +# | +if [ "$enable_kernel32_UTF7_Support" -eq 1 ]; then + patch_apply kernel32-UTF7_Support/0001-kernel32-Support-UTF-7-in-MultiByteToWideChar.patch + patch_apply kernel32-UTF7_Support/0002-kernel32-Support-UTF-7-in-WideCharToMultiByte.patch + ( + echo '+ { "Alex Henrie", "kernel32: Support UTF-7 in MultiByteToWideChar.", 3 },'; + echo '+ { "Alex Henrie", "kernel32: Support UTF-7 in WideCharToMultiByte.", 3 },'; + ) >> "$patchlist" +fi + +# Patchset kernel32-VerifyVersionInfo +# | +# | This patchset fixes the following Wine bugs: +# | * [#36143] Fix condition mask handling in RtlVerifyVersionInfo +# | +# | Modified files: +# | * dlls/kernel32/tests/version.c, dlls/ntdll/version.c +# | +if [ "$enable_kernel32_VerifyVersionInfo" -eq 1 ]; then + patch_apply kernel32-VerifyVersionInfo/0001-kernel32-tests-Add-additional-tests-for-condition-ma.patch + patch_apply kernel32-VerifyVersionInfo/0002-ntdll-Fix-condition-mask-handling-in-RtlVerifyVersio.patch + ( + echo '+ { "Sebastian Lackner", "kernel32/tests: Add additional tests for condition mask of VerifyVersionInfoA.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Fix condition mask handling in RtlVerifyVersionInfo.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset libs-Unicode_Collation +# | +# | This patchset fixes the following Wine bugs: +# | * [#10767] Fix comparison of punctuation characters in lstrcmp +# | +# | Modified files: +# | * dlls/kernel32/tests/locale.c, libs/wine/collation.c +# | +if [ "$enable_libs_Unicode_Collation" -eq 1 ]; then + patch_apply libs-Unicode_Collation/0001-libs-Fix-most-problems-with-CompareString.patch + ( + echo '+ { "Dmitry Timoshkov", "libs: Fix most problems with CompareString.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset makedep-PARENTSPEC +# | +# | Modified files: +# | * tools/makedep.c +# | +if [ "$enable_makedep_PARENTSPEC" -eq 1 ]; then + patch_apply makedep-PARENTSPEC/0001-makedep-Add-support-for-PARENTSPEC-Makefile-variable.patch + ( + echo '+ { "Sebastian Lackner", "makedep: Add support for PARENTSPEC Makefile variable.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset msvcp90-basic_string_wchar_dtor +# | +# | This patchset fixes the following Wine bugs: +# | * [#37358] FEAR 1 installer expects basic_string_wchar_dtor to return NULL +# | +# | Modified files: +# | * dlls/msvcp90/msvcp90.h, dlls/msvcp90/string.c, dlls/msvcp90/tests/string.c +# | +if [ "$enable_msvcp90_basic_string_wchar_dtor" -eq 1 ]; then + patch_apply msvcp90-basic_string_wchar_dtor/0001-msvcp90-basic_string_wchar_dtor-needs-to-return-NULL.patch + patch_apply msvcp90-basic_string_wchar_dtor/0002-msvcp90-tests-Add-tests-to-check-that-basic_string_w.patch + ( + echo '+ { "Michael Müller", "msvcp90: basic_string_wchar_dtor needs to return NULL.", 1 },'; + echo '+ { "Michael Müller", "msvcp90/tests: Add tests to check that basic_string_wchar_dtor returns NULL.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset msvcrt-atof_strtod +# | +# | This patchset fixes the following Wine bugs: +# | * [#32550] MSVCRT crashes when NULL is passed as string to atof or strtod +# | +# | Modified files: +# | * dlls/msvcrt/string.c, dlls/msvcrt/tests/string.c +# | +if [ "$enable_msvcrt_atof_strtod" -eq 1 ]; then + patch_apply msvcrt-atof_strtod/0001-msvcrt-Avoid-crash-when-NULL-pointer-is-passed-to-at.patch + ( + echo '+ { "Michael Müller", "msvcrt: Avoid crash when NULL pointer is passed to atof / strtod functions.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-DOS_Attributes +# | +# | This patchset fixes the following Wine bugs: +# | * [#9158] Support for DOS hidden/system file attributes +# | +# | Modified files: +# | * configure.ac, dlls/ntdll/directory.c, dlls/ntdll/file.c, dlls/ntdll/ntdll_misc.h, dlls/ntdll/tests/directory.c, +# | dlls/ntdll/tests/file.c, include/wine/port.h, libs/port/Makefile.in, libs/port/xattr.c +# | +if [ "$enable_ntdll_DOS_Attributes" -eq 1 ]; then + patch_apply ntdll-DOS_Attributes/0001-ntdll-Implement-retrieving-DOS-attributes-in-NtQuery.patch + patch_apply ntdll-DOS_Attributes/0002-ntdll-Implement-retrieving-DOS-attributes-in-NtQuery.patch + patch_apply ntdll-DOS_Attributes/0003-ntdll-Implement-storing-DOS-attributes-in-NtSetInfor.patch + patch_apply ntdll-DOS_Attributes/0004-ntdll-Implement-storing-DOS-attributes-in-NtCreateFi.patch + patch_apply ntdll-DOS_Attributes/0005-libport-Add-support-for-Mac-OS-X-style-extended-attr.patch + patch_apply ntdll-DOS_Attributes/0006-libport-Add-support-for-FreeBSD-style-extended-attri.patch + patch_apply ntdll-DOS_Attributes/0007-ntdll-Perform-the-Unix-style-hidden-file-check-withi.patch + ( + echo '+ { "Erich E. Hoover", "ntdll: Implement retrieving DOS attributes in NtQueryInformationFile.", 1 },'; + echo '+ { "Erich E. Hoover", "ntdll: Implement retrieving DOS attributes in NtQuery[Full]AttributesFile and NtQueryDirectoryFile.", 1 },'; + echo '+ { "Erich E. Hoover", "ntdll: Implement storing DOS attributes in NtSetInformationFile.", 1 },'; + echo '+ { "Erich E. Hoover", "ntdll: Implement storing DOS attributes in NtCreateFile.", 1 },'; + echo '+ { "Erich E. Hoover", "libport: Add support for Mac OS X style extended attributes.", 1 },'; + echo '+ { "Erich E. Hoover", "libport: Add support for FreeBSD style extended attributes.", 1 },'; + echo '+ { "Erich E. Hoover", "ntdll: Perform the Unix-style hidden file check within the unified file info grabbing routine.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-DVD_Read_Size +# | +# | This patchset fixes the following Wine bugs: +# | * [#37767] IOCTL_DVD_READ_STRUCTURE expects the wrong size of output buffer for some requests +# | +# | Modified files: +# | * dlls/ntdll/cdrom.c +# | +if [ "$enable_ntdll_DVD_Read_Size" -eq 1 ]; then + patch_apply ntdll-DVD_Read_Size/0001-ntdll-Fix-expected-IOCTL_DVD_READ_STRUCTURE-expected.patch + ( + echo '+ { "Erich E. Hoover", "ntdll: Fix expected IOCTL_DVD_READ_STRUCTURE expected output size.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-DllRedirects +# | +# | Modified files: +# | * dlls/ntdll/loader.c, dlls/ntdll/loadorder.c, dlls/ntdll/ntdll_misc.h +# | +if [ "$enable_ntdll_DllRedirects" -eq 1 ]; then + patch_apply ntdll-DllRedirects/0001-ntdll-Move-logic-to-determine-loadorder-HKCU-app-key.patch + patch_apply ntdll-DllRedirects/0002-ntdll-Move-logic-to-read-loadorder-registry-values-i.patch + patch_apply ntdll-DllRedirects/0003-ntdll-Move-code-to-determine-module-basename-into-se.patch + patch_apply ntdll-DllRedirects/0004-ntdll-Implement-get_redirect-function.patch + patch_apply ntdll-DllRedirects/0005-ntdll-Implement-loader-redirection-scheme.patch + ( + echo '+ { "Michael Müller", "ntdll: Move logic to determine loadorder HKCU/app key into separate functions.", 1 },'; + echo '+ { "Michael Müller", "ntdll: Move logic to read loadorder registry values into separate function.", 1 },'; + echo '+ { "Michael Müller", "ntdll: Move code to determine module basename into separate function.", 1 },'; + echo '+ { "Michael Müller", "ntdll: Implement get_redirect function.", 1 },'; + echo '+ { "Michael Müller", "ntdll: Implement loader redirection scheme.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-Dynamic_DST +# | +# | This patchset fixes the following Wine bugs: +# | * [#36374] Add Dynamic DST exceptions for Israel Standard Time +# | +# | Modified files: +# | * dlls/ntdll/time.c, loader/wine.inf.in +# | +if [ "$enable_ntdll_Dynamic_DST" -eq 1 ]; then + patch_apply ntdll-Dynamic_DST/0001-ntdll-Add-support-for-Dynamic-DST-daylight-saving-ti.patch + patch_apply ntdll-Dynamic_DST/0002-wine.inf-Add-Dynamic-DST-exceptions-for-Israel-Stand.patch + ( + echo '+ { "Michael Müller", "ntdll: Add support for Dynamic DST (daylight saving time) information in registry.", 1 },'; + echo '+ { "Sebastian Lackner", "wine.inf: Add Dynamic DST exceptions for Israel Standard Time.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-Exception +# | +# | Modified files: +# | * dlls/kernel32/debugger.c, dlls/ntdll/om.c, dlls/ntdll/tests/exception.c +# | +if [ "$enable_ntdll_Exception" -eq 1 ]; then + patch_apply ntdll-Exception/0001-ntdll-Throw-exception-if-invalid-handle-is-passed-to.patch + patch_apply ntdll-Exception/0002-ntdll-OutputDebugString-should-throw-the-exception-a.patch + ( + echo '+ { "Sebastian Lackner", "ntdll: Throw exception if invalid handle is passed to NtClose and debugger enabled.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: OutputDebugString should throw the exception a second time, if a debugger is attached.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-FD_Cache +# | +# | Modified files: +# | * dlls/ntdll/server.c +# | +if [ "$enable_ntdll_FD_Cache" -eq 1 ]; then + patch_apply ntdll-FD_Cache/0001-ntdll-Use-lockfree-implementation-for-get_cached_fd.patch + ( + echo '+ { "Sebastian Lackner", "ntdll: Use lockfree implementation for get_cached_fd.", 5 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-FileDispositionInformation +# | +# | This patchset fixes the following Wine bugs: +# | * [#30397] Support for NtSetInformationFile class FileDispositionInformation +# | +# | Modified files: +# | * dlls/ntdll/file.c, dlls/ntdll/tests/file.c, server/fd.c, server/file.c, server/file.h, server/protocol.def +# | +if [ "$enable_ntdll_FileDispositionInformation" -eq 1 ]; then + patch_apply ntdll-FileDispositionInformation/0001-server-Keep-a-pointer-to-parent-s-fd-unix_name-in-th.patch + patch_apply ntdll-FileDispositionInformation/0002-server-Add-support-for-setting-file-disposition-info.patch + patch_apply ntdll-FileDispositionInformation/0003-server-Do-not-permit-FileDispositionInformation-to-d.patch + ( + echo '+ { "Dmitry Timoshkov", "server: Keep a pointer to parent'\''s fd unix_name in the closed_fd structure.", 1 },'; + echo '+ { "Dmitry Timoshkov", "server: Add support for setting file disposition information.", 1 },'; + echo '+ { "Erich E. Hoover", "server: Do not permit FileDispositionInformation to delete a file without write access.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-Fix_Alignment +# | +# | This patchset fixes the following Wine bugs: +# | * [#33162] Ensure NtProtectVirtualMemory and NtCreateSection are on separate pages +# | +# | Modified files: +# | * dlls/ntdll/virtual.c +# | +if [ "$enable_ntdll_Fix_Alignment" -eq 1 ]; then + patch_apply ntdll-Fix_Alignment/0001-ntdll-Move-NtProtectVirtualMemory-and-NtCreateSectio.patch + ( + echo '+ { "Michael Müller", "ntdll: Move NtProtectVirtualMemory and NtCreateSection to separate pages on x86.", 2 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-Fix_Free +# | +# | Modified files: +# | * dlls/kernel32/path.c +# | +if [ "$enable_ntdll_Fix_Free" -eq 1 ]; then + patch_apply ntdll-Fix_Free/0001-kernel32-Fix-leaking-directory-handle-in-RemoveDirec.patch + ( + echo '+ { "Sebastian Lackner", "kernel32: Fix leaking directory handle in RemoveDirectoryW.", 2 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-Heap_FreeLists +# | +# | Modified files: +# | * dlls/ntdll/heap.c +# | +if [ "$enable_ntdll_Heap_FreeLists" -eq 1 ]; then + patch_apply ntdll-Heap_FreeLists/0001-ntdll-Improve-heap-allocation-performance-by-using-m.patch + ( + echo '+ { "Steaphan Greene", "ntdll: Improve heap allocation performance by using more fine-grained free lists.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-Junction_Points +# | +# | This patchset fixes the following Wine bugs: +# | * [#12401] Support for Junction Points +# | +# | Modified files: +# | * dlls/kernel32/path.c, dlls/kernel32/volume.c, dlls/ntdll/file.c, dlls/ntdll/tests/file.c, include/Makefile.in, +# | include/ntifs.h +# | +if [ "$enable_ntdll_Junction_Points" -eq 1 ]; then + patch_apply ntdll-Junction_Points/0001-ntdll-Add-support-for-junction-point-creation.patch + patch_apply ntdll-Junction_Points/0002-ntdll-Add-support-for-reading-junction-points.patch + patch_apply ntdll-Junction_Points/0003-ntdll-Add-support-for-deleting-junction-points.patch + patch_apply ntdll-Junction_Points/0004-ntdll-Add-a-test-for-junction-point-advertisement.patch + patch_apply ntdll-Junction_Points/0005-kernel32-ntdll-Add-support-for-deleting-junction-poi.patch + patch_apply ntdll-Junction_Points/0006-kernel32-Advertise-junction-point-support.patch + patch_apply ntdll-Junction_Points/0007-ntdll-tests-Add-test-for-deleting-junction-point-tar.patch + ( + echo '+ { "Erich E. Hoover", "ntdll: Add support for junction point creation.", 1 },'; + echo '+ { "Erich E. Hoover", "ntdll: Add support for reading junction points.", 1 },'; + echo '+ { "Erich E. Hoover", "ntdll: Add support for deleting junction points.", 1 },'; + echo '+ { "Erich E. Hoover", "ntdll: Add a test for junction point advertisement.", 1 },'; + echo '+ { "Erich E. Hoover", "kernel32,ntdll: Add support for deleting junction points with RemoveDirectory.", 1 },'; + echo '+ { "Erich E. Hoover", "kernel32: Advertise junction point support.", 1 },'; + echo '+ { "Erich E. Hoover", "ntdll/tests: Add test for deleting junction point target.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-LZNT1_Compression +# | +# | This patchset fixes the following Wine bugs: +# | * [#37449] Support for RtlDecompressBuffer +# | +# | Modified files: +# | * dlls/ntdll/ntdll.spec, dlls/ntdll/rtl.c, dlls/ntdll/tests/rtl.c, dlls/ntoskrnl.exe/ntoskrnl.exe.spec, include/winnt.h +# | +if [ "$enable_ntdll_LZNT1_Compression" -eq 1 ]; then + patch_apply ntdll-LZNT1_Compression/0001-ntdll-Implement-semi-stub-for-RtlGetCompressionWorkS.patch + patch_apply ntdll-LZNT1_Compression/0002-ntdll-Implement-semi-stub-for-RtlCompressBuffer.patch + patch_apply ntdll-LZNT1_Compression/0003-ntdll-Implement-LZNT1-algorithm-for-RtlDecompressBuf.patch + patch_apply ntdll-LZNT1_Compression/0004-ntdll-tests-Add-tests-for-Rtl-Decompress-Compress-Bu.patch + ( + echo '+ { "Sebastian Lackner", "ntdll: Implement semi-stub for RtlGetCompressionWorkSpaceSize.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Implement semi-stub for RtlCompressBuffer.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Implement LZNT1 algorithm for RtlDecompressBuffer.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll/tests: Add tests for Rtl[Decompress|Compress]Buffer and RtlGetCompressionWorkSpaceSize.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-NtQuerySection +# | +# | This patchset fixes the following Wine bugs: +# | * [#37338] Support for NtQuerySection +# | +# | Modified files: +# | * dlls/kernel32/tests/virtual.c, dlls/ntdll/nt.c, dlls/ntdll/ntdll.spec, dlls/ntdll/virtual.c, include/winternl.h, +# | server/mapping.c, server/protocol.def +# | +if [ "$enable_ntdll_NtQuerySection" -eq 1 ]; then + patch_apply ntdll-NtQuerySection/0001-include-Fix-definition-of-SECTION_BASIC_INFORMATION-.patch + patch_apply ntdll-NtQuerySection/0002-ntdll-Implement-NtQuerySection.patch + patch_apply ntdll-NtQuerySection/0003-kernel32-tests-Add-tests-for-NtQuerySection.patch + ( + echo '+ { "Dmitry Timoshkov", "include: Fix definition of SECTION_BASIC_INFORMATION and SECTION_IMAGE_INFORMATION.", 1 },'; + echo '+ { "Dmitry Timoshkov", "ntdll: Implement NtQuerySection.", 2 },'; + echo '+ { "Dmitry Timoshkov", "kernel32/tests: Add tests for NtQuerySection.", 2 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-NtSetLdtEntries +# | +# | This patchset fixes the following Wine bugs: +# | * [#26268] Add stub for NtSetLdtEntries/ZwSetLdtEntries +# | +# | Modified files: +# | * dlls/ntdll/nt.c, dlls/ntdll/ntdll.spec, include/ddk/wdm.h, include/winternl.h +# | +if [ "$enable_ntdll_NtSetLdtEntries" -eq 1 ]; then + patch_apply ntdll-NtSetLdtEntries/0001-ntdll-add-NtSetLdtEntries-ZwSetLdtEntries-stub-try-2.patch + ( + echo '+ { "Austin English", "ntdll: add NtSetLdtEntries/ZwSetLdtEntries stub.", 2 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-Pipe_SpecialCharacters +# | +# | This patchset fixes the following Wine bugs: +# | * [#28995] Allow special characters in pipe names +# | +# | Modified files: +# | * dlls/kernel32/tests/pipe.c, dlls/ntdll/directory.c +# | +if [ "$enable_ntdll_Pipe_SpecialCharacters" -eq 1 ]; then + patch_apply ntdll-Pipe_SpecialCharacters/0001-ntdll-Allow-special-characters-in-pipe-names.patch + ( + echo '+ { "Michael Müller", "ntdll: Allow special characters in pipe names.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-RtlIpv4StringToAddressExA +# | +# | Modified files: +# | * dlls/ntdll/tests/rtl.c +# | +if [ "$enable_ntdll_RtlIpv4StringToAddressExA" -eq 1 ]; then + patch_apply ntdll-RtlIpv4StringToAddressExA/0001-ntdll-tests-Add-tests-for-RtlIpv4StringToAddressExA.patch + ( + echo '+ { "Sebastian Lackner", "ntdll/tests: Add tests for RtlIpv4StringToAddressExA.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-ThreadTime +# | +# | This patchset fixes the following Wine bugs: +# | * [#20230] Return correct values for GetThreadTimes function +# | +# | Modified files: +# | * dlls/ntdll/thread.c, server/protocol.def, server/thread.c +# | +if [ "$enable_ntdll_ThreadTime" -eq 1 ]; then + patch_apply ntdll-ThreadTime/0001-ntdll-Return-correct-values-in-GetThreadTimes-for-al.patch + ( + echo '+ { "Sebastian Lackner", "ntdll: Return correct values in GetThreadTimes() for all threads.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-User_Shared_Data +# | +# | Modified files: +# | * dlls/ntdll/ntdll.spec, dlls/ntdll/thread.c +# | +if [ "$enable_ntdll_User_Shared_Data" -eq 1 ]; then + patch_apply ntdll-User_Shared_Data/0001-ntdll-Move-code-to-update-user-shared-data-into-a-se.patch + ( + echo '+ { "Sebastian Lackner", "ntdll: Move code to update user shared data into a separate function.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-WinSqm +# | +# | This patchset fixes the following Wine bugs: +# | * [#31971] ntdll is missing WinSqm[Start|End]Session implementation +# | +# | Modified files: +# | * dlls/ntdll/ntdll.spec, dlls/ntdll/rtl.c, dlls/ntdll/tests/rtl.c +# | +if [ "$enable_ntdll_WinSqm" -eq 1 ]; then + patch_apply ntdll-WinSqm/0001-ntdll-Add-stubs-for-WinSqmStartSession-WinSqmEndSess.patch + ( + echo '+ { "Erich E. Hoover", "ntdll: Add stubs for WinSqmStartSession / WinSqmEndSession.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntoskrnl-Emulator +# | +# | This patchset fixes the following Wine bugs: +# | * [#33849] Emulate access to KI_USER_SHARED_DATA kernel page on x86_64 +# | +# | Modified files: +# | * dlls/ntoskrnl.exe/instr.c, dlls/ntoskrnl.exe/ntoskrnl.c +# | +if [ "$enable_ntoskrnl_Emulator" -eq 1 ]; then + patch_apply ntoskrnl-Emulator/0001-ntoskrnl-Emulate-mov-Eb-Gb-instruction-on-x86-proces.patch + patch_apply ntoskrnl-Emulator/0002-ntoskrnl-Emulate-memory-access-to-KI_USER_SHARED_DAT.patch + patch_apply ntoskrnl-Emulator/0003-ntoskrnl-Add-TRACEs-for-instruction-emulator-on-x86_.patch + ( + echo '+ { "Sebastian Lackner", "ntoskrnl: Emulate '\''mov Eb, Gb'\'' instruction on x86 processor architecture.", 1 },'; + echo '+ { "Sebastian Lackner", "ntoskrnl: Emulate memory access to KI_USER_SHARED_DATA on x86_64.", 2 },'; + echo '+ { "Sebastian Lackner", "ntoskrnl: Add TRACEs for instruction emulator on x86_64 to simplify debugging.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntoskrnl-Irp_Status +# | +# | This patchset fixes the following Wine bugs: +# | * [#30155] Fix issues when driver dispatch routine returns different status codes +# | +# | Modified files: +# | * dlls/ntoskrnl.exe/ntoskrnl.c +# | +if [ "$enable_ntoskrnl_Irp_Status" -eq 1 ]; then + patch_apply ntoskrnl-Irp_Status/0001-ntoskrnl-Handle-issues-when-driver-returns-two-diffe.patch + ( + echo '+ { "Sebastian Lackner", "ntoskrnl: Handle issues when driver returns two different status codes from dispatcher.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntoskrnl-Stub_FileObject +# | +# | This patchset fixes the following Wine bugs: +# | * [#37537] Initialize irp.Tail.Overlay.OriginalFileObject with stub file object +# | +# | Modified files: +# | * dlls/ntoskrnl.exe/ntoskrnl.c +# | +if [ "$enable_ntoskrnl_Stub_FileObject" -eq 1 ]; then + patch_apply ntoskrnl-Stub_FileObject/0001-ntoskrnl-Initialize-irp.Tail.Overlay.OriginalFileObj.patch + ( + echo '+ { "Sebastian Lackner", "ntoskrnl: Initialize irp.Tail.Overlay.OriginalFileObject with stub file object.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset nvcuda-CUDA_Support +# | +# | Modified files: +# | * configure.ac, dlls/nvcuda/Makefile.in, dlls/nvcuda/internal.c, dlls/nvcuda/nvcuda.c, dlls/nvcuda/nvcuda.h, +# | dlls/nvcuda/nvcuda.rc, dlls/nvcuda/nvcuda.spec, dlls/nvcuda/tests/Makefile.in, dlls/nvcuda/tests/nvcuda.c, +# | include/Makefile.in, include/cuda.h +# | +if [ "$enable_nvcuda_CUDA_Support" -eq 1 ]; then + patch_apply nvcuda-CUDA_Support/0001-include-Add-cuda.h.h.patch + patch_apply nvcuda-CUDA_Support/0002-nvcuda-Add-stub-dll.patch + patch_apply nvcuda-CUDA_Support/0003-nvcuda-First-implementation.patch + patch_apply nvcuda-CUDA_Support/0004-nvcuda-Add-Unknown5-internal-interface.patch + patch_apply nvcuda-CUDA_Support/0005-nvcuda-Emulate-two-d3d9-initialization-functions.patch + ( + echo '+ { "Sebastian Lackner", "include: Add cuda.h.h.", 1 },'; + echo '+ { "Sebastian Lackner", "nvcuda: Add stub dll.", 1 },'; + echo '+ { "Michael Müller", "nvcuda: First implementation.", 1 },'; + echo '+ { "Michael Müller", "nvcuda: Add Unknown5 internal interface.", 1 },'; + echo '+ { "Michael Müller", "nvcuda: Emulate two d3d9 initialization functions.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ole32-CoWaitForMultipleHandles +# | +# | Modified files: +# | * dlls/ole32/tests/compobj.c +# | +if [ "$enable_ole32_CoWaitForMultipleHandles" -eq 1 ]; then + patch_apply ole32-CoWaitForMultipleHandles/0001-ole32-tests-Add-additional-tests-for-CoWaitForMultip.patch + ( + echo '+ { "Sebastian Lackner", "ole32/tests: Add additional tests for CoWaitForMultipleHandles and WM_QUIT.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset quartz-MediaSeeking_Positions +# | +# | This patchset fixes the following Wine bugs: +# | * [#23174] Return correct IMediaSeeking stream positions in quartz +# | +# | Modified files: +# | * dlls/quartz/filtergraph.c +# | +if [ "$enable_quartz_MediaSeeking_Positions" -eq 1 ]; then + patch_apply quartz-MediaSeeking_Positions/0001-quartz-Include-the-stream-position-in-addition-to-th.patch + patch_apply quartz-MediaSeeking_Positions/0002-quartz-Implement-MediaSeeking_GetCurrentPosition-on-.patch + patch_apply quartz-MediaSeeking_Positions/0003-quartz-Implement-MediaSeeking_GetStopPosition-on-top.patch + patch_apply quartz-MediaSeeking_Positions/0004-quartz-Remove-unused-cache-of-MediaSeeking-stop-posi.patch + ( + echo '+ { "Erich E. Hoover", "quartz: Include the stream position in addition to the reference clock offset in the time returned by MediaSeeking_GetPositions.", 1 },'; + echo '+ { "Erich E. Hoover", "quartz: Implement MediaSeeking_GetCurrentPosition on top of MediaSeeking_GetPositions.", 1 },'; + echo '+ { "Erich E. Hoover", "quartz: Implement MediaSeeking_GetStopPosition on top of MediaSeeking_GetPositions.", 1 },'; + echo '+ { "Erich E. Hoover", "quartz: Remove unused cache of MediaSeeking stop position.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset riched20-IText_Interface +# | +# | This patchset fixes the following Wine bugs: +# | * [#12458] Support for ITextDocument_fnRange function +# | * [#18303] Support for ITextRange, ITextFont and ITextPara +# | +# | Modified files: +# | * dlls/riched20/richole.c, dlls/riched20/run.c, dlls/riched20/tests/richole.c +# | +if [ "$enable_riched20_IText_Interface" -eq 1 ]; then + patch_apply riched20-IText_Interface/0001-riched20-Implement-IText-Selection-Range-Set-Start-E.patch + patch_apply riched20-IText_Interface/0002-riched20-Stub-for-ITextFont-interface-and-implement-.patch + patch_apply riched20-IText_Interface/0003-riched20-Stub-for-ITextPara-interface-and-implement-.patch + patch_apply riched20-IText_Interface/0004-riched20-Fix-ME_RunOfsFromCharOfs-when-nCharOfs-strl.patch + patch_apply riched20-IText_Interface/0005-riched20-Implement-ITextRange-GetText.patch + patch_apply riched20-IText_Interface/0006-riched20-Implement-ITextRange-SetRange.patch + patch_apply riched20-IText_Interface/0007-riched20-Implement-ITextRange-IsEqual.patch + patch_apply riched20-IText_Interface/0008-riched20-Implement-ITextRange-GetStoryLength.patch + patch_apply riched20-IText_Interface/0009-riched20-Implement-ITextSelection-GetStoryLength.patch + patch_apply riched20-IText_Interface/0010-riched20-Fix-invalid-memory-access-when-parent-objec.patch + patch_apply riched20-IText_Interface/0011-riched20-Silence-repeated-FIXMEs-triggered-by-Adobe-.patch + patch_apply riched20-IText_Interface/0012-riched20-Implement-ITextSelection_fnGetDuplicate.patch + ( + echo '+ { "Jactry Zeng", "riched20: Implement IText{Selection, Range}::Set{Start, End}.", 1 },'; + echo '+ { "Jactry Zeng", "riched20: Stub for ITextFont interface and implement ITextRange::GetFont and ITextSelection::GetFont.", 1 },'; + echo '+ { "Jactry Zeng", "riched20: Stub for ITextPara interface and implement ITextRange::GetPara.", 1 },'; + echo '+ { "Jactry Zeng", "riched20: Fix ME_RunOfsFromCharOfs() when nCharOfs > strlen().", 1 },'; + echo '+ { "Jactry Zeng", "riched20: Implement ITextRange::GetText.", 1 },'; + echo '+ { "Jactry Zeng", "riched20: Implement ITextRange::SetRange.", 1 },'; + echo '+ { "Jactry Zeng", "riched20: Implement ITextRange::IsEqual.", 1 },'; + echo '+ { "Jactry Zeng", "riched20: Implement ITextRange::GetStoryLength.", 1 },'; + echo '+ { "Jactry Zeng", "riched20: Implement ITextSelection::GetStoryLength.", 1 },'; + echo '+ { "Sebastian Lackner", "riched20: Fix invalid memory access when parent object was destroyed earlier than child object.", 1 },'; + echo '+ { "Sebastian Lackner", "riched20: Silence repeated FIXMEs triggered by Adobe Reader.", 1 },'; + echo '+ { "Sebastian Lackner", "riched20: Implement ITextSelection_fnGetDuplicate.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset secur32-Schannel_ContextAttr +# | +# | This patchset fixes the following Wine bugs: +# | * [#37527] Return more context attributes in schan_InitializeSecurityContextW +# | +# | Modified files: +# | * dlls/secur32/schannel.c +# | +if [ "$enable_secur32_Schannel_ContextAttr" -eq 1 ]; then + patch_apply secur32-Schannel_ContextAttr/0001-secur32-Return-more-context-attributes-in-schan_Init.patch + ( + echo '+ { "Sebastian Lackner", "secur32: Return more context attributes in schan_InitializeSecurityContextW.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset server-Stored_ACLs +# | +# | This patchset fixes the following Wine bugs: +# | * [#31858] Support for stored file ACLs +# | +# | Modified files: +# | * dlls/advapi32/tests/security.c, include/wine/port.h, server/change.c, server/file.c, server/file.h +# | +if [ "$enable_server_Stored_ACLs" -eq 1 ]; then + patch_apply server-Stored_ACLs/0001-server-Unify-the-storage-of-security-attributes-for-.patch + patch_apply server-Stored_ACLs/0002-server-Unify-the-retrieval-of-security-attributes-fo.patch + patch_apply server-Stored_ACLs/0003-server-Store-file-security-attributes-with-extended-.patch + patch_apply server-Stored_ACLs/0004-server-Store-user-and-group-inside-stored-extended-f.patch + patch_apply server-Stored_ACLs/0005-server-Retrieve-file-security-attributes-with-extend.patch + patch_apply server-Stored_ACLs/0006-server-Convert-return-of-file-security-masks-with-ge.patch + ( + echo '+ { "Erich E. Hoover", "server: Unify the storage of security attributes for files and directories.", 7 },'; + echo '+ { "Erich E. Hoover", "server: Unify the retrieval of security attributes for files and directories.", 7 },'; + echo '+ { "Erich E. Hoover", "server: Store file security attributes with extended file attributes.", 7 },'; + echo '+ { "Erich E. Hoover", "server: Store user and group inside stored extended file attribute information.", 7 },'; + echo '+ { "Erich E. Hoover", "server: Retrieve file security attributes with extended file attributes.", 7 },'; + echo '+ { "Erich E. Hoover", "server: Convert return of file security masks with generic access mappings.", 7 },'; + ) >> "$patchlist" +fi + +# Patchset server-Inherited_ACLs +# | +# | This patchset fixes the following Wine bugs: +# | * [#34406] Support for inherited file ACLs +# | +# | Modified files: +# | * dlls/advapi32/tests/security.c, include/winnt.h, server/fd.c, server/file.c, server/file.h +# | +if [ "$enable_server_Inherited_ACLs" -eq 1 ]; then + patch_apply server-Inherited_ACLs/0001-server-Inherit-security-attributes-from-parent-direc.patch + patch_apply server-Inherited_ACLs/0002-server-Inherit-security-attributes-from-parent-direc.patch + ( + echo '+ { "Erich E. Hoover", "server: Inherit security attributes from parent directories on creation.", 7 },'; + echo '+ { "Erich E. Hoover", "server: Inherit security attributes from parent directories on SetSecurityInfo.", 7 },'; + ) >> "$patchlist" +fi + +# Patchset server-ACL_Compat +# | +# | Modified files: +# | * server/file.c +# | +if [ "$enable_server_ACL_Compat" -eq 1 ]; then + patch_apply server-ACL_Compat/0001-server-Add-compatibility-code-for-handling-the-old-m.patch + ( + echo '+ { "Erich E. Hoover", "server: Add compatibility code for handling the old method of storing ACLs.", 6 },'; + ) >> "$patchlist" +fi + +# Patchset server-Address_Change_Notification +# | +# | This patchset fixes the following Wine bugs: +# | * [#32328] Support for interface change notifications +# | +# | Modified files: +# | * Makefile.in, dlls/ws2_32/tests/sock.c, server/event.c, server/named_pipe.c, server/object.h, server/sock.c +# | +if [ "$enable_server_Address_Change_Notification" -eq 1 ]; then + patch_apply server-Address_Change_Notification/0001-server-Implement-socket-specific-ioctl-routine.patch + patch_apply server-Address_Change_Notification/0002-server-Add-socket-side-support-for-the-interface-cha.patch + patch_apply server-Address_Change_Notification/0003-server-Add-blocked-support-for-SIO_ADDRESS_LIST_CHAN.patch + patch_apply server-Address_Change_Notification/0004-server-Implement-the-interface-change-notification-o.patch + patch_apply server-Address_Change_Notification/0005-ws2_32-Add-an-interactive-test-for-interface-change-.patch + ( + echo '+ { "Erich E. Hoover", "server: Implement socket-specific ioctl() routine.", 1 },'; + echo '+ { "Erich E. Hoover", "server: Add socket-side support for the interface change notification object.", 1 },'; + echo '+ { "Erich E. Hoover", "server: Add blocked support for SIO_ADDRESS_LIST_CHANGE ioctl().", 1 },'; + echo '+ { "Erich E. Hoover", "server: Implement the interface change notification object.", 2 },'; + echo '+ { "Erich E. Hoover", "ws2_32: Add an interactive test for interface change notifications.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset server-CreateProcess_ACLs +# | +# | This patchset fixes the following Wine bugs: +# | * [#22006] Support for process ACLs +# | +# | Modified files: +# | * dlls/advapi32/tests/security.c, dlls/kernel32/process.c, server/process.c, server/protocol.def +# | +if [ "$enable_server_CreateProcess_ACLs" -eq 1 ]; then + patch_apply server-CreateProcess_ACLs/0001-server-Support-for-thread-and-process-security-descr.patch + patch_apply server-CreateProcess_ACLs/0002-kernel32-Implement-passing-security-descriptors-from.patch + patch_apply server-CreateProcess_ACLs/0003-advapi32-tests-Add-additional-tests-for-passing-a-th.patch + ( + echo '+ { "Sebastian Lackner", "server: Support for thread and process security descriptors in new_process wineserver call.", 2 },'; + echo '+ { "Sebastian Lackner", "kernel32: Implement passing security descriptors from CreateProcess to the wineserver.", 2 },'; + echo '+ { "Joris van der Wel", "advapi32/tests: Add additional tests for passing a thread sd to CreateProcess.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset server-Misc_ACL +# | +# | This patchset fixes the following Wine bugs: +# | * [#15980] GetSecurityInfo returns NULL DACL for process object +# | +# | Modified files: +# | * dlls/advapi32/tests/security.c, server/process.c, server/security.h, server/token.c +# | +if [ "$enable_server_Misc_ACL" -eq 1 ]; then + patch_apply server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch + patch_apply server-Misc_ACL/0002-server-Add-default-security-descriptor-DACL-for-proc.patch + ( + echo '+ { "Erich E. Hoover", "server: Add default security descriptor ownership for processes.", 1 },'; + echo '+ { "Erich E. Hoover", "server: Add default security descriptor DACL for processes.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset server-OpenProcess +# | +# | This patchset fixes the following Wine bugs: +# | * [#37087] Return an error when trying to open a terminated process +# | +# | Modified files: +# | * server/process.c, server/process.h +# | +if [ "$enable_server_OpenProcess" -eq 1 ]; then + patch_apply server-OpenProcess/0001-server-Return-error-when-opening-a-terminating-proce.patch + ( + echo '+ { "Michael Müller", "server: Return error when opening a terminating process.", 3 },'; + ) >> "$patchlist" +fi + +# Patchset server-Unexpected_Wakeup +# | +# | Modified files: +# | * dlls/kernel32/tests/sync.c, server/thread.c +# | +if [ "$enable_server_Unexpected_Wakeup" -eq 1 ]; then + patch_apply server-Unexpected_Wakeup/0001-server-Avoid-sending-unexpected-wakeup-with-uninitia.patch + patch_apply server-Unexpected_Wakeup/0002-kernel32-tests-Repeat-test-for-SignalObjectAndWait-m.patch + ( + echo '+ { "Sebastian Lackner", "server: Avoid sending unexpected wakeup with uninitialized cookie value.", 1 },'; + echo '+ { "Sebastian Lackner", "kernel32/tests: Repeat test for SignalObjectAndWait multiple times to test wineserver wakeup cookie management.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset setupapi-SetupPromptForDisk +# | +# | This patchset fixes the following Wine bugs: +# | * [#20465] Wine ignores IDF_CHECKFIRST flag in SetupPromptForDisk +# | +# | Modified files: +# | * dlls/setupapi/dialog.c, dlls/setupapi/tests/Makefile.in, dlls/setupapi/tests/dialog.c +# | +if [ "$enable_setupapi_SetupPromptForDisk" -eq 1 ]; then + patch_apply setupapi-SetupPromptForDisk/0001-setupapi-Add-support-for-IDF_CHECKFIRST-flag-in-Setu.patch + patch_apply setupapi-SetupPromptForDisk/0002-setupapi-tests-Add-test-for-IDF_CHECKFIRST-and-Setup.patch + ( + echo '+ { "Michael Müller", "setupapi: Add support for IDF_CHECKFIRST flag in SetupPromptForDiskW.", 1 },'; + echo '+ { "Michael Müller", "setupapi/tests: Add test for IDF_CHECKFIRST and SetupPromptForDiskA/W.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset shdocvw-ParseURLFromOutsideSource_Tests +# | +# | Modified files: +# | * dlls/shdocvw/shdocvw_main.c, dlls/shdocvw/tests/shdocvw.c +# | +if [ "$enable_shdocvw_ParseURLFromOutsideSource_Tests" -eq 1 ]; then + patch_apply shdocvw-ParseURLFromOutsideSource_Tests/0001-shdocvw-Check-precisely-ParseURLFromOutsideSourceX-r.patch + ( + echo '+ { "Christian Costa", "shdocvw: Check precisely ParseURLFromOutsideSourceX returned values in tests and make code clearer about that.", 3 },'; + ) >> "$patchlist" +fi + +# Patchset shell32-Default_Folder_ACLs +# | +# | Modified files: +# | * dlls/shell32/shellpath.c +# | +if [ "$enable_shell32_Default_Folder_ACLs" -eq 1 ]; then + patch_apply shell32-Default_Folder_ACLs/0001-shell32-Set-the-default-security-attributes-for-user.patch + ( + echo '+ { "Sebastian Lackner", "shell32: Set the default security attributes for user shell folders.", 7 },'; + ) >> "$patchlist" +fi + +# Patchset shell32-Default_Path +# | +# | This patchset fixes the following Wine bugs: +# | * [#30385] Support for KF_FLAG_DEFAULT_PATH in SHGetKnownFolderPath +# | +# | Modified files: +# | * dlls/shell32/shellpath.c, dlls/shell32/tests/shellpath.c +# | +if [ "$enable_shell32_Default_Path" -eq 1 ]; then + patch_apply shell32-Default_Path/0001-shell32-Implement-KF_FLAG_DEFAULT_PATH-flag-for-SHGe.patch + ( + echo '+ { "Sebastian Lackner", "shell32: Implement KF_FLAG_DEFAULT_PATH flag for SHGetKnownFolderPath.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset shell32-Icons +# | +# | This patchset fixes the following Wine bugs: +# | * [#24721] Support for extra large and jumbo icon lists in shell32 +# | +# | Modified files: +# | * dlls/shell32/iconcache.c, dlls/shell32/shell32_main.h, dlls/shell32/shellord.c +# | +if [ "$enable_shell32_Icons" -eq 1 ]; then + patch_apply shell32-Icons/0001-shell32-Add-support-for-extra-large-and-jumbo-icon-l.patch + ( + echo '+ { "Michael Müller", "shell32: Add support for extra large and jumbo icon lists.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset shell32-RunDLL_CallEntry16 +# | +# | This patchset fixes the following Wine bugs: +# | * [#23033] Use manual relay for RunDLL_CallEntry16 in shell32 +# | +# | Modified files: +# | * dlls/shell32/control.c, dlls/shell32/shell32.spec +# | +if [ "$enable_shell32_RunDLL_CallEntry16" -eq 1 ]; then + patch_apply shell32-RunDLL_CallEntry16/0001-shell32-Use-manual-redirection-for-RunDLL_CallEntry1.patch + ( + echo '+ { "Michael Müller", "shell32: Use manual redirection for RunDLL_CallEntry16.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset shell32-SHCreateSessionKey +# | +# | This patchset fixes the following Wine bugs: +# | * [#35630] Support for SHCreateSessionKey +# | +# | Modified files: +# | * dlls/shell32/shell32.spec, dlls/shell32/shellreg.c +# | +if [ "$enable_shell32_SHCreateSessionKey" -eq 1 ]; then + patch_apply shell32-SHCreateSessionKey/0001-shell32-Implement-SHCreateSessionKey.patch + ( + echo '+ { "Dmitry Timoshkov", "shell32: Implement SHCreateSessionKey.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset shell32-SHFileOperation +# | +# | Modified files: +# | * dlls/shell32/shlfileop.c +# | +if [ "$enable_shell32_SHFileOperation" -eq 1 ]; then + patch_apply shell32-SHFileOperation/0001-shell32-Choose-return-value-for-SHFileOperationW-dep.patch + ( + echo '+ { "Michael Müller", "shell32: Choose return value for SHFileOperationW depending on windows version.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset shlwapi-PathIsDirectoryEmptyW +# | +# | This patchset fixes the following Wine bugs: +# | * [#26272] Correctly treat '.' when checking for empty directories +# | +# | Modified files: +# | * dlls/shlwapi/path.c +# | +if [ "$enable_shlwapi_PathIsDirectoryEmptyW" -eq 1 ]; then + patch_apply shlwapi-PathIsDirectoryEmptyW/0001-shlwapi-Correctly-treat-.-when-enumerating-files-in-.patch + ( + echo '+ { "Michael Müller", "shlwapi: Correctly treat '\''.'\'' when enumerating files in PathIsDirectoryEmptyW.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset shlwapi-UrlCombine +# | +# | Modified files: +# | * dlls/shlwapi/tests/url.c, dlls/shlwapi/url.c +# | +if [ "$enable_shlwapi_UrlCombine" -eq 1 ]; then + patch_apply shlwapi-UrlCombine/0001-shlwapi-tests-Add-additional-tests-for-UrlCombine-and-.patch + patch_apply shlwapi-UrlCombine/0002-shlwapi-UrlCombineW-workaround-for-relative-paths.patch + ( + echo '+ { "Sebastian Lackner", "shlwapi/tests: Add additional tests for UrlCombine and UrlCanonicalize.", 1 },'; + echo '+ { "Sebastian Lackner", "shlwapi: UrlCombineW workaround for relative paths.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset slc-SLGetWindowsInformation +# | +# | This patchset fixes the following Wine bugs: +# | * [#36709] Support for SLGetWindowsInformationDWORD +# | +# | Modified files: +# | * configure.ac, dlls/ntdll/ntdll.spec, dlls/ntdll/reg.c, dlls/ntdll/tests/reg.c, dlls/slc/slc.c, +# | dlls/slc/tests/Makefile.in, dlls/slc/tests/slc.c, include/slerror.h, include/winternl.h, loader/wine.inf.in +# | +if [ "$enable_slc_SLGetWindowsInformation" -eq 1 ]; then + patch_apply slc-SLGetWindowsInformation/0001-slc-tests-Add-tests-for-SLGetWindowsInformationDWORD.patch + patch_apply slc-SLGetWindowsInformation/0002-ntdll-tests-Add-tests-for-NtQueryLicenseKey.patch + patch_apply slc-SLGetWindowsInformation/0003-ntdll-Implement-Nt-Zw-QueryLicenseValue.patch + patch_apply slc-SLGetWindowsInformation/0004-slc-Implement-SLGetWindowsInformationDWORD.patch + ( + echo '+ { "Sebastian Lackner", "slc/tests: Add tests for SLGetWindowsInformationDWORD.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll/tests: Add tests for NtQueryLicenseKey.", 1 },'; + echo '+ { "Sebastian Lackner", "ntdll: Implement [Nt|Zw]QueryLicenseValue.", 1 },'; + echo '+ { "Sebastian Lackner", "slc: Implement SLGetWindowsInformationDWORD.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset urlmon-CoInternetSetFeatureEnabled +# | +# | This patchset fixes the following Wine bugs: +# | * [#35197] Ignore unsupported flags for CoInternetSetFeatureEnabled +# | +# | Modified files: +# | * dlls/urlmon/internet.c +# | +if [ "$enable_urlmon_CoInternetSetFeatureEnabled" -eq 1 ]; then + patch_apply urlmon-CoInternetSetFeatureEnabled/0001-urlmon-Ignore-unsupported-flags-for-CoInternetSetFea.patch + ( + echo '+ { "Bruno Jesus", "urlmon: Ignore unsupported flags for CoInternetSetFeatureEnabled.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset user32-Dialog_Paint_Event +# | +# | This patchset fixes the following Wine bugs: +# | * [#35652] Send WM_PAINT event during dialog creation +# | +# | Modified files: +# | * dlls/user32/dialog.c +# | +if [ "$enable_user32_Dialog_Paint_Event" -eq 1 ]; then + patch_apply user32-Dialog_Paint_Event/0001-user32-Call-UpdateWindow-during-DIALOG_CreateIndirec.patch + ( + echo '+ { "Sebastian Lackner", "user32: Call UpdateWindow() during DIALOG_CreateIndirect.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset user32-DrawTextExW +# | +# | This patchset fixes the following Wine bugs: +# | * [#22109] Fix handling of invert_y in DrawTextExW +# | +# | Modified files: +# | * dlls/user32/text.c +# | +if [ "$enable_user32_DrawTextExW" -eq 1 ]; then + patch_apply user32-DrawTextExW/0001-user32-Fix-handling-of-invert_y-in-DrawTextExW.patch + ( + echo '+ { "Sebastian Lackner", "user32: Fix handling of invert_y in DrawTextExW.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset user32-GetRawInputDeviceList +# | +# | This patchset fixes the following Wine bugs: +# | * [#37667] Set last error when GetRawInputDeviceList fails +# | +# | Modified files: +# | * dlls/user32/input.c +# | +if [ "$enable_user32_GetRawInputDeviceList" -eq 1 ]; then + patch_apply user32-GetRawInputDeviceList/0001-user32-Set-last-error-when-GetRawInputDeviceList-fai.patch + ( + echo '+ { "Andrew Church", "user32: Set last error when GetRawInputDeviceList fails.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset user32-GetSystemMetrics +# | +# | This patchset fixes the following Wine bugs: +# | * [#18732] Make it possible to change media center / tablet pc status +# | +# | Modified files: +# | * dlls/user32/sysparams.c +# | +if [ "$enable_user32_GetSystemMetrics" -eq 1 ]; then + patch_apply user32-GetSystemMetrics/0001-user32-Allow-changing-the-tablet-media-center-status.patch + ( + echo '+ { "Michael Müller", "user32: Allow changing the tablet / media center status via wine registry key.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset user32-GetTipText +# | +# | This patchset fixes the following Wine bugs: +# | * [#30648] Support for TOOLTIPS_GetTipText edge cases +# | +# | Modified files: +# | * dlls/comctl32/tooltips.c +# | +if [ "$enable_user32_GetTipText" -eq 1 ]; then + patch_apply user32-GetTipText/0001-Fix-TOOLTIPS_GetTipText-when-a-resource-cannot-be-fo.patch + patch_apply user32-GetTipText/0002-Fix-TOOLTIPS_GetTipText-when-a-NULL-instance-is-used.patch + ( + echo '+ { "Erich E. Hoover", "Fix TOOLTIPS_GetTipText when a resource cannot be found.", 1 },'; + echo '+ { "Erich E. Hoover", "Fix TOOLTIPS_GetTipText when a NULL instance is used.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset user32-Mouse_Message_Hwnd +# | +# | This patchset fixes the following Wine bugs: +# | * [#12007] Fix issues with dragging layers between images in Adobe Photoshop 7.0 +# | +# | Modified files: +# | * dlls/user32/message.c, dlls/user32/tests/input.c +# | +if [ "$enable_user32_Mouse_Message_Hwnd" -eq 1 ]; then + patch_apply user32-Mouse_Message_Hwnd/0001-user32-Try-harder-to-find-a-target-for-mouse-message.patch + ( + echo '+ { "Dmitry Timoshkov", "user32: Try harder to find a target for mouse messages.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset user32-ScrollWindowEx +# | +# | This patchset fixes the following Wine bugs: +# | * [#37706] Fix return value of ScrollWindowEx for invisible windows +# | +# | Modified files: +# | * dlls/user32/painting.c +# | +if [ "$enable_user32_ScrollWindowEx" -eq 1 ]; then + patch_apply user32-ScrollWindowEx/0001-user32-Fix-return-value-of-ScrollWindowEx-for-invisi.patch + ( + echo '+ { "Dmitry Timoshkov", "user32: Fix return value of ScrollWindowEx for invisible windows.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset user32-WndProc +# | +# | This patchset fixes the following Wine bugs: +# | * [#32451] Fix for programs leaking wndproc slots +# | +# | Modified files: +# | * dlls/user.exe16/message.c, dlls/user32/winproc.c +# | +if [ "$enable_user32_WndProc" -eq 1 ]; then + patch_apply user32-WndProc/0001-user32-Increase-MAX_WINPROCS-to-16384.patch + ( + echo '+ { "Sebastian Lackner", "user32: Increase MAX_WINPROCS to 16384.", 2 },'; + ) >> "$patchlist" +fi + +# Patchset wineboot-HKEY_DYN_DATA +# | +# | This patchset fixes the following Wine bugs: +# | * [#7115] Need for Speed 3 installer requires devices in HKEY_DYN_DATA +# | +# | Modified files: +# | * programs/wineboot/wineboot.c +# | +if [ "$enable_wineboot_HKEY_DYN_DATA" -eq 1 ]; then + patch_apply wineboot-HKEY_DYN_DATA/0001-wineboot-Add-some-generic-hardware-in-HKEY_DYN_DATA-.patch + ( + echo '+ { "Michael Müller", "wineboot: Add some generic hardware in HKEY_DYN_DATA\\\\Config Manager\\\\Enum.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset winebuild-LinkerVersion +# | +# | This patchset fixes the following Wine bugs: +# | * [#28768] Games For Windows Live 1.x expects a valid linker version in the PE header +# | +# | Modified files: +# | * tools/winebuild/spec32.c +# | +if [ "$enable_winebuild_LinkerVersion" -eq 1 ]; then + patch_apply winebuild-LinkerVersion/0001-winebuild-Set-a-valid-major-and-minor-linker-version.patch + ( + echo '+ { "Michael Müller", "winebuild: Set a valid major and minor linker version.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset wined3d-CSMT_Helper +# | +# | Modified files: +# | * configure.ac, dlls/ddraw/surface.c, dlls/wined3d-csmt/Makefile.in, dlls/wined3d-csmt/version.rc, +# | dlls/wined3d/resource.c, dlls/wined3d/surface.c, dlls/wined3d/texture.c, dlls/wined3d/volume.c, +# | dlls/wined3d/wined3d.spec, dlls/wined3d/wined3d_private.h, include/wine/wined3d.h +# | +if [ "$enable_wined3d_CSMT_Helper" -eq 1 ]; then + patch_apply wined3d-CSMT_Helper/0001-wined3d-Merge-get_pitch-functions.patch + patch_apply wined3d-CSMT_Helper/0002-wined3d-Add-second-dll-with-STAGING_CSMT-definition-.patch + ( + echo '+ { "Stefan Dösinger", "wined3d: Merge get_pitch functions.", 1 },'; + echo '+ { "Sebastian Lackner", "wined3d: Add second dll with STAGING_CSMT definition set.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset wined3d-CSMT_Main +# | +# | This patchset fixes the following Wine bugs: +# | * [#11674] Support for CSMT (command stream) to increase graphic performance +# | +# | Modified files: +# | * dlls/d3d8/tests/visual.c, dlls/d3d9/tests/visual.c, dlls/wined3d/arb_program_shader.c, dlls/wined3d/buffer.c, +# | dlls/wined3d/context.c, dlls/wined3d/cs.c, dlls/wined3d/device.c, dlls/wined3d/directx.c, dlls/wined3d/drawprim.c, +# | dlls/wined3d/glsl_shader.c, dlls/wined3d/query.c, dlls/wined3d/resource.c, dlls/wined3d/shader.c, dlls/wined3d/state.c, +# | dlls/wined3d/stateblock.c, dlls/wined3d/surface.c, dlls/wined3d/swapchain.c, dlls/wined3d/texture.c, +# | dlls/wined3d/utils.c, dlls/wined3d/vertexdeclaration.c, dlls/wined3d/view.c, dlls/wined3d/volume.c, +# | dlls/wined3d/wined3d_main.c, dlls/wined3d/wined3d_private.h, dlls/winex11.drv/opengl.c +# | +if [ "$enable_wined3d_CSMT_Main" -eq 1 ]; then + patch_apply wined3d-CSMT_Main/0001-wined3d-Pass-a-context-to-surface_load_sysmem.patch + patch_apply wined3d-CSMT_Main/0002-wined3d-Pass-a-context-to-read_from_framebuffer.patch + patch_apply wined3d-CSMT_Main/0003-wined3d-Pass-a-context-to-surface_load_drawable-and-.patch + patch_apply wined3d-CSMT_Main/0004-wined3d-Pass-a-context-to-surface_blt_fbo.patch + patch_apply wined3d-CSMT_Main/0005-wined3d-Pass-a-context-to-surface_multisample_resolv.patch + patch_apply wined3d-CSMT_Main/0006-wined3d-Pass-a-context-to-surface_load_texture.patch + patch_apply wined3d-CSMT_Main/0007-wined3d-Pass-a-context-to-surface_load_location.patch + patch_apply wined3d-CSMT_Main/0008-wined3d-Make-surface_load_location-return-nothing.patch + patch_apply wined3d-CSMT_Main/0009-wined3d-Store-volume-locations-in-the-resource.patch + patch_apply wined3d-CSMT_Main/0010-wined3d-Move-validate_location-to-resource.c.patch + patch_apply wined3d-CSMT_Main/0011-wined3d-Move-surface-locations-into-the-resource.patch + patch_apply wined3d-CSMT_Main/0012-wined3d-Remove-surface_validate_location.patch + patch_apply wined3d-CSMT_Main/0013-wined3d-Move-invalidate_location-to-resource.c.patch + patch_apply wined3d-CSMT_Main/0014-wined3d-Invalidate-containers-via-callback.patch + patch_apply wined3d-CSMT_Main/0015-wined3d-Remove-surface_invalidate_location.patch + patch_apply wined3d-CSMT_Main/0016-wined3d-Move-bitmap_data-and-user_memory-into-the-re.patch + patch_apply wined3d-CSMT_Main/0017-wined3d-Move-load_location-into-the-resource.patch + patch_apply wined3d-CSMT_Main/0018-wined3d-Replace-surface_load_location-with-resource_.patch + patch_apply wined3d-CSMT_Main/0019-wined3d-Introduce-helper-functions-for-mapping-volum.patch + patch_apply wined3d-CSMT_Main/0020-wined3d-Move-volume-PBO-infrastructure-into-the-reso.patch + patch_apply wined3d-CSMT_Main/0021-wined3d-Remove-surface-pbo.patch + patch_apply wined3d-CSMT_Main/0022-wined3d-Use-resource-buffer-mapping-facilities-in-su.patch + patch_apply wined3d-CSMT_Main/0023-wined3d-Move-buffer-creation-into-the-resource.patch + patch_apply wined3d-CSMT_Main/0024-wined3d-Handle-WINED3D_LOCATION_DISCARDED-in-surface.patch + patch_apply wined3d-CSMT_Main/0025-wined3d-Handle-LOCATION_DISCARDED-in-surface_load_dr.patch + patch_apply wined3d-CSMT_Main/0026-wined3d-Handle-WINED3D_LOCATION_DISCARDED-for-sysmem.patch + patch_apply wined3d-CSMT_Main/0027-wined3d-Discard-implicit-surfaces-on-unload.patch + patch_apply wined3d-CSMT_Main/0028-wined3d-Don-t-try-to-flip-sysmem-copies-in-swapchain.patch + patch_apply wined3d-CSMT_Main/0029-wined3d-Discard-the-backbuffer-in-discard-presents.patch + patch_apply wined3d-CSMT_Main/0030-wined3d-Allocate-sysmem-for-client-storage-if-it-doe.patch + patch_apply wined3d-CSMT_Main/0031-wined3d-Introduce-a-function-to-retrieve-resource-me.patch + patch_apply wined3d-CSMT_Main/0032-wined3d-Make-surface_ops-unmap-specific-for-front-bu.patch + patch_apply wined3d-CSMT_Main/0033-wined3d-Move-check_block_align-to-resource.c.patch + patch_apply wined3d-CSMT_Main/0034-wined3d-Replace-surface-alloc-functions-with-resourc.patch + patch_apply wined3d-CSMT_Main/0035-wined3d-Don-t-delete-the-buffer-in-surface_cleanup.patch + patch_apply wined3d-CSMT_Main/0036-wined3d-Use-resource-facilities-to-destroy-PBOs.patch + patch_apply wined3d-CSMT_Main/0037-wined3d-Move-simple-location-copying-to-the-resource.patch + patch_apply wined3d-CSMT_Main/0038-wined3d-Move-most-of-volume_map-to-resource.c.patch + patch_apply wined3d-CSMT_Main/0039-wined3d-Use-resource_map-for-surface_map.patch + patch_apply wined3d-CSMT_Main/0040-wined3d-Use-client-storage-with-DIB-sections.patch + patch_apply wined3d-CSMT_Main/0041-wined3d-Don-t-call-the-public-map-function-in-surfac.patch + patch_apply wined3d-CSMT_Main/0042-wined3d-Don-t-call-the-public-map-function-in-surfac.patch + patch_apply wined3d-CSMT_Main/0043-wined3d-Move-the-framebuffer-into-wined3d_state.patch + patch_apply wined3d-CSMT_Main/0044-wined3d-Get-rid-of-state-access-in-shader_generate_g.patch + patch_apply wined3d-CSMT_Main/0045-wined3d-Preload-buffers-if-streamsrc-is-not-dirty.patch + patch_apply wined3d-CSMT_Main/0046-wined3d-Hackily-introduce-a-multithreaded-command-st.patch + patch_apply wined3d-CSMT_Main/0047-wined3d-Wait-for-resource-updates-to-finish-when-usi.patch + patch_apply wined3d-CSMT_Main/0048-wined3d-Don-t-store-pointers-in-struct-wined3d_cs_pr.patch + patch_apply wined3d-CSMT_Main/0049-wined3d-Don-t-put-rectangle-pointers-into-wined3d_cs.patch + patch_apply wined3d-CSMT_Main/0050-wined3d-Store-the-color-in-clear-ops-instead-of-a-po.patch + patch_apply wined3d-CSMT_Main/0051-wined3d-Pass-the-state-to-draw_primitive.patch + patch_apply wined3d-CSMT_Main/0052-wined3d-Wait-for-the-cs-before-destroying-objects.patch + patch_apply wined3d-CSMT_Main/0053-wined3d-Give-the-cs-its-own-state.patch + patch_apply wined3d-CSMT_Main/0054-wined3d-Send-float-constant-updates-through-the-comm.patch + patch_apply wined3d-CSMT_Main/0055-wined3d-Request-a-glFinish-before-modifying-resource.patch + patch_apply wined3d-CSMT_Main/0056-wined3d-Finish-the-cs-before-changing-the-texture-lo.patch + patch_apply wined3d-CSMT_Main/0057-wined3d-Don-t-call-glFinish-after-clears.patch + patch_apply wined3d-CSMT_Main/0058-wined3d-Don-t-call-glFinish-after-draws.patch + patch_apply wined3d-CSMT_Main/0059-wined3d-Shadow-device-offscreenBuffer-in-the-context.patch + patch_apply wined3d-CSMT_Main/0060-wined3d-Don-t-access-the-stateblock-in-find_draw_buf.patch + patch_apply wined3d-CSMT_Main/0061-wined3d-Pass-the-depth-stencil-to-swapchain-present.patch + patch_apply wined3d-CSMT_Main/0062-wined3d-Don-t-store-viewport-pointers-in-the-command.patch + patch_apply wined3d-CSMT_Main/0063-wined3d-Keep-track-of-the-onscreen-depth-stencil-in-.patch + patch_apply wined3d-CSMT_Main/0064-wined3d-Send-base-vertex-index-updates-through-the-c.patch + patch_apply wined3d-CSMT_Main/0065-wined3d-Send-primitive-type-updates-through-the-comm.patch + patch_apply wined3d-CSMT_Main/0066-wined3d-Send-bool-constant-updates-through-the-comma.patch + patch_apply wined3d-CSMT_Main/0067-wined3d-Send-int-constant-updates-through-the-comman.patch + patch_apply wined3d-CSMT_Main/0068-wined3d-Send-light-updates-through-the-command-strea.patch + patch_apply wined3d-CSMT_Main/0069-wined3d-Prevent-the-command-stream-from-running-ahea.patch + patch_apply wined3d-CSMT_Main/0070-wined3d-Wait-for-the-cs-to-finish-before-destroying-.patch + patch_apply wined3d-CSMT_Main/0071-wined3d-Run-the-cs-asynchronously.patch + patch_apply wined3d-CSMT_Main/0072-wined3d-Send-blits-through-the-command-stream.patch + patch_apply wined3d-CSMT_Main/0073-wined3d-Put-update_surface-checks-back-in-place.patch + patch_apply wined3d-CSMT_Main/0074-wined3d-Get-rid-of-WINED3D_BUFFER_FLUSH.patch + patch_apply wined3d-CSMT_Main/0075-wined3d-Add-cs-waiting-debug-code.patch + patch_apply wined3d-CSMT_Main/0076-wined3d-Don-t-force-strict-draw-ordering-for-multith.patch + patch_apply wined3d-CSMT_Main/0077-wined3d-Send-render-target-view-clears-through-the-c.patch + patch_apply wined3d-CSMT_Main/0078-wined3d-Wait-for-the-CS-in-GetDC.patch + patch_apply wined3d-CSMT_Main/0079-wined3d-send-resource-maps-through-the-command-strea.patch + patch_apply wined3d-CSMT_Main/0080-wined3d-Get-rid-of-the-end_scene-flush-and-finish.patch + patch_apply wined3d-CSMT_Main/0081-wined3d-Replace-the-linked-lists-with-a-ringbuffer.patch + patch_apply wined3d-CSMT_Main/0082-wined3d-Don-t-preload-buffers-on-unmap.patch + patch_apply wined3d-CSMT_Main/0083-wined3d-Don-t-call-glFinish-before-swapping.patch + patch_apply wined3d-CSMT_Main/0084-wined3d-wined3d_-_query_issue-never-fails.patch + patch_apply wined3d-CSMT_Main/0085-wined3d-Add-query-support-to-the-command-stream.patch + patch_apply wined3d-CSMT_Main/0086-wined3d-Check-our-CS-state-to-find-out-if-a-query-is.patch + patch_apply wined3d-CSMT_Main/0087-wined3d-Poll-queries-automatically-in-the-CS.patch + patch_apply wined3d-CSMT_Main/0088-wined3d-Introduce-a-separate-queue-for-priority-comm.patch + patch_apply wined3d-CSMT_Main/0089-wined3d-Destroy-queries-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0090-wined3d-Separate-main-and-worker-thread-query-state.patch + patch_apply wined3d-CSMT_Main/0091-wined3d-Don-t-poll-queries-that-failed-to-start.patch + patch_apply wined3d-CSMT_Main/0092-wined3d-Remove-restated-queries-from-the-poll-list.patch + patch_apply wined3d-CSMT_Main/0093-wined3d-Don-t-reset-the-query-state-if-it-doesn-t-ha.patch + patch_apply wined3d-CSMT_Main/0094-wined3d-Put-this-into-the-query-poll-patch.patch + patch_apply wined3d-CSMT_Main/0095-wined3d-Send-update_surface-commands-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0096-wined3d-Send-texture-preloads-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0097-wined3d-Send-surface-preloads-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0098-wined3d-Send-update_texture-calls-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0099-wined3d-Get-rid-of-the-surface_upload_data-glFinish.patch + patch_apply wined3d-CSMT_Main/0100-wined3d-Don-t-lock-the-src-volume-in-device_update_v.patch + patch_apply wined3d-CSMT_Main/0101-wined3d-Handle-evit_managed_resources-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0102-wined3d-Send-flips-through-the-command-stream.patch + patch_apply wined3d-CSMT_Main/0103-wined3d-Introduce-resource-fencing.patch + patch_apply wined3d-CSMT_Main/0104-wined3d-Fence-update_texture-and-update_surface-call.patch + patch_apply wined3d-CSMT_Main/0105-wined3d-Dirtify-resources-on-unmap.patch + patch_apply wined3d-CSMT_Main/0106-wined3d-Fence-texture-reads-in-draws.patch + patch_apply wined3d-CSMT_Main/0107-wined3d-Fence-render-targets-and-depth-stencils.patch + patch_apply wined3d-CSMT_Main/0108-wined3d-Fence-blit-operations.patch + patch_apply wined3d-CSMT_Main/0109-wined3d-Fence-color_fill-operations.patch + patch_apply wined3d-CSMT_Main/0110-wined3d-Fence-clear-calls.patch + patch_apply wined3d-CSMT_Main/0111-wined3d-Fence-present-calls.patch + patch_apply wined3d-CSMT_Main/0112-wined3d-Make-resource-maps-and-unmaps-a-priority-com.patch + patch_apply wined3d-CSMT_Main/0113-wined3d-Dirtify-changed-textures-through-the-command.patch + patch_apply wined3d-CSMT_Main/0114-wined3d-Wrap-GL-BOs-in-a-structure.patch + patch_apply wined3d-CSMT_Main/0115-wined3d-Separate-resource-map-and-draw-buffers.patch + patch_apply wined3d-CSMT_Main/0116-wined3d-Implement-DISCARD-resource-maps-with-buffers.patch + patch_apply wined3d-CSMT_Main/0117-wined3d-Implement-DISCARD-resource-maps-with-heap-me.patch + patch_apply wined3d-CSMT_Main/0118-wined3d-Unset-some-objects-in-state_init_default.patch + patch_apply wined3d-CSMT_Main/0119-wined3d-Don-t-request-the-frontbuffer-to-create-dumm.patch + patch_apply wined3d-CSMT_Main/0120-wined3d-Use-double-buffered-buffers-for-multithreade.patch + patch_apply wined3d-CSMT_Main/0121-wined3d-Don-t-synchronize-NOOVERWRITE-buffer-maps.patch + patch_apply wined3d-CSMT_Main/0122-wined3d-Separate-buffer-map-write-and-draw-read-memo.patch + patch_apply wined3d-CSMT_Main/0123-wined3d-Accelerate-DISCARD-buffer-maps.patch + patch_apply wined3d-CSMT_Main/0124-wined3d-Accelerate-READONLY-buffer-maps.patch + patch_apply wined3d-CSMT_Main/0125-wined3d-Access-the-buffer-dirty-areas-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0126-wined3d-Ignore-buffer-resource.map_count-in-the-CS.patch + patch_apply wined3d-CSMT_Main/0127-wined3d-Send-buffer-preloads-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0128-wined3d-Use-glBufferSubData-instead-of-glMapBufferRa.patch + patch_apply wined3d-CSMT_Main/0129-wined3d-Separate-GL-buffer-discard-control-from-igno.patch + patch_apply wined3d-CSMT_Main/0130-wined3d-Create-buffers-before-mapping-them.patch + patch_apply wined3d-CSMT_Main/0131-wined3d-Destroy-views-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0132-wined3d-Remove-another-glFinish.patch + patch_apply wined3d-CSMT_Main/0133-wined3d-Destroy-vertex-declarations-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0134-wined3d-Destroy-shaders-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0135-wined3d-Create-VBOs-through-the-command-stream.patch + patch_apply wined3d-CSMT_Main/0136-wined3d-Clean-up-resource-data-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0137-wined3d-Clean-up-buffer-resource-data-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0138-wined3d-Clean-up-volume-resource-data-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0139-wined3d-Clean-up-surfaces-through-the-cs.patch + patch_apply wined3d-CSMT_Main/0140-wined3d-Clean-up-texture-resources-through-the-cs.patch + patch_apply wined3d-CSMT_Main/0141-wined3d-Unload-resources-through-the-CS-in-uninit_3d.patch + patch_apply wined3d-CSMT_Main/0142-wined3d-Unload-resources-through-the-CS-in-device_re.patch + patch_apply wined3d-CSMT_Main/0143-wined3d-Don-t-glFinish-after-a-depth-buffer-blit.patch + patch_apply wined3d-CSMT_Main/0144-wined3d-Remove-software-cursor-support.patch + patch_apply wined3d-CSMT_Main/0145-wined3d-Create-dummy-textures-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0146-wined3d-Create-the-initial-context-through-the-CS.patch + patch_apply wined3d-CSMT_Main/0147-wined3d-Recreate-ctx-and-dummy-textures-through-the-.patch + patch_apply wined3d-CSMT_Main/0148-wined3d-Ignore-WINED3D_MAP_NO_DIRTY_UPDATE-in-resour.patch + patch_apply wined3d-CSMT_Main/0149-wined3d-Delete-GL-contexts-through-the-CS-in-reset.patch + patch_apply wined3d-CSMT_Main/0150-wined3d-Delete-GL-contexts-through-the-CS-in-uninit_.patch + patch_apply wined3d-CSMT_Main/0151-wined3d-Invoke-surface_unload-through-the-CS-in-wine.patch + patch_apply wined3d-CSMT_Main/0152-wined3d-Use-an-event-to-block-the-worker-thread-when.patch + patch_apply wined3d-CSMT_Main/0153-wined3d-Fence-preload-operations.patch + patch_apply wined3d-CSMT_Main/0154-d3d8-tests-D3DLOCK_NO_DIRTY_UPDATE-on-managed-textur.patch + patch_apply wined3d-CSMT_Main/0155-d3d9-tests-D3DLOCK_NO_DIRTY_UPDATE-on-managed-textur.patch + patch_apply wined3d-CSMT_Main/0156-wined3d-Completely-reset-the-state-on-reset.patch + patch_apply wined3d-CSMT_Main/0157-wined3d-Send-getdc-and-releasedc-through-the-command.patch + patch_apply wined3d-CSMT_Main/0158-wined3d-Set-map_heap_memory-NULL-when-allocating-a-P.patch + patch_apply wined3d-CSMT_Main/0159-wined3d-Wait-only-for-the-buffer-to-be-idle.patch + patch_apply wined3d-CSMT_Main/0160-wined3d-Add-a-comment-about-worker-thread-lag.patch + patch_apply wined3d-CSMT_Main/0161-wined3d-Remove-the-texture-destroy-glFinish.patch + patch_apply wined3d-CSMT_Main/0162-wined3d-Move-FBO-destruction-into-the-worker-thread.patch + patch_apply wined3d-CSMT_Main/0163-wined3d-Don-t-incref-decref-textures-in-color-depth-.patch + patch_apply wined3d-CSMT_Main/0164-Winex11-complain-about-glfinish.patch + patch_apply wined3d-CSMT_Main/0165-wined3d-Make-sure-the-new-window-is-set-up-before-se.patch + patch_apply wined3d-CSMT_Main/0166-wined3d-Remove-the-device_reset-CS-sync-fixme.patch + patch_apply wined3d-CSMT_Main/0167-wined3d-Put-GL_APPLE_flush_buffer_range-syncing-back.patch + patch_apply wined3d-CSMT_Main/0168-wined3d-Wait-for-the-resource-to-be-idle-when-destro.patch + patch_apply wined3d-CSMT_Main/0169-wined3d-Don-t-sync-on-redundant-discard-calls.patch + patch_apply wined3d-CSMT_Main/0170-wined3d-Don-t-discard-new-buffers.patch + patch_apply wined3d-CSMT_Main/0171-wined3d-Don-t-try-to-sync-VBOs-manually-on-OSX-with-.patch + patch_apply wined3d-CSMT_Main/0172-wined3d-Render-target-lock-hack.patch + patch_apply wined3d-CSMT_Main/0173-wined3d-Avoid-calling-wined3d_surface_blt-from-surfa.patch + patch_apply wined3d-CSMT_Main/0174-wined3d-Fix-some-uninitialized-memory-accesses.patch + patch_apply wined3d-CSMT_Main/0175-wined3d-Enable-CSMT-by-default-print-a-winediag-mess.patch + patch_apply wined3d-CSMT_Main/9999-IfDefined.patch + ( + echo '+ { "Stefan Dösinger", "wined3d: Pass a context to surface_load_sysmem.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Pass a context to read_from_framebuffer.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Pass a context to surface_load_drawable and surface_blt_to_drawable.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Pass a context to surface_blt_fbo.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Pass a context to surface_multisample_resolve.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Pass a context to surface_load_texture.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Pass a context to surface_load_location.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Make surface_load_location return nothing.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Store volume locations in the resource.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Move validate_location to resource.c.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Move surface locations into the resource.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Remove surface_validate_location.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Move invalidate_location to resource.c.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Invalidate containers via callback.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Remove surface_invalidate_location.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Move bitmap_data and user_memory into the resource.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Move load_location into the resource.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Replace surface_load_location with resource_load_location.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Introduce helper functions for mapping volumes.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Move volume PBO infrastructure into the resource.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Remove surface->pbo.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Use resource buffer mapping facilities in surfaces.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Move buffer creation into the resource.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Handle WINED3D_LOCATION_DISCARDED in surface_load_texture.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Handle LOCATION_DISCARDED in surface_load_drawable.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Handle WINED3D_LOCATION_DISCARDED for sysmem loads.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Discard implicit surfaces on unload.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t try to flip sysmem copies in swapchain_present.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Discard the backbuffer in discard presents.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Allocate sysmem for client storage if it doesn'\''t exist already.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Introduce a function to retrieve resource memory.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Make surface_ops->unmap specific for front buffers.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Move check_block_align to resource.c.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Replace surface alloc functions with resource ones.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t delete the buffer in surface_cleanup.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Use resource facilities to destroy PBOs.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Move simple location copying to the resource.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Move most of volume_map to resource.c.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Use resource_map for surface_map.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Use client storage with DIB sections.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t call the public map function in surface_convert_format.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t call the public map function in surface_cpu_blt.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Move the framebuffer into wined3d_state.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Get rid of state access in shader_generate_glsl_declarations.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Preload buffers if streamsrc is not dirty.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Hackily introduce a multithreaded command stream.", 1 },'; + echo '+ { "Henri Verbeet", "wined3d: Wait for resource updates to finish when using the multithreaded command stream.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t store pointers in struct wined3d_cs_present.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t put rectangle pointers into wined3d_cs_clear.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Store the color in clear ops instead of a pointer.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Pass the state to draw_primitive.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Wait for the cs before destroying objects.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Give the cs its own state.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Send float constant updates through the command stream.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Request a glFinish before modifying resources outside the cs.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Finish the cs before changing the texture lod.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t call glFinish after clears.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t call glFinish after draws.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Shadow device->offscreenBuffer in the context.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t access the stateblock in find_draw_buffers_mask.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Pass the depth stencil to swapchain->present.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t store viewport pointers in the command stream.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Keep track of the onscreen depth stencil in the command stream instead of the device.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Send base vertex index updates through the cs.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Send primitive type updates through the command stream.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Send bool constant updates through the command stream.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Send int constant updates through the command stream.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Send light updates through the command stream.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Prevent the command stream from running ahead too far.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Wait for the cs to finish before destroying the device.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Run the cs asynchronously.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Send blits through the command stream.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Put update_surface checks back in place.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Get rid of WINED3D_BUFFER_FLUSH.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Add cs waiting debug code.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t force strict draw ordering for multithreaded CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Send render target view clears through the command stream.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Wait for the CS in GetDC.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: send resource maps through the command stream.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Get rid of the end_scene flush and finish.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Replace the linked lists with a ringbuffer.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t preload buffers on unmap.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t call glFinish before swapping.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: wined3d_*_query_issue never fails.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Add query support to the command stream.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Check our CS state to find out if a query is done.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Poll queries automatically in the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Introduce a separate queue for priority commands.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Destroy queries through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Separate main and worker thread query state.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t poll queries that failed to start.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Remove restated queries from the poll list.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t reset the query state if it doesn'\''t have a ctx.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Put this into the query poll patch.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Send update_surface commands through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Send texture preloads through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Send surface preloads through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Send update_texture calls through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Get rid of the surface_upload_data glFinish.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t lock the src volume in device_update_volume.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Handle evit_managed_resources through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Send flips through the command stream.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Introduce resource fencing.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Fence update_texture and update_surface calls.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Dirtify resources on unmap.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Fence texture reads in draws.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Fence render targets and depth stencils.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Fence blit operations.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Fence color_fill operations.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Fence clear calls.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Fence present calls.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Make resource maps and unmaps a priority command.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Dirtify changed textures through the command stream.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Wrap GL BOs in a structure.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Separate resource map and draw buffers.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Implement DISCARD resource maps with buffers.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Implement DISCARD resource maps with heap memory.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Unset some objects in state_init_default.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t request the frontbuffer to create dummy textures.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Use double-buffered buffers for multithreaded CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t synchronize NOOVERWRITE buffer maps.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Separate buffer map write and draw read memory pointers.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Accelerate DISCARD buffer maps.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Accelerate READONLY buffer maps.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Access the buffer dirty areas through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Ignore buffer->resource.map_count in the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Send buffer preloads through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Use glBufferSubData instead of glMapBufferRange.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Separate GL buffer discard control from ignoring MAP_DISCARD.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Create buffers before mapping them.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Destroy views through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Remove another glFinish.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Destroy vertex declarations through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Destroy shaders through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Create VBOs through the command stream.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Clean up resource data through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Clean up buffer resource data through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Clean up volume resource data through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Clean up surfaces through the cs.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Clean up texture resources through the cs.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Unload resources through the CS in uninit_3d.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Unload resources through the CS in device_reset.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t glFinish after a depth buffer blit.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Remove software cursor support.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Create dummy textures through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Create the initial context through the CS.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Recreate ctx and dummy textures through the CS after resets.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Ignore WINED3D_MAP_NO_DIRTY_UPDATE in resource_map.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Delete GL contexts through the CS in reset.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Delete GL contexts through the CS in uninit_3d.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Invoke surface_unload through the CS in wined3d_surface_update_desc.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Use an event to block the worker thread when it is idle.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Fence preload operations.", 1 },'; + echo '+ { "Stefan Dösinger", "d3d8/tests: D3DLOCK_NO_DIRTY_UPDATE on managed textures is temporarily broken.", 1 },'; + echo '+ { "Stefan Dösinger", "d3d9/tests: D3DLOCK_NO_DIRTY_UPDATE on managed textures is temporarily broken.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Completely reset the state on reset.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Send getdc and releasedc through the command stream.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Set map_heap_memory = NULL when allocating a PBO.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Wait only for the buffer to be idle.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Add a comment about worker thread lag.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Remove the texture destroy glFinish.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Move FBO destruction into the worker thread.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t incref / decref textures in color / depth fill blits.", 1 },'; + echo '+ { "Stefan Dösinger", "Winex11: complain about glfinish.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Make sure the new window is set up before setting up a context.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Remove the device_reset CS sync fixme.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Put GL_APPLE_flush_buffer_range syncing back in place.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Wait for the resource to be idle when destroying user memory surfaces.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t sync on redundant discard calls.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t discard new buffers.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Don'\''t try to sync VBOs manually on OSX with CSMT.", 1 },'; + echo '+ { "Stefan Dösinger", "wined3d: Render target lock hack.", 1 },'; + echo '+ { "Matteo Bruni", "wined3d: Avoid calling wined3d_surface_blt() from surface_upload_from_surface().", 1 },'; + echo '+ { "Sebastian Lackner", "wined3d: Fix some uninitialized memory accesses.", 1 },'; + echo '+ { "Sebastian Lackner", "wined3d: Enable CSMT by default, print a winediag message informing about this patchset.", 1 },'; + echo '+ { "Wine Staging Team", "Autogenerated #ifdef patch for wined3d-CSMT_Main.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset winecfg-Staging +# | +# | Modified files: +# | * programs/winecfg/Makefile.in, programs/winecfg/main.c, programs/winecfg/resource.h, programs/winecfg/staging.c, +# | programs/winecfg/winecfg.h, programs/winecfg/winecfg.rc +# | +if [ "$enable_winecfg_Staging" -eq 1 ]; then + patch_apply winecfg-Staging/0001-winecfg-Add-staging-tab-for-CSMT.patch + ( + echo '+ { "Michael Müller", "winecfg: Add staging tab for CSMT.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset wined3d-Revert_PixelFormat +# | +# | This patchset fixes the following Wine bugs: +# | * [#35655] Fix wined3d performance drop introduced by pixelformat changes. +# | * [#35718] Fix flickering introduced by pixelformat changes. +# | * [#35950] Fix black screen on startup introduced by pixelformat changes. +# | * [#35975] Fix gray screen on startup introduced by pixelformat changes. +# | * [#36900] Fix missing video introduced by pixelformat changes. +# | +# | Modified files: +# | * dlls/d3d8/tests/device.c, dlls/d3d9/tests/device.c, dlls/ddraw/tests/ddraw1.c, dlls/ddraw/tests/ddraw2.c, +# | dlls/ddraw/tests/ddraw4.c, dlls/ddraw/tests/ddraw7.c, dlls/wined3d/context.c, dlls/wined3d/wined3d_private.h +# | +if [ "$enable_wined3d_Revert_PixelFormat" -eq 1 ]; then + patch_apply wined3d-Revert_PixelFormat/0001-Revert-wined3d-Track-if-a-context-s-private-hdc-has-.patch + patch_apply wined3d-Revert_PixelFormat/0002-Revert-wined3d-Track-if-a-context-s-hdc-is-private-s.patch + patch_apply wined3d-Revert_PixelFormat/0003-Revert-wined3d-When-restoring-pixel-format-in-contex.patch + patch_apply wined3d-Revert_PixelFormat/0004-Revert-wined3d-Don-t-call-GetPixelFormat-to-set-a-fl.patch + patch_apply wined3d-Revert_PixelFormat/0005-Revert-wined3d-Restore-the-pixel-format-of-the-windo.patch + patch_apply wined3d-Revert_PixelFormat/0006-d3d8-Mark-tests-which-no-longer-pass-due-to-reverts-.patch + patch_apply wined3d-Revert_PixelFormat/0007-d3d9-Mark-tests-which-no-longer-pass-due-to-reverts-.patch + patch_apply wined3d-Revert_PixelFormat/0008-ddraw-Mark-tests-which-no-longer-pass-due-to-reverts.patch + ( + echo '+ { "Ken Thomases", "Revert \"wined3d: Track if a context'\''s private hdc has had its pixel format set, so we don'\''t need to check it.\".", 1 },'; + echo '+ { "Ken Thomases", "Revert \"wined3d: Track if a context'\''s hdc is private so we never need to restore its pixel format.\".", 1 },'; + echo '+ { "Ken Thomases", "Revert \"wined3d: When restoring pixel format in context_release(), mark the context as needing to be set on the next context_acquire().\".", 1 },'; + echo '+ { "Ken Thomases", "Revert \"wined3d: Don'\''t call GetPixelFormat() to set a flag that'\''s already set.\".", 1 },'; + echo '+ { "Ken Thomases", "Revert \"wined3d: Restore the pixel format of the window whose pixel format was actually changed.\".", 1 },'; + echo '+ { "Ken Thomases", "d3d8: Mark tests which no longer pass due to reverts as todo_wine.", 1 },'; + echo '+ { "Ken Thomases", "d3d9: Mark tests which no longer pass due to reverts as todo_wine.", 1 },'; + echo '+ { "Ken Thomases", "ddraw: Mark tests which no longer pass due to reverts as todo_wine.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset winedevice-Fix_Relocation +# | +# | This patchset fixes the following Wine bugs: +# | * [#28254] Fix crash of winedevice when relocation entry crosses page boundary +# | +# | Modified files: +# | * programs/winedevice/device.c +# | +if [ "$enable_winedevice_Fix_Relocation" -eq 1 ]; then + patch_apply winedevice-Fix_Relocation/0001-winedevice-Avoid-invalid-memory-access-when-relocati.patch + ( + echo '+ { "Sebastian Lackner", "winedevice: Avoid invalid memory access when relocation block addresses memory outside of the current page.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset winemenubuilder-Desktop_Icon_Path +# | +# | Modified files: +# | * programs/winemenubuilder/Makefile.in, programs/winemenubuilder/winemenubuilder.c +# | +if [ "$enable_winemenubuilder_Desktop_Icon_Path" -eq 1 ]; then + patch_apply winemenubuilder-Desktop_Icon_Path/0001-winemenubuilder-Create-desktop-shortcuts-with-absolu.patch + ( + echo '+ { "Sebastian Lackner", "winemenubuilder: Create desktop shortcuts with absolute wine path.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset winepulse-PulseAudio_Support +# | +# | This patchset fixes the following Wine bugs: +# | * [#10495] Support for PulseAudio backend for audio +# | * [#37042] Implement exclusive mode in PulseAudio backend +# | +# | Modified files: +# | * configure.ac, dlls/mmdevapi/main.c, dlls/mmdevapi/tests/render.c, dlls/winepulse.drv/Makefile.in, +# | dlls/winepulse.drv/mmdevdrv.c, dlls/winepulse.drv/winepulse.drv.spec, dlls/winmm/lolvldrv.c +# | +if [ "$enable_winepulse_PulseAudio_Support" -eq 1 ]; then + patch_apply winepulse-PulseAudio_Support/0001-winmm-Load-winealsa-if-winepulse-is-found.patch + patch_apply winepulse-PulseAudio_Support/0002-winepulse-Add-initial-stub-for-pulseaudio-support.patch + patch_apply winepulse-PulseAudio_Support/0003-winepulse-Add-format-and-period-probing.patch + patch_apply winepulse-PulseAudio_Support/0004-winepulse-Add-audioclient.patch + patch_apply winepulse-PulseAudio_Support/0005-winepulse-Add-IAudioRenderClient-and-IAudioCaptureCl.patch + patch_apply winepulse-PulseAudio_Support/0006-winepulse-Add-IAudioClock-and-IAudioClock2.patch + patch_apply winepulse-PulseAudio_Support/0007-winepulse-Add-audiostreamvolume.patch + patch_apply winepulse-PulseAudio_Support/0008-winepulse-Add-session-support.patch + patch_apply winepulse-PulseAudio_Support/0009-fix-fdels-trailing-whitespaces.patch + patch_apply winepulse-PulseAudio_Support/0010-winepulse-v12.patch + patch_apply winepulse-PulseAudio_Support/0011-winepulse-v15-Add-support-for-missing-formats-and-si.patch + patch_apply winepulse-PulseAudio_Support/0012-winepulse-v16-Add-official-warning-wine-doesn-t-want.patch + patch_apply winepulse-PulseAudio_Support/0013-winepulse-v17-Fix-winmm-tests.patch + patch_apply winepulse-PulseAudio_Support/0014-winepulse-v18-Latency-and-compilation-improvements.patch + patch_apply winepulse-PulseAudio_Support/0015-winepulse-API-Compatibility-with-1.5.2-onward-v2.patch + patch_apply winepulse-PulseAudio_Support/0016-winepulse-Fix-low-latency-support.patch + patch_apply winepulse-PulseAudio_Support/0017-winepulse-drop-realtime-priority-before-thread-destr.patch + patch_apply winepulse-PulseAudio_Support/0018-winepulse-remove-bogus-SetEvent-from-pulse_started_c.patch + patch_apply winepulse-PulseAudio_Support/0019-winepulse-disable-the-setevent-part-of-the-latency-h.patch + patch_apply winepulse-PulseAudio_Support/0020-winepulse-v20-fix-the-checks-in-IsFormatSupported.patch + patch_apply winepulse-PulseAudio_Support/0021-winepulse-fixup-IsFormatSupported-calls.patch + patch_apply winepulse-PulseAudio_Support/0022-winepulse-v21-return-early-if-padding-didn-t-update.patch + patch_apply winepulse-PulseAudio_Support/0023-winepulse-fix-unneeded-free-in-write.patch + patch_apply winepulse-PulseAudio_Support/0024-winepulse-v23-fixup-a-invalid-free-in-mmdevapi.patch + patch_apply winepulse-PulseAudio_Support/0025-winepulse-use-a-pi-mutex-for-serialization.patch + patch_apply winepulse-PulseAudio_Support/0026-winepulse-add-support-for-IMarshal.patch + patch_apply winepulse-PulseAudio_Support/0027-winepulse-handle-stream-create-failing-correctly.patch + patch_apply winepulse-PulseAudio_Support/0028-winepulse-expose-audio-devices-directly-to-programs.patch + patch_apply winepulse-PulseAudio_Support/0029-winepulse-implement-exclusive-mode.patch + patch_apply winepulse-PulseAudio_Support/0030-winepulse-fix-segfault-in-pulse_rd_loop.patch + patch_apply winepulse-PulseAudio_Support/0031-winepulse-implement-GetPropValue.patch + patch_apply winepulse-PulseAudio_Support/0032-winepulse-fetch-actual-program-name-if-possible.patch + patch_apply winepulse-PulseAudio_Support/0033-winepulse-return-PKEY_AudioEndpoint_PhysicalSpeakers.patch + ( + echo '+ { "Maarten Lankhorst", "winmm: Load winealsa if winepulse is found.", 1 },'; + echo '+ { "Maarten Lankhorst", "winepulse: Add initial stub for pulseaudio support.", 1 },'; + echo '+ { "Maarten Lankhorst", "winepulse: Add format and period probing.", 1 },'; + echo '+ { "Maarten Lankhorst", "winepulse: Add audioclient.", 1 },'; + echo '+ { "Maarten Lankhorst", "winepulse: Add IAudioRenderClient and IAudioCaptureClient.", 1 },'; + echo '+ { "Maarten Lankhorst", "winepulse: Add IAudioClock and IAudioClock2.", 1 },'; + echo '+ { "Maarten Lankhorst", "winepulse: Add audiostreamvolume.", 1 },'; + echo '+ { "Maarten Lankhorst", "winepulse: Add session support.", 1 },'; + echo '+ { "Maarten Lankhorst", "fix fdels trailing whitespaces.", 1 },'; + echo '+ { "Maarten Lankhorst", "winepulse.", 12 },'; + echo '+ { "Maarten Lankhorst", "winepulse: Add support for missing formats, and silence an error for missing format tags.", 15 },'; + echo '+ { "Maarten Lankhorst", "winepulse: Add official warning wine doesn'\''t want to support winepulse.", 16 },'; + echo '+ { "Maarten Lankhorst", "winepulse: Fix winmm tests.", 17 },'; + echo '+ { "Maarten Lankhorst", "winepulse: Latency and compilation improvements.", 18 },'; + echo '+ { "Juergen Tretthahn", "winepulse: API Compatibility with 1.5.2 onward.", 2 },'; + echo '+ { "Maarten Lankhorst", "winepulse: Fix low latency support.", 1 },'; + echo '+ { "Maarten Lankhorst", "winepulse: drop realtime priority before thread destruction.", 1 },'; + echo '+ { "Maarten Lankhorst", "winepulse: remove bogus SetEvent from pulse_started_callback.", 1 },'; + echo '+ { "Maarten Lankhorst", "winepulse: disable the setevent part of the latency hack.", 1 },'; + echo '+ { "Maarten Lankhorst", "winepulse: fix the checks in IsFormatSupported.", 20 },'; + echo '+ { "Maarten Lankhorst", "winepulse: fixup IsFormatSupported calls.", 1 },'; + echo '+ { "Maarten Lankhorst", "winepulse: return early if padding didn'\''t update.", 21 },'; + echo '+ { "Maarten Lankhorst", "winepulse: fix unneeded free in write.", 1 },'; + echo '+ { "Maarten Lankhorst", "winepulse: fixup a invalid free in mmdevapi.", 23 },'; + echo '+ { "Maarten Lankhorst", "winepulse: use a pi-mutex for serialization.", 1 },'; + echo '+ { "Maarten Lankhorst", "winepulse: add support for IMarshal.", 1 },'; + echo '+ { "Mark Harmstone", "winepulse: handle stream create failing correctly.", 1 },'; + echo '+ { "Mark Harmstone", "winepulse: expose audio devices directly to programs.", 1 },'; + echo '+ { "Mark Harmstone", "winepulse: implement exclusive mode.", 1 },'; + echo '+ { "Mark Harmstone", "winepulse: fix segfault in pulse_rd_loop.", 1 },'; + echo '+ { "Mark Harmstone", "winepulse: implement GetPropValue.", 1 },'; + echo '+ { "Mark Harmstone", "winepulse: fetch actual program name if possible.", 1 },'; + echo '+ { "Mark Harmstone", "winepulse: return PKEY_AudioEndpoint_PhysicalSpeakers device prop.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset winex11-CandidateWindowPos +# | +# | This patchset fixes the following Wine bugs: +# | * [#30938] Update a XIM candidate position when cursor location changes +# | +# | Modified files: +# | * dlls/user32/caret.c, dlls/user32/driver.c, dlls/user32/user_private.h, dlls/winex11.drv/winex11.drv.spec, +# | dlls/winex11.drv/xim.c +# | +if [ "$enable_winex11_CandidateWindowPos" -eq 1 ]; then + patch_apply winex11-CandidateWindowPos/0001-winex11.drv-Update-a-candidate-window-s-position-wit.patch + ( + echo '+ { "Felix Yan", "winex11.drv: Update a candidate window'\''s position with over-the-spot style.", 2 },'; + ) >> "$patchlist" +fi + +# Patchset winex11-Clipboard_HTML +# | +# | This patchset fixes the following Wine bugs: +# | * [#7372] Support for pasting HTML from Unix applications +# | +# | Modified files: +# | * dlls/winex11.drv/clipboard.c +# | +if [ "$enable_winex11_Clipboard_HTML" -eq 1 ]; then + patch_apply winex11-Clipboard_HTML/0001-winex11.drv-Import-X11-s-text-html-as-HTML-Format.patch + ( + echo '+ { "Damjan Jovanovic", "winex11.drv: Import X11'\''s \"text/html\" as \"HTML Format\".", 3 },'; + ) >> "$patchlist" +fi + +# Patchset winex11-Limited_Resolutions +# | +# | Modified files: +# | * dlls/winex11.drv/xrandr.c +# | +if [ "$enable_winex11_Limited_Resolutions" -eq 1 ]; then + patch_apply winex11-Limited_Resolutions/0001-winex11.drv-Update-the-check-for-broken-nVidia-RandR.patch + ( + echo '+ { "Erich E. Hoover", "winex11.drv: Update the check for broken nVidia RandR to test for the number of resolutions instead of the number of modes.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset winex11-Window_Groups +# | +# | This patchset fixes the following Wine bugs: +# | * [#32699] Prevent window managers from grouping all wine programs together +# | +# | Modified files: +# | * dlls/winex11.drv/window.c +# | +if [ "$enable_winex11_Window_Groups" -eq 1 ]; then + patch_apply winex11-Window_Groups/0001-winex11-Prevent-window-managers-from-grouping-all-wi.patch + ( + echo '+ { "Michael Müller", "winex11: Prevent window managers from grouping all wine programs together.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset winex11-XEMBED +# | +# | Modified files: +# | * dlls/winex11.drv/event.c +# | +if [ "$enable_winex11_XEMBED" -eq 1 ]; then + patch_apply winex11-XEMBED/0001-winex11-Enable-disable-windows-when-they-are-un-mapped.patch + ( + echo '+ { "Sebastian Lackner", "winex11: Enable/disable windows when they are (un)mapped by foreign applications.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset winex11-wglShareLists +# | +# | This patchset fixes the following Wine bugs: +# | * [#11436] Do not fail when a used context is passed to wglShareLists +# | +# | Modified files: +# | * dlls/winex11.drv/opengl.c +# | +if [ "$enable_winex11_wglShareLists" -eq 1 ]; then + patch_apply winex11-wglShareLists/0001-winex11.drv-Only-warn-about-used-contexts-in-wglShar.patch + ( + echo '+ { "Michael Müller", "winex11.drv: Only warn about used contexts in wglShareLists.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset wininet-FtpFindFirstFile +# | +# | This patchset fixes the following Wine bugs: +# | * [#16526] Fix handling of subdirectory in FtpFindFirstFile +# | +# | Modified files: +# | * dlls/wininet/ftp.c, dlls/wininet/tests/ftp.c +# | +if [ "$enable_wininet_FtpFindFirstFile" -eq 1 ]; then + patch_apply wininet-FtpFindFirstFile/0001-wininet-Fix-handling-of-subdirectory-in-FtpFindFirst.patch + ( + echo '+ { "Sebastian Lackner", "wininet: Fix handling of subdirectory in FtpFindFirstFile.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset wininet-encoding +# | +# | This patchset fixes the following Wine bugs: +# | * [#37046] wininet should allow Accept-Encoding header for HTTP/1.0 +# | +# | Modified files: +# | * dlls/wininet/http.c, dlls/wininet/tests/http.c +# | +if [ "$enable_wininet_encoding" -eq 1 ]; then + patch_apply wininet-encoding/0001-wininet-Allow-Accept-Encoding-for-HTTP-1.0-requests.patch + ( + echo '+ { "Michael Müller", "wininet: Allow Accept-Encoding for HTTP/1.0 requests.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset wpcap-Dynamic_Linking +# | +# | Modified files: +# | * configure.ac, dlls/wpcap/Makefile.in, dlls/wpcap/wpcap.c +# | +if [ "$enable_wpcap_Dynamic_Linking" -eq 1 ]; then + patch_apply wpcap-Dynamic_Linking/0001-wpcap-Load-libpcap-dynamically.patch + ( + echo '+ { "André Hentschel", "wpcap: Load libpcap dynamically.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ws2_32-Connect_Time +# | +# | Modified files: +# | * dlls/ws2_32/socket.c, dlls/ws2_32/tests/sock.c, server/protocol.def, server/sock.c +# | +if [ "$enable_ws2_32_Connect_Time" -eq 1 ]; then + patch_apply ws2_32-Connect_Time/0001-ws2_32-Implement-returning-the-proper-time-with-SO_C.patch + ( + echo '+ { "Sebastian Lackner", "ws2_32: Implement returning the proper time with SO_CONNECT_TIME.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ws2_32-TransmitFile +# | +# | This patchset fixes the following Wine bugs: +# | * [#5048] Support for TransmitFile +# | +# | Modified files: +# | * dlls/ws2_32/socket.c, dlls/ws2_32/tests/sock.c, include/winsock.h, server/protocol.def, server/sock.c +# | +if [ "$enable_ws2_32_TransmitFile" -eq 1 ]; then + patch_apply ws2_32-TransmitFile/0001-ws2_32-Add-stub-for-TransmitFile.patch + patch_apply ws2_32-TransmitFile/0002-ws2_32-Check-for-invalid-parameters-in-TransmitFile.patch + patch_apply ws2_32-TransmitFile/0003-ws2_32-Implement-a-basic-synchronous-TransmitFile.patch + patch_apply ws2_32-TransmitFile/0004-ws2_32-Add-asynchronous-support-for-TransmitFile.patch + patch_apply ws2_32-TransmitFile/0005-ws2_32-Add-support-for-TF_DISCONNECT-and-TF_REUSE_SO.patch + ( + echo '+ { "Erich E. Hoover", "ws2_32: Add stub for TransmitFile.", 1 },'; + echo '+ { "Erich E. Hoover", "ws2_32: Check for invalid parameters in TransmitFile.", 1 },'; + echo '+ { "Erich E. Hoover", "ws2_32: Implement a basic synchronous TransmitFile.", 1 },'; + echo '+ { "Erich E. Hoover", "ws2_32: Add asynchronous support for TransmitFile.", 1 },'; + echo '+ { "Erich E. Hoover", "ws2_32: Add support for TF_DISCONNECT and TF_REUSE_SOCKET to TransmitFile.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ws2_32-getaddrinfo +# | +# | This patchset fixes the following Wine bugs: +# | * [#29609] Try harder to get the host name address in getaddrinfo() +# | +# | Modified files: +# | * dlls/ws2_32/socket.c, dlls/ws2_32/tests/sock.c +# | +if [ "$enable_ws2_32_getaddrinfo" -eq 1 ]; then + patch_apply ws2_32-getaddrinfo/0001-ws2_32-Try-harder-to-get-the-host-name-address-in-ge.patch + ( + echo '+ { "Bruno Jesus", "ws2_32: Try harder to get the host name address in getaddrinfo().", 1 },'; + ) >> "$patchlist" +fi + +# Patchset wtsapi32-EnumerateProcesses +# | +# | This patchset fixes the following Wine bugs: +# | * [#29903] Support for WTSEnumerateProcessesW +# | +# | Modified files: +# | * dlls/wtsapi32/tests/wtsapi.c, dlls/wtsapi32/wtsapi32.c +# | +if [ "$enable_wtsapi32_EnumerateProcesses" -eq 1 ]; then + patch_apply wtsapi32-EnumerateProcesses/0001-wtsapi32-Partial-implementation-of-WTSEnumerateProce.patch + ( + echo '+ { "Sebastian Lackner", "wtsapi32: Partial implementation of WTSEnumerateProcessesW.", 1 },'; + ) >> "$patchlist" +fi + + +if [ "$enable_autoupdate" -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 [ ! -z "$patch_data" ]; then + patch_lines=$((${patch_lines}+23)) + cat > "$patchlist" < +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 +--- a/libs/wine/config.c ++++ b/libs/wine/config.c +@@ -478,6 +478,${patch_lines} @@ const char *wine_get_version(void) + return PACKAGE_VERSION; + } + ++static const struct ++{ ++ const char *author; ++ const char *subject; ++ int revision; ++} ++wine_patch_data[] = ++{ +${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) + { +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; +EOF + patch_apply "$patchlist" + fi + rm "$patchlist" + + # Other autogenerated changes + pushd "$DESTDIR" > /dev/null + if ! autoreconf -f; then + abort "'autoreconf -f' failed." + fi + if ! ./tools/make_requests; then + abort "'./tools/make_requests' failed." + fi + popd +fi + +# Success +exit 0 diff --git a/patches/wined3d-CSMT_Main/9999-IfDefined.patch b/patches/wined3d-CSMT_Main/9999-IfDefined.patch index 8674f1b2..acf7ca23 100644 --- a/patches/wined3d-CSMT_Main/9999-IfDefined.patch +++ b/patches/wined3d-CSMT_Main/9999-IfDefined.patch @@ -1688,7 +1688,7 @@ diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c --- a/dlls/d3d9/tests/visual.c +++ b/dlls/d3d9/tests/visual.c -@@ -16457,7 +16457,11 @@ +@@ -16455,7 +16455,11 @@ fill_surface(surface_managed, 0x0000ff00, D3DLOCK_NO_DIRTY_UPDATE); add_dirty_rect_test_draw(device); color = getPixelColor(device, 320, 240);