You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Compare commits
33 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
2e2bc510ce | ||
|
1c4bc193eb | ||
|
f8cd6c9ba1 | ||
|
3124bd0bf3 | ||
|
ea079c4c16 | ||
|
126524d9ce | ||
|
441bcce3db | ||
|
1bf2e6fe90 | ||
|
9d13bfd569 | ||
|
739a308958 | ||
|
35b9051d1c | ||
|
7e776b7a90 | ||
|
24dcca66e3 | ||
|
9118e47cd3 | ||
|
8ae4e4601d | ||
|
21efb9c6f2 | ||
|
4c11d0c812 | ||
|
d7546964c7 | ||
|
766590c481 | ||
|
5ed04faa06 | ||
|
dbaf56b01c | ||
|
7145f11c99 | ||
|
819a64744e | ||
|
5bcbac4982 | ||
|
ed7fe13391 | ||
|
740b727a94 | ||
|
33c9d17dee | ||
|
5d4124c92b | ||
|
02d83cab14 | ||
|
7fc4595aaa | ||
|
364cd111e2 | ||
|
e9f11bd51b | ||
|
15f62469af |
13
.github/FUNDING.yml
vendored
13
.github/FUNDING.yml
vendored
@@ -1,13 +0,0 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
#github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
#patreon: # Replace with a single Patreon username
|
||||
#open_collective: # Replace with a single Open Collective username
|
||||
#ko_fi: # Replace with a single Ko-fi username
|
||||
#tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
#community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
#liberapay: # Replace with a single Liberapay username
|
||||
#issuehunt: # Replace with a single IssueHunt username
|
||||
#otechie: # Replace with a single Otechie username
|
||||
|
||||
patreon: winestaging
|
68
.github/workflows/macOS.yml
vendored
68
.github/workflows/macOS.yml
vendored
@@ -1,68 +0,0 @@
|
||||
name: MacOS
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
wine-staging:
|
||||
# https://github.com/actions/runner-images/issues/9741
|
||||
runs-on: macos-13
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
brew install --cask xquartz
|
||||
brew install autoconf \
|
||||
bison \
|
||||
gphoto2 \
|
||||
gstreamer \
|
||||
mingw-w64 \
|
||||
molten-vk \
|
||||
sdl2
|
||||
|
||||
- name: Add bison & krb5 to $PATH
|
||||
run: |
|
||||
set -eu
|
||||
echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH
|
||||
echo "$(brew --prefix krb5)/bin" >> $GITHUB_PATH
|
||||
|
||||
- name: Get upstream-commit
|
||||
run: |
|
||||
mkdir $GITHUB_WORKSPACE/wine
|
||||
cd wine
|
||||
git init
|
||||
git fetch https://gitlab.winehq.org/wine/wine.git $($GITHUB_WORKSPACE/staging/patchinstall.py --upstream-commit) --depth=1
|
||||
git checkout $($GITHUB_WORKSPACE/staging/patchinstall.py --upstream-commit)
|
||||
|
||||
- name: Run patchinstall.py --all
|
||||
run: |
|
||||
cd wine
|
||||
$GITHUB_WORKSPACE/staging/patchinstall.py DESTDIR=. --all
|
||||
|
||||
- name: Configure wine
|
||||
env:
|
||||
# We need to tell the linker to add brew & Xquarts to the rpath stack.
|
||||
LDFLAGS: "-Wl,-rpath,/usr/local/lib -Wl,-rpath,/opt/X11/lib"
|
||||
# Use an older deployment target to avoid new dyld behaviors.
|
||||
MACOSX_DEPLOYMENT_TARGET: "10.14"
|
||||
run: |
|
||||
cd $GITHUB_WORKSPACE/wine
|
||||
./configure --enable-win64 \
|
||||
--without-alsa \
|
||||
--without-capi \
|
||||
--without-dbus \
|
||||
--without-oss \
|
||||
--without-pulse \
|
||||
--without-udev \
|
||||
--without-v4l2 \
|
||||
--x-include=/opt/X11/include \
|
||||
--x-lib=/opt/X11/lib
|
||||
|
||||
- name: Build wine64
|
||||
run: |
|
||||
cd $GITHUB_WORKSPACE/wine
|
||||
make -j$(sysctl -n hw.ncpu 2>/dev/null)
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
staging/wine
|
||||
*.pyc
|
||||
.patchupdate.cache
|
||||
|
@@ -7,9 +7,7 @@ are part of **Wine Staging** and are licensed under the terms of the
|
||||
[LGPLv2.1](#gnu-lgpl-version-21), to stay compatible with Wine:
|
||||
|
||||
```
|
||||
Copyright (C) 2014-2017 the Wine Staging project authors.
|
||||
Copyright (C) 2018 Alistair Leslie-Hughes, Zebediah Figura
|
||||
Copyright (C) 2019-2020 Alistair Leslie-Hughes, Zebediah Figura, Paul Gofman
|
||||
Copyright (C) 2014-2016 the Wine Staging project authors.
|
||||
|
||||
Wine Staging is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
|
72
README.md
72
README.md
@@ -6,14 +6,15 @@ features, which have not been integrated into the development branch yet. The
|
||||
idea of Wine Staging is to provide experimental features faster to end users and
|
||||
to give developers the possibility to discuss and improve their patches before
|
||||
they are integrated into the main branch. More information about Wine Staging
|
||||
can also be found [on the WineHQ wiki](https://wiki.winehq.org/Wine-Staging).
|
||||
can also be found on our website [wine-staging.com](http://wine-staging.com).
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
Ready-to-use packages for Wine Staging are available for a variety of Linux
|
||||
distributions and for Mac OS X. Just follow the [installation
|
||||
instructions](https://wiki.winehq.org/Download) for your operating system.
|
||||
distributions and for Mac OS X. Just follow the
|
||||
[installation instructions](https://github.com/wine-compholio/wine-staging/wiki/Installation)
|
||||
for your operating system.
|
||||
|
||||
On most distributions the `wine-staging` package is installed to
|
||||
`/opt/wine-staging`, such that multiple Wine versions can be installed in
|
||||
@@ -21,7 +22,17 @@ parallel. If this is the case for your distribution, you will have to type
|
||||
`/opt/wine-staging/bin/wine` instead of just `wine`. The same also applies for
|
||||
other wine-specific programs like `winecfg`. To learn more about how to use
|
||||
Wine Staging, please take a look at the
|
||||
[usage instructions](https://wiki.winehq.org/Wine-Staging_Usage).
|
||||
[usage instructions](https://github.com/wine-compholio/wine-staging/wiki/Usage).
|
||||
|
||||
Reporting bugs
|
||||
--------------
|
||||
|
||||
Since WineConf 2015 Wine Staging is an official part of WineHQ, which means you
|
||||
can report problems directly at https://bugs.winehq.org/. Most of the time bugs
|
||||
found in Wine Staging also turn out to be present in the development branch, so
|
||||
its recommended to open your bug in the "Wine" product, unless you are sure its
|
||||
really "Wine Staging" specific. For problems with our binary packages, please
|
||||
also open a bug report there.
|
||||
|
||||
Building
|
||||
--------
|
||||
@@ -33,11 +44,11 @@ of information about that is collected in the
|
||||
[WineHQ Wiki](http://wiki.winehq.org/BuildingWine).
|
||||
|
||||
In order to apply all Wine Staging patches it is recommended to use the
|
||||
`patchinstall.py` utility which takes care of applying all patches in the
|
||||
`patchinstall.sh` utility which takes care of applying all patches in the
|
||||
correct order. For reference, the possible commandline arguments are:
|
||||
|
||||
```
|
||||
Usage: ./staging/patchinstall.py [DESTDIR=path] [-W patchset] [patchset ...]
|
||||
Usage: ./patchinstall.sh [DESTDIR=path] [--all] [-W patchset] [patchset ...]
|
||||
|
||||
Autogenerated script to apply all Wine Staging patches on your Wine
|
||||
source tree.
|
||||
@@ -55,53 +66,36 @@ Configuration:
|
||||
|
||||
Backends:
|
||||
--backend=patch Use regular 'patch' utility to apply patches (default)
|
||||
--backend=eapply Use 'eapply' to apply patches (Gentoo only)
|
||||
--backend=epatch Use 'epatch' to apply patches (Gentoo only, deprecated)
|
||||
--backend=git-am Use 'git am' to apply patches
|
||||
--backend=git-apply Use 'git apply' to apply patches
|
||||
--backend=stg Import the patches using stacked git
|
||||
```
|
||||
|
||||
If you want to apply *all* patches with the `patch` utility, the commandline
|
||||
should look similar to this:
|
||||
```
|
||||
./staging/patchinstall.py DESTDIR="/path/to/wine" --all
|
||||
./patches/patchinstall.sh DESTDIR="/path/to/wine" --all
|
||||
```
|
||||
|
||||
Before you proceed with the compilation, please make sure that you installed all
|
||||
additional build dependencies required for the Wine Staging features you are
|
||||
interested in (check output of `./configure`). More information about building
|
||||
Wine Staging, optional build dependencies, and hints for packagers are collected
|
||||
in our [Wiki](https://wiki.winehq.org/Wine-Staging).
|
||||
in our [Wiki](https://github.com/wine-compholio/wine-staging/wiki/Packaging).
|
||||
|
||||
Contributing
|
||||
------------
|
||||
|
||||
For information on contributing to Wine-Staging, please see
|
||||
<https://wiki.winehq.org/Wine-Staging_Contributing>. Note that GitHub pull
|
||||
requests are strongly dispreferred, especially for patches.
|
||||
|
||||
Donations
|
||||
---------
|
||||
|
||||
wine-staging is a large set of experimental patches which provide various
|
||||
improvements to WINE, but are not quite suitable for upstreaming. This set of
|
||||
patches has been continuously managed for many years by a small group of
|
||||
volunteers. The way this works is that we often review patches attached to
|
||||
various bug reports found at https://bugs.winehq.org/ which may fix bugs, but
|
||||
may not be quite suitable to be upstreamed due to needing some cleanup or more
|
||||
proper implementation. In the event that this happens, we add the patches to
|
||||
wine-staging instead, and keep them updated and maintained as well as attempt to
|
||||
clean them up to be upstreamed. We also both write and verify patches which fix
|
||||
various bugs that may not have patches, and in turn allow them run better using
|
||||
WINE. This includes testing on various hardware, games and applications.
|
||||
|
||||
Any expenses for applications, games, or hardware which we do not own comes out
|
||||
of pocket. In order to alleviate these expenses, we are now accepting donations.
|
||||
This in turn allows us to continue to perform testing, provide fixes, and get
|
||||
them upstreamed, ultimately aiming to provide a better experience for all WINE
|
||||
users. All of our work is provided publicly for free and can be found at
|
||||
<https://gitlab.winehq.org/wine/wine-staging>. We do not expect to be paid for
|
||||
any of the work provided, nor will donators receive any special benefits or
|
||||
compensation.
|
||||
|
||||
Donations are recieved through Patreon. Anyone interested may donate here:
|
||||
|
||||
https://www.patreon.com/winestaging
|
||||
Wine Staging mainly concentrates on experimental features and patches which are
|
||||
difficult to get into the development branch. If you have a very simple bug fix
|
||||
including tests, there is usually no need to send it to Wine Staging. You can
|
||||
directly contribute it to the
|
||||
[development branch](http://wiki.winehq.org/SubmittingPatches). However, if you
|
||||
already tried that without success, or are working on such a complex area that
|
||||
you do not really think its ready for inclusion, you might want to submit it to
|
||||
our Staging tree. Please open a patch submission request on
|
||||
[bugs.wine-staging.com](https://bugs.wine-staging.com/) including the patch.
|
||||
More information is also available in our
|
||||
[Wiki](https://github.com/wine-compholio/wine-staging/wiki/Contributing).
|
||||
|
@@ -0,0 +1,81 @@
|
||||
From 35e7be609df3c37eded9a3fd117ba0cef02f24c7 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Fri, 8 Aug 2014 19:33:14 -0600
|
||||
Subject: Appease the blessed version of gcc (4.5) when -Werror is enabled.
|
||||
|
||||
---
|
||||
dlls/d3d9/tests/visual.c | 2 +-
|
||||
dlls/netapi32/netapi32.c | 2 +-
|
||||
dlls/winealsa.drv/mmdevdrv.c | 2 +-
|
||||
dlls/wined3d/glsl_shader.c | 2 +-
|
||||
tools/makedep.c | 2 +-
|
||||
5 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
|
||||
index 55140c6..2facbfb 100644
|
||||
--- a/dlls/d3d9/tests/visual.c
|
||||
+++ b/dlls/d3d9/tests/visual.c
|
||||
@@ -12034,7 +12034,7 @@ static void yuv_layout_test(void)
|
||||
IDirect3D9 *d3d;
|
||||
D3DCOLOR color;
|
||||
DWORD ref_color;
|
||||
- BYTE *buf, *chroma_buf, *u_buf, *v_buf;
|
||||
+ BYTE *buf, *chroma_buf, *u_buf = NULL, *v_buf = NULL;
|
||||
UINT width = 20, height = 16;
|
||||
IDirect3DDevice9 *device;
|
||||
ULONG refcount;
|
||||
diff --git a/dlls/netapi32/netapi32.c b/dlls/netapi32/netapi32.c
|
||||
index bb61e7f..cf4c466 100644
|
||||
--- a/dlls/netapi32/netapi32.c
|
||||
+++ b/dlls/netapi32/netapi32.c
|
||||
@@ -780,7 +780,7 @@ static NET_API_STATUS share_info_to_samba( DWORD level, const BYTE *buf, unsigne
|
||||
static NET_API_STATUS share_add( LMSTR servername, DWORD level, LPBYTE buf, LPDWORD parm_err )
|
||||
{
|
||||
char *server = NULL;
|
||||
- unsigned char *info;
|
||||
+ unsigned char *info = NULL;
|
||||
NET_API_STATUS status;
|
||||
|
||||
if (servername && !(server = strdup_unixcp( servername ))) return ERROR_OUTOFMEMORY;
|
||||
diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c
|
||||
index 14eac39..ebff9f1 100644
|
||||
--- a/dlls/winealsa.drv/mmdevdrv.c
|
||||
+++ b/dlls/winealsa.drv/mmdevdrv.c
|
||||
@@ -359,7 +359,7 @@ static WCHAR *construct_device_id(EDataFlow flow, const WCHAR *chunk1, const cha
|
||||
{
|
||||
WCHAR *ret;
|
||||
const WCHAR *prefix;
|
||||
- DWORD len_wchars = 0, chunk1_len, copied = 0, prefix_len;
|
||||
+ DWORD len_wchars = 0, chunk1_len = 0, copied = 0, prefix_len;
|
||||
|
||||
static const WCHAR dashW[] = {' ','-',' ',0};
|
||||
static const size_t dashW_len = (sizeof(dashW) / sizeof(*dashW)) - 1;
|
||||
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
|
||||
index 44e7090..429ae90 100644
|
||||
--- a/dlls/wined3d/glsl_shader.c
|
||||
+++ b/dlls/wined3d/glsl_shader.c
|
||||
@@ -6893,7 +6893,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
|
||||
GLuint vs_id = 0;
|
||||
GLuint gs_id = 0;
|
||||
GLuint ps_id = 0;
|
||||
- struct list *ps_list, *vs_list;
|
||||
+ struct list *ps_list = NULL, *vs_list = NULL;
|
||||
WORD attribs_map;
|
||||
struct wined3d_string_buffer *tmp_name;
|
||||
|
||||
diff --git a/tools/makedep.c b/tools/makedep.c
|
||||
index d8cf2f5..280f62f 100644
|
||||
--- a/tools/makedep.c
|
||||
+++ b/tools/makedep.c
|
||||
@@ -1559,7 +1559,7 @@ static const char *get_make_variable( const struct makefile *make, const char *n
|
||||
static char *get_expanded_make_variable( const struct makefile *make, const char *name )
|
||||
{
|
||||
const char *var;
|
||||
- char *p, *end, *expand, *tmp;
|
||||
+ char *p, *end, *expand, *tmp = NULL;
|
||||
|
||||
var = get_make_variable( make, name );
|
||||
if (!var) return NULL;
|
||||
--
|
||||
2.6.2
|
||||
|
1
patches/Compiler_Warnings/definition
Normal file
1
patches/Compiler_Warnings/definition
Normal file
@@ -0,0 +1 @@
|
||||
Category: stable
|
@@ -0,0 +1,29 @@
|
||||
From 6f561502fe458837f3a5b27f477b1a52f33d88ba Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Andr=C3=A9=20Hentschel?= <nerv@dawncrow.de>
|
||||
Date: Mon, 16 Nov 2015 22:36:40 +0100
|
||||
Subject: sfnt2fon: Don't leak output name if specified multiple times
|
||||
(Coverity)
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: André Hentschel <nerv@dawncrow.de>
|
||||
---
|
||||
tools/sfnt2fon/sfnt2fon.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/tools/sfnt2fon/sfnt2fon.c b/tools/sfnt2fon/sfnt2fon.c
|
||||
index 7612bc2..f825ae4 100644
|
||||
--- a/tools/sfnt2fon/sfnt2fon.c
|
||||
+++ b/tools/sfnt2fon/sfnt2fon.c
|
||||
@@ -654,6 +654,7 @@ static char **parse_options( int argc, char **argv )
|
||||
option_defchar = atoi( optarg );
|
||||
break;
|
||||
case 'o':
|
||||
+ free( option_output );
|
||||
option_output = strdup( optarg );
|
||||
break;
|
||||
case 'q':
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -0,0 +1,30 @@
|
||||
From 792e99d66b40481fb81042d51a12c861d8b33b51 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Andr=C3=A9=20Hentschel?= <nerv@dawncrow.de>
|
||||
Date: Mon, 16 Nov 2015 22:36:38 +0100
|
||||
Subject: winedump: Free debug string in case it was not freed in for-loop
|
||||
(Coverity)
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: André Hentschel <nerv@dawncrow.de>
|
||||
---
|
||||
tools/winedump/msc.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c
|
||||
index 5890b29..3f1fd98 100644
|
||||
--- a/tools/winedump/msc.c
|
||||
+++ b/tools/winedump/msc.c
|
||||
@@ -1378,6 +1378,8 @@ BOOL codeview_dump_symbols(const void* root, unsigned long size)
|
||||
dump_data((const void*)sym, sym->generic.len + 2, " ");
|
||||
}
|
||||
}
|
||||
+
|
||||
+ free(curr_func);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -0,0 +1,287 @@
|
||||
From 940f22fae1e118faab3aa2926d050ad3c84a3e79 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Tue, 11 Nov 2014 03:11:33 +0100
|
||||
Subject: ntdll: Implement emulation of SIDT instruction when using Exagear.
|
||||
|
||||
---
|
||||
configure.ac | 8 ++
|
||||
dlls/ntdll/signal_i386.c | 223 +++++++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 231 insertions(+)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 92d78a2..c88a139 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -32,6 +32,7 @@ AC_ARG_ENABLE(win16, AS_HELP_STRING([--disable-win16],[do not include Win16 supp
|
||||
AC_ARG_ENABLE(win64, AS_HELP_STRING([--enable-win64],[build a Win64 emulator on AMD64 (won't run Win32 binaries)]))
|
||||
AC_ARG_ENABLE(tests, AS_HELP_STRING([--disable-tests],[do not build the regression tests]))
|
||||
AC_ARG_ENABLE(maintainer-mode, AS_HELP_STRING([--enable-maintainer-mode],[enable maintainer-specific build rules]))
|
||||
+AC_ARG_ENABLE(exagear-compat, AS_HELP_STRING([--enable-exagear-compat],[use workarounds for known problems in the Exagear emulator]))
|
||||
|
||||
AC_ARG_WITH(alsa, AS_HELP_STRING([--without-alsa],[do not use the Alsa sound support]),
|
||||
[if test "x$withval" = "xno"; then ac_cv_header_sys_asoundlib_h=no; ac_cv_header_alsa_asoundlib_h=no; fi])
|
||||
@@ -363,6 +364,13 @@ fi
|
||||
WINE_WARNING_WITH(gettext,[test "$MSGFMT" = false],
|
||||
[gettext tools not found (or too old), translations won't be built.])
|
||||
|
||||
+dnl **** Enable Exagear workarounds ****
|
||||
+
|
||||
+if test "x$enable_exagear_compat" = "xyes"
|
||||
+then
|
||||
+ AC_DEFINE(EXAGEAR_COMPAT, 1, [Define if you want to enable Exagear emulator workarounds])
|
||||
+fi
|
||||
+
|
||||
dnl **** Check for some libraries ****
|
||||
|
||||
dnl Check for -li386 for NetBSD and OpenBSD
|
||||
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
|
||||
index 5708aae..f27ce56 100644
|
||||
--- a/dlls/ntdll/signal_i386.c
|
||||
+++ b/dlls/ntdll/signal_i386.c
|
||||
@@ -96,6 +96,14 @@ typedef struct
|
||||
BYTE Reserved4[96];
|
||||
} XMM_SAVE_AREA32;
|
||||
|
||||
+#include "pshpack1.h"
|
||||
+struct idtr
|
||||
+{
|
||||
+ WORD limit;
|
||||
+ BYTE *base;
|
||||
+};
|
||||
+#include "poppack.h"
|
||||
+
|
||||
/***********************************************************************
|
||||
* signal context platform-specific definitions
|
||||
*/
|
||||
@@ -1898,6 +1906,213 @@ static inline DWORD get_fpu_code( const CONTEXT *context )
|
||||
}
|
||||
|
||||
|
||||
+#ifdef EXAGEAR_COMPAT
|
||||
+
|
||||
+/***********************************************************************
|
||||
+ * INSTR_GetOperandAddr
|
||||
+ *
|
||||
+ * Return the address of an instruction operand (from the mod/rm byte).
|
||||
+ */
|
||||
+static BYTE *INSTR_GetOperandAddr( CONTEXT *context, const BYTE *instr,
|
||||
+ int long_addr, int segprefix, int *len )
|
||||
+{
|
||||
+ int mod, rm, base = 0, index = 0, ss = 0, off;
|
||||
+
|
||||
+#define GET_VAL(val,type) \
|
||||
+ { *val = *(type *)instr; instr += sizeof(type); *len += sizeof(type); }
|
||||
+
|
||||
+ *len = 0;
|
||||
+ GET_VAL( &mod, BYTE );
|
||||
+ rm = mod & 7;
|
||||
+ mod >>= 6;
|
||||
+
|
||||
+ if (mod == 3)
|
||||
+ {
|
||||
+ switch(rm)
|
||||
+ {
|
||||
+ case 0: return (BYTE *)&context->Eax;
|
||||
+ case 1: return (BYTE *)&context->Ecx;
|
||||
+ case 2: return (BYTE *)&context->Edx;
|
||||
+ case 3: return (BYTE *)&context->Ebx;
|
||||
+ case 4: return (BYTE *)&context->Esp;
|
||||
+ case 5: return (BYTE *)&context->Ebp;
|
||||
+ case 6: return (BYTE *)&context->Esi;
|
||||
+ case 7: return (BYTE *)&context->Edi;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (long_addr)
|
||||
+ {
|
||||
+ if (rm == 4)
|
||||
+ {
|
||||
+ BYTE sib;
|
||||
+ GET_VAL( &sib, BYTE );
|
||||
+ rm = sib & 7;
|
||||
+ ss = sib >> 6;
|
||||
+ switch((sib >> 3) & 7)
|
||||
+ {
|
||||
+ case 0: index = context->Eax; break;
|
||||
+ case 1: index = context->Ecx; break;
|
||||
+ case 2: index = context->Edx; break;
|
||||
+ case 3: index = context->Ebx; break;
|
||||
+ case 4: index = 0; break;
|
||||
+ case 5: index = context->Ebp; break;
|
||||
+ case 6: index = context->Esi; break;
|
||||
+ case 7: index = context->Edi; break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ switch(rm)
|
||||
+ {
|
||||
+ case 0: base = context->Eax; break;
|
||||
+ case 1: base = context->Ecx; break;
|
||||
+ case 2: base = context->Edx; break;
|
||||
+ case 3: base = context->Ebx; break;
|
||||
+ case 4: base = context->Esp; break;
|
||||
+ case 5: base = context->Ebp; break;
|
||||
+ case 6: base = context->Esi; break;
|
||||
+ case 7: base = context->Edi; break;
|
||||
+ }
|
||||
+ switch (mod)
|
||||
+ {
|
||||
+ case 0:
|
||||
+ if (rm == 5) /* special case: ds:(disp32) */
|
||||
+ {
|
||||
+ GET_VAL( &base, DWORD );
|
||||
+ }
|
||||
+ break;
|
||||
+
|
||||
+ case 1: /* 8-bit disp */
|
||||
+ GET_VAL( &off, BYTE );
|
||||
+ base += (signed char)off;
|
||||
+ break;
|
||||
+
|
||||
+ case 2: /* 32-bit disp */
|
||||
+ GET_VAL( &off, DWORD );
|
||||
+ base += (signed long)off;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ else /* short address */
|
||||
+ {
|
||||
+ switch(rm)
|
||||
+ {
|
||||
+ case 0: /* ds:(bx,si) */
|
||||
+ base = LOWORD(context->Ebx) + LOWORD(context->Esi);
|
||||
+ break;
|
||||
+ case 1: /* ds:(bx,di) */
|
||||
+ base = LOWORD(context->Ebx) + LOWORD(context->Edi);
|
||||
+ break;
|
||||
+ case 2: /* ss:(bp,si) */
|
||||
+ base = LOWORD(context->Ebp) + LOWORD(context->Esi);
|
||||
+ break;
|
||||
+ case 3: /* ss:(bp,di) */
|
||||
+ base = LOWORD(context->Ebp) + LOWORD(context->Edi);
|
||||
+ break;
|
||||
+ case 4: /* ds:(si) */
|
||||
+ base = LOWORD(context->Esi);
|
||||
+ break;
|
||||
+ case 5: /* ds:(di) */
|
||||
+ base = LOWORD(context->Edi);
|
||||
+ break;
|
||||
+ case 6: /* ss:(bp) */
|
||||
+ base = LOWORD(context->Ebp);
|
||||
+ break;
|
||||
+ case 7: /* ds:(bx) */
|
||||
+ base = LOWORD(context->Ebx);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ switch(mod)
|
||||
+ {
|
||||
+ case 0:
|
||||
+ if (rm == 6) /* special case: ds:(disp16) */
|
||||
+ {
|
||||
+ GET_VAL( &base, WORD );
|
||||
+ }
|
||||
+ break;
|
||||
+
|
||||
+ case 1: /* 8-bit disp */
|
||||
+ GET_VAL( &off, BYTE );
|
||||
+ base += (signed char)off;
|
||||
+ break;
|
||||
+
|
||||
+ case 2: /* 16-bit disp */
|
||||
+ GET_VAL( &off, WORD );
|
||||
+ base += (signed short)off;
|
||||
+ break;
|
||||
+ }
|
||||
+ base &= 0xffff;
|
||||
+ }
|
||||
+ /* FIXME: we assume that all segments have a base of 0 */
|
||||
+ return (BYTE *)(base + (index << ss));
|
||||
+#undef GET_VAL
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/***********************************************************************
|
||||
+ * check_invalid_instr
|
||||
+ *
|
||||
+ * Support for instructions not implemented by Exagear.
|
||||
+ */
|
||||
+static inline BOOL check_invalid_instr( CONTEXT *context )
|
||||
+{
|
||||
+ const BYTE *instr;
|
||||
+ unsigned int prefix_count = 0;
|
||||
+ int len, long_addr = 1;
|
||||
+
|
||||
+ if (!wine_ldt_is_system( context->SegCs )) return FALSE;
|
||||
+ instr = (BYTE *)context->Eip;
|
||||
+
|
||||
+ for (;;) switch (*instr)
|
||||
+ {
|
||||
+ /* instruction prefixes */
|
||||
+ case 0x2e: /* %cs: */
|
||||
+ case 0x36: /* %ss: */
|
||||
+ case 0x3e: /* %ds: */
|
||||
+ case 0x26: /* %es: */
|
||||
+ case 0x64: /* %fs: */
|
||||
+ case 0x65: /* %gs: */
|
||||
+ case 0x66: /* opcode size */
|
||||
+ case 0x67: /* addr size */
|
||||
+ case 0xf0: /* lock */
|
||||
+ case 0xf2: /* repne */
|
||||
+ case 0xf3: /* repe */
|
||||
+ if (++prefix_count >= 15) return FALSE;
|
||||
+ if (*instr == 0x67) long_addr = !long_addr; /* addr size */
|
||||
+ instr++;
|
||||
+ continue;
|
||||
+ case 0x0f: /* extended instruction */
|
||||
+ switch (instr[1])
|
||||
+ {
|
||||
+ case 0x01:
|
||||
+ if (((instr[2] >> 3) & 7) == 1) /* sidt m */
|
||||
+ {
|
||||
+ struct idtr ret;
|
||||
+ BYTE *addr;
|
||||
+
|
||||
+ if ((instr[2] >> 6) == 3) return FALSE; /* loading to register not allowed */
|
||||
+ addr = INSTR_GetOperandAddr( context, instr + 2, long_addr, 0, &len );
|
||||
+
|
||||
+ /* fake IDT structure */
|
||||
+ ret.limit = 0xfff;
|
||||
+ ret.base = (void *)0xff000000;
|
||||
+ memcpy(addr, &ret, sizeof(ret));
|
||||
+
|
||||
+ context->Eip += prefix_count + len + 2;
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
+ return FALSE;
|
||||
+ default:
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#endif /* EXAGEAR_COMPAT */
|
||||
+
|
||||
+
|
||||
/**********************************************************************
|
||||
* raise_segv_exception
|
||||
*/
|
||||
@@ -1907,6 +2122,14 @@ static void WINAPI raise_segv_exception( EXCEPTION_RECORD *rec, CONTEXT *context
|
||||
|
||||
switch(rec->ExceptionCode)
|
||||
{
|
||||
+#ifdef EXAGEAR_COMPAT
|
||||
+ case EXCEPTION_ILLEGAL_INSTRUCTION:
|
||||
+ {
|
||||
+ if (check_invalid_instr( context ))
|
||||
+ goto done;
|
||||
+ }
|
||||
+ break;
|
||||
+#endif
|
||||
case EXCEPTION_ACCESS_VIOLATION:
|
||||
if (rec->NumberParameters == 2)
|
||||
{
|
||||
--
|
||||
2.7.1
|
||||
|
@@ -0,0 +1,51 @@
|
||||
From 5a4827d5c16aefd82029583710b9032a2356917b Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 22 Nov 2014 05:49:30 +0100
|
||||
Subject: ntdll: Fix issues with write watches when using Exagear.
|
||||
|
||||
---
|
||||
dlls/ntdll/virtual.c | 21 +++++++++++++++++++++
|
||||
1 file changed, 21 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
|
||||
index f7aae0b..3fa2027 100644
|
||||
--- a/dlls/ntdll/virtual.c
|
||||
+++ b/dlls/ntdll/virtual.c
|
||||
@@ -1558,6 +1558,26 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err, BOOL on_signal_stack )
|
||||
{
|
||||
void *page = ROUND_ADDR( addr, page_mask );
|
||||
BYTE *vprot = &view->prot[((const char *)page - (const char *)view->base) >> page_shift];
|
||||
+#ifdef EXAGEAR_COMPAT
|
||||
+ /* Exagear doesn't correctly set err, so always check for write watches, and
|
||||
+ * retry after removing the VPROT_WRITEWATCH or VPROT_WRITECOPY flag. In
|
||||
+ * contrary to the general implementation below this is not completely race-
|
||||
+ * condition safe. When multiple threads trigger the write watch at the same
|
||||
+ * time only the first thread will properly continue the execution, the rest
|
||||
+ * will crash. */
|
||||
+ if ((view->protect & VPROT_WRITEWATCH) && (*vprot & VPROT_WRITEWATCH))
|
||||
+ {
|
||||
+ *vprot &= ~VPROT_WRITEWATCH;
|
||||
+ VIRTUAL_SetProt( view, page, page_size, *vprot );
|
||||
+ if (VIRTUAL_GetUnixProt( *vprot ) & PROT_WRITE) ret = STATUS_SUCCESS;
|
||||
+ }
|
||||
+ if (*vprot & VPROT_WRITECOPY)
|
||||
+ {
|
||||
+ *vprot = (*vprot & ~VPROT_WRITECOPY) | VPROT_WRITE;
|
||||
+ VIRTUAL_SetProt( view, page, page_size, *vprot );
|
||||
+ if (VIRTUAL_GetUnixProt( *vprot ) & PROT_WRITE) ret = STATUS_SUCCESS;
|
||||
+ }
|
||||
+#else
|
||||
if (err & EXCEPTION_WRITE_FAULT)
|
||||
{
|
||||
if ((view->protect & VPROT_WRITEWATCH) && (*vprot & VPROT_WRITEWATCH))
|
||||
@@ -1573,6 +1593,7 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err, BOOL on_signal_stack )
|
||||
/* ignore fault if page is writable now */
|
||||
if (VIRTUAL_GetUnixProt( *vprot ) & PROT_WRITE) ret = STATUS_SUCCESS;
|
||||
}
|
||||
+#endif
|
||||
if (!on_signal_stack && (*vprot & VPROT_GUARD))
|
||||
{
|
||||
VIRTUAL_SetProt( view, page, page_size, *vprot & ~VPROT_GUARD );
|
||||
--
|
||||
2.2.2
|
||||
|
@@ -0,0 +1,25 @@
|
||||
From 67cc0e23b26d5d9abda7eb771dc2bec309cb8650 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 23 Nov 2014 22:33:51 +0100
|
||||
Subject: server: Don't attempt to use ptrace when running with Exagear.
|
||||
|
||||
---
|
||||
server/ptrace.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/server/ptrace.c b/server/ptrace.c
|
||||
index cb436b6..fb29b5a 100644
|
||||
--- a/server/ptrace.c
|
||||
+++ b/server/ptrace.c
|
||||
@@ -531,7 +531,7 @@ void get_selector_entry( struct thread *thread, int entry, unsigned int *base,
|
||||
|
||||
|
||||
#if defined(linux) && (defined(HAVE_SYS_USER_H) || defined(HAVE_ASM_USER_H)) \
|
||||
- && (defined(__i386__) || defined(__x86_64__))
|
||||
+ && (defined(__i386__) || defined(__x86_64__)) && !defined(EXAGEAR_COMPAT)
|
||||
|
||||
#ifdef HAVE_SYS_USER_H
|
||||
#include <sys/user.h>
|
||||
--
|
||||
2.1.3
|
||||
|
1
patches/Exagear/definition
Normal file
1
patches/Exagear/definition
Normal file
@@ -0,0 +1 @@
|
||||
Depends: ntdll-WRITECOPY
|
21
patches/Makefile
Normal file
21
patches/Makefile
Normal file
@@ -0,0 +1,21 @@
|
||||
#
|
||||
# This file is deprecated and will be deleted in the future.
|
||||
# Please use patchinstall.sh instead, to apply the Wine Staging patches.
|
||||
#
|
||||
|
||||
CURDIR ?= ${.CURDIR}
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
@echo "WARNING: Using this Makefile is deprecated!" >&2
|
||||
"$(CURDIR)/patchinstall.sh" DESTDIR="$(DESTDIR)" --all
|
||||
|
||||
.PHONY: install-git
|
||||
install-git:
|
||||
@echo "WARNING: Using this Makefile is deprecated!" >&2
|
||||
"$(CURDIR)/patchinstall.sh" DESTDIR="$(DESTDIR)" --all --backend=git-am
|
||||
|
||||
.PHONY: series
|
||||
series:
|
||||
@echo "ERROR: Using this Makefile is deprecated!" >&2
|
||||
@false
|
@@ -0,0 +1,41 @@
|
||||
From 32ae090ad4a99862a420cfe44847d8e2905cdde7 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 21 Dec 2013 23:57:02 +0100
|
||||
Subject: winex11: Implement X11DRV_FLUSH_GDI_DISPLAY ExtEscape command
|
||||
|
||||
---
|
||||
dlls/winex11.drv/init.c | 3 +++
|
||||
dlls/winex11.drv/x11drv.h | 3 ++-
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/winex11.drv/init.c b/dlls/winex11.drv/init.c
|
||||
index 5a7d316..68d3f96 100644
|
||||
--- a/dlls/winex11.drv/init.c
|
||||
+++ b/dlls/winex11.drv/init.c
|
||||
@@ -440,6 +440,9 @@ static INT X11DRV_ExtEscape( PHYSDEV dev, INT escape, INT in_count, LPCVOID in_d
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
+ case X11DRV_FLUSH_GDI_DISPLAY:
|
||||
+ XFlush( gdi_display );
|
||||
+ return TRUE;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
|
||||
index 9008db6..85dd2a5 100644
|
||||
--- a/dlls/winex11.drv/x11drv.h
|
||||
+++ b/dlls/winex11.drv/x11drv.h
|
||||
@@ -277,7 +277,8 @@ enum x11drv_escape_codes
|
||||
X11DRV_GET_DRAWABLE, /* get current drawable for a DC */
|
||||
X11DRV_START_EXPOSURES, /* start graphics exposures */
|
||||
X11DRV_END_EXPOSURES, /* end graphics exposures */
|
||||
- X11DRV_FLUSH_GL_DRAWABLE /* flush changes made to the gl drawable */
|
||||
+ X11DRV_FLUSH_GL_DRAWABLE, /* flush changes made to the gl drawable */
|
||||
+ X11DRV_FLUSH_GDI_DISPLAY /* flush the gdi display */
|
||||
};
|
||||
|
||||
struct x11drv_escape_set_drawable
|
||||
--
|
||||
1.7.9.5
|
||||
|
@@ -0,0 +1,46 @@
|
||||
From 08d8e1c398ed6f3e237ad9fd3d29e10d09dcff3d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 2 May 2014 20:46:19 +0200
|
||||
Subject: user32: Decrease minimum SetTimer interval to 5 ms. (try 2)
|
||||
|
||||
---
|
||||
dlls/user32/message.c | 2 +-
|
||||
dlls/user32/tests/msg.c | 2 ++
|
||||
2 files changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/user32/message.c b/dlls/user32/message.c
|
||||
index d122980..aec0938 100644
|
||||
--- a/dlls/user32/message.c
|
||||
+++ b/dlls/user32/message.c
|
||||
@@ -4443,7 +4443,7 @@ UINT_PTR WINAPI SetTimer( HWND hwnd, UINT_PTR id, UINT timeout, TIMERPROC proc )
|
||||
|
||||
if (proc) winproc = WINPROC_AllocProc( (WNDPROC)proc, FALSE );
|
||||
|
||||
- timeout = min( max( USER_TIMER_MINIMUM, timeout ), USER_TIMER_MAXIMUM );
|
||||
+ timeout = min( max( 5, timeout ), USER_TIMER_MAXIMUM );
|
||||
|
||||
SERVER_START_REQ( set_win_timer )
|
||||
{
|
||||
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
|
||||
index d92fbc7..dbaddb7 100644
|
||||
--- a/dlls/user32/tests/msg.c
|
||||
+++ b/dlls/user32/tests/msg.c
|
||||
@@ -8521,6 +8521,7 @@ static void test_timers(void)
|
||||
start = GetTickCount();
|
||||
while (GetTickCount()-start < 1001 && GetMessageA(&msg, info.hWnd, 0, 0))
|
||||
DispatchMessageA(&msg);
|
||||
+todo_wine
|
||||
ok(abs(count-TIMER_COUNT_EXPECTED) < TIMER_COUNT_TOLERANCE /* xp */
|
||||
|| broken(abs(count-64) < TIMER_COUNT_TOLERANCE) /* most common */
|
||||
|| broken(abs(count-43) < TIMER_COUNT_TOLERANCE) /* w2k3, win8 */,
|
||||
@@ -8589,6 +8590,7 @@ static void test_timers_no_wnd(void)
|
||||
start = GetTickCount();
|
||||
while (GetTickCount()-start < 1001 && GetMessageA(&msg, NULL, 0, 0))
|
||||
DispatchMessageA(&msg);
|
||||
+todo_wine
|
||||
ok(abs(count-TIMER_COUNT_EXPECTED) < TIMER_COUNT_TOLERANCE /* xp */
|
||||
|| broken(abs(count-64) < TIMER_COUNT_TOLERANCE) /* most common */,
|
||||
"did not get expected count for minimum timeout (%d != ~%d).\n",
|
||||
--
|
||||
2.5.1
|
||||
|
@@ -0,0 +1,42 @@
|
||||
From 8794d625750d35293adecbedc32cc02257817b05 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 20 Jul 2014 22:22:14 +0200
|
||||
Subject: wined3d: allow changing strict drawing through an exported function
|
||||
|
||||
---
|
||||
dlls/wined3d/wined3d.spec | 2 ++
|
||||
dlls/wined3d/wined3d_main.c | 5 +++++
|
||||
2 files changed, 7 insertions(+)
|
||||
|
||||
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
|
||||
index 7a77003..5519a48 100644
|
||||
--- a/dlls/wined3d/wined3d.spec
|
||||
+++ b/dlls/wined3d/wined3d.spec
|
||||
@@ -219,6 +219,8 @@
|
||||
@ cdecl wined3d_stateblock_decref(ptr)
|
||||
@ cdecl wined3d_stateblock_incref(ptr)
|
||||
|
||||
+@ cdecl wined3d_strictdrawing_set(long)
|
||||
+
|
||||
@ cdecl wined3d_surface_blt(ptr ptr ptr ptr long ptr long)
|
||||
@ cdecl wined3d_surface_decref(ptr)
|
||||
@ cdecl wined3d_surface_from_resource(ptr)
|
||||
diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c
|
||||
index 758ba43..7ccd3a1 100644
|
||||
--- a/dlls/wined3d/wined3d_main.c
|
||||
+++ b/dlls/wined3d/wined3d_main.c
|
||||
@@ -505,6 +505,11 @@ void wined3d_unregister_window(HWND window)
|
||||
wined3d_wndproc_mutex_unlock();
|
||||
}
|
||||
|
||||
+void CDECL wined3d_strictdrawing_set(int value)
|
||||
+{
|
||||
+ wined3d_settings.strict_draw_ordering = value;
|
||||
+}
|
||||
+
|
||||
/* At process attach */
|
||||
BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, void *reserved)
|
||||
{
|
||||
--
|
||||
2.1.3
|
||||
|
@@ -0,0 +1,48 @@
|
||||
From 7d77edaea3c4ba8067e4b73034df5c58940daebc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 1 Jun 2014 22:51:32 +0200
|
||||
Subject: winex11.drv: Indicate direct rendering through OpenGL extension
|
||||
|
||||
---
|
||||
dlls/winex11.drv/opengl.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c
|
||||
index 71af3db..966d32d 100644
|
||||
--- a/dlls/winex11.drv/opengl.c
|
||||
+++ b/dlls/winex11.drv/opengl.c
|
||||
@@ -440,6 +440,7 @@ static int GLXErrorHandler(Display *dpy, XErrorEvent *event, void *arg)
|
||||
static BOOL X11DRV_WineGL_InitOpenglInfo(void)
|
||||
{
|
||||
static const char legacy_extensions[] = " WGL_EXT_extensions_string WGL_EXT_swap_control";
|
||||
+ static const char direct_extension[] = " WINE_EXT_direct_rendering";
|
||||
|
||||
int screen = DefaultScreen(gdi_display);
|
||||
Window win = 0, root = 0;
|
||||
@@ -491,10 +492,13 @@ static BOOL X11DRV_WineGL_InitOpenglInfo(void)
|
||||
}
|
||||
gl_renderer = (const char *)opengl_funcs.gl.p_glGetString(GL_RENDERER);
|
||||
WineGLInfo.glVersion = (const char *) opengl_funcs.gl.p_glGetString(GL_VERSION);
|
||||
+ WineGLInfo.glxDirect = pglXIsDirect(gdi_display, ctx);
|
||||
str = (const char *) opengl_funcs.gl.p_glGetString(GL_EXTENSIONS);
|
||||
- WineGLInfo.glExtensions = HeapAlloc(GetProcessHeap(), 0, strlen(str)+sizeof(legacy_extensions));
|
||||
+ WineGLInfo.glExtensions = HeapAlloc(GetProcessHeap(), 0, strlen(str)+sizeof(legacy_extensions)+sizeof(direct_extension));
|
||||
strcpy(WineGLInfo.glExtensions, str);
|
||||
strcat(WineGLInfo.glExtensions, legacy_extensions);
|
||||
+ if (WineGLInfo.glxDirect)
|
||||
+ strcat(WineGLInfo.glExtensions, direct_extension);
|
||||
|
||||
/* Get the common GLX version supported by GLX client and server ( major/minor) */
|
||||
pglXQueryVersion(gdi_display, &WineGLInfo.glxVersion[0], &WineGLInfo.glxVersion[1]);
|
||||
@@ -508,7 +512,7 @@ static BOOL X11DRV_WineGL_InitOpenglInfo(void)
|
||||
WineGLInfo.glxClientExtensions = pglXGetClientString(gdi_display, GLX_EXTENSIONS);
|
||||
|
||||
WineGLInfo.glxExtensions = pglXQueryExtensionsString(gdi_display, screen);
|
||||
- WineGLInfo.glxDirect = pglXIsDirect(gdi_display, ctx);
|
||||
+
|
||||
|
||||
TRACE("GL version : %s.\n", WineGLInfo.glVersion);
|
||||
TRACE("GL renderer : %s.\n", gl_renderer);
|
||||
--
|
||||
1.7.9.5
|
||||
|
2
patches/Pipelight/definition
Normal file
2
patches/Pipelight/definition
Normal file
@@ -0,0 +1,2 @@
|
||||
Fixes: Reduced SetTimer minimum value from 10 ms to 5 ms (improves Silverlight framerates)
|
||||
Fixes: Other Pipelight-specific enhancements
|
@@ -0,0 +1,40 @@
|
||||
From a41dac0b19ec2ba3807da4ac42d77717d79f1115 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Thu, 2 Oct 2014 19:44:31 +0200
|
||||
Subject: kernel32: Add winediag message to show warning, that this isn't
|
||||
vanilla wine.
|
||||
|
||||
---
|
||||
dlls/kernel32/process.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
|
||||
index b0c06e3..a2c1d4c 100644
|
||||
--- a/dlls/kernel32/process.c
|
||||
+++ b/dlls/kernel32/process.c
|
||||
@@ -65,6 +65,7 @@
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(process);
|
||||
WINE_DECLARE_DEBUG_CHANNEL(file);
|
||||
WINE_DECLARE_DEBUG_CHANNEL(relay);
|
||||
+WINE_DECLARE_DEBUG_CHANNEL(winediag);
|
||||
|
||||
#ifdef __APPLE__
|
||||
extern char **__wine_get_main_environment(void);
|
||||
@@ -1099,6 +1100,14 @@ static DWORD WINAPI start_process( PEB *peb )
|
||||
DPRINTF( "%04x:Starting process %s (entryproc=%p)\n", GetCurrentThreadId(),
|
||||
debugstr_w(peb->ProcessParameters->ImagePathName.Buffer), entry );
|
||||
|
||||
+ if (CreateEventA(0, 0, 0, "__winestaging_warn_event") && GetLastError() != ERROR_ALREADY_EXISTS)
|
||||
+ {
|
||||
+ FIXME_(winediag)("Wine Staging %s is a testing version containing experimental patches.\n", wine_get_version());
|
||||
+ FIXME_(winediag)("Please mention your exact version when filing bug reports on winehq.org.\n");
|
||||
+ }
|
||||
+ else
|
||||
+ WARN_(winediag)("Wine Staging %s is a testing version containing experimental patches.\n", wine_get_version());
|
||||
+
|
||||
SetLastError( 0 ); /* clear error code */
|
||||
if (peb->BeingDebugged) DbgBreakPoint();
|
||||
return call_process_entry( peb, entry );
|
||||
--
|
||||
2.5.1
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user