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
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
c094720578 | ||
|
2e17709095 | ||
|
dea2594156 | ||
|
af4ac5433d | ||
|
ce6a5b015d | ||
|
07a42a496d | ||
|
78db8b7950 | ||
|
78ed3fc7e9 | ||
|
a605ae9359 | ||
|
ebf9db37d5 | ||
|
2d713a931d | ||
|
9dcb352d8d | ||
|
3d3effd8b3 |
11
README.md
11
README.md
@@ -34,7 +34,7 @@ Wine. All those differences are also documented on the
|
||||
Included bug fixes and improvements
|
||||
-----------------------------------
|
||||
|
||||
**Bug fixes and features in Wine Staging 1.8-rc2 [270]:**
|
||||
**Bug fixes and features in Wine Staging 1.8-rc3 [269]:**
|
||||
|
||||
*Note: The following list only contains features and bug fixes which are not
|
||||
yet available in vanilla Wine. They are removed from the list as soon as they
|
||||
@@ -52,9 +52,7 @@ for more details.*
|
||||
* Add implementation for mfplat.MFTRegister ([Wine Bug #37811](https://bugs.winehq.org/show_bug.cgi?id=37811))
|
||||
* Add implementation for msidb commandline tool
|
||||
* Add implementation for shlwapi.AssocGetPerceivedType
|
||||
* Add information for delayed end of DST in Europe/Istanbul
|
||||
* Add nvapi stubs required for GPU PhysX support
|
||||
* Add partial implementation of ITfThreadMgrEx_ActivateEx ([Wine Bug #39564](https://bugs.winehq.org/show_bug.cgi?id=39564))
|
||||
* Add performance library registry keys needed by MS SQL Server Management Studio Express 2008 R2 ([Wine Bug #33661](https://bugs.winehq.org/show_bug.cgi?id=33661))
|
||||
* Add semi-stub for FileFsVolumeInformation information class ([Wine Bug #21466](https://bugs.winehq.org/show_bug.cgi?id=21466))
|
||||
* Add shell32 placeholder icons to match offsets with Windows ([Wine Bug #30185](https://bugs.winehq.org/show_bug.cgi?id=30185))
|
||||
@@ -134,7 +132,6 @@ for more details.*
|
||||
* Fake success in kernel32.SetFileCompletionNotificationModes ([Wine Bug #38960](https://bugs.winehq.org/show_bug.cgi?id=38960))
|
||||
* Fallback to default comspec when %COMSPEC% is not set
|
||||
* Fallback to system ping command when CAP_NET_RAW is not available ([Wine Bug #8332](https://bugs.winehq.org/show_bug.cgi?id=8332))
|
||||
* Fix access violation in MSYS2 git when cloning repository
|
||||
* Fix broken textures in XIII Century: Death or Glory ([Wine Bug #25419](https://bugs.winehq.org/show_bug.cgi?id=25419))
|
||||
* Fix calculation of listbox size when horizontal scrollbar is present ([Wine Bug #38142](https://bugs.winehq.org/show_bug.cgi?id=38142))
|
||||
* Fix caps lock state issues with multiple processes ([Wine Bug #35907](https://bugs.winehq.org/show_bug.cgi?id=35907))
|
||||
@@ -153,10 +150,12 @@ for more details.*
|
||||
* Fix handling of empty section and key name for profile files. ([Wine Bug #8036](https://bugs.winehq.org/show_bug.cgi?id=8036))
|
||||
* Fix handling of invert_y in DrawTextExW ([Wine Bug #22109](https://bugs.winehq.org/show_bug.cgi?id=22109))
|
||||
* Fix handling of window attributes for WS_EX_LAYERED | WS_EX_COMPOSITED ([Wine Bug #37876](https://bugs.winehq.org/show_bug.cgi?id=37876))
|
||||
* Fix implementation of NtQueryInformationProcess for ProcessDebugFlags
|
||||
* Fix implementation of msvcrt.close when stdout == stderr
|
||||
* Fix issue causing applications to report magic loopback address instead of real IP ([Wine Bug #37271](https://bugs.winehq.org/show_bug.cgi?id=37271))
|
||||
* Fix issues with dragging layers between images in Adobe Photoshop 7.0 ([Wine Bug #12007](https://bugs.winehq.org/show_bug.cgi?id=12007))
|
||||
* Fix multithreading issues with fullscreen clipping ([Wine Bug #38087](https://bugs.winehq.org/show_bug.cgi?id=38087))
|
||||
* Fix possible leak of explorer.exe processes and implement proper desktop refcounting
|
||||
* Fix possible segfault in pulse_rd_loop of PulseAudio backend
|
||||
* Fix race-condition when threads are killed during shutdown
|
||||
* Fix regression caused by blacklisting supported OpenGL extensions ([Wine Bug #38480](https://bugs.winehq.org/show_bug.cgi?id=38480))
|
||||
@@ -238,6 +237,7 @@ for more details.*
|
||||
* Process APC calls before starting process
|
||||
* Properly close sockets when WSACleanup is called ([Wine Bug #18670](https://bugs.winehq.org/show_bug.cgi?id=18670))
|
||||
* Properly handle multiple registry notifications per key
|
||||
* Properly implement GetLargestConsoleWindowSize ([Wine Bug #10919](https://bugs.winehq.org/show_bug.cgi?id=10919))
|
||||
* Properly implement imagehlp.ImageLoad and ImageUnload ([Wine Bug #23455](https://bugs.winehq.org/show_bug.cgi?id=23455))
|
||||
* Properly initialize caps->dwZBufferBitDepths in ddraw7_GetCaps ([Wine Bug #27002](https://bugs.winehq.org/show_bug.cgi?id=27002))
|
||||
* Properly render themed buttons when they are pressed ([Wine Bug #37584](https://bugs.winehq.org/show_bug.cgi?id=37584))
|
||||
@@ -257,13 +257,12 @@ for more details.*
|
||||
* SO_CONNECT_TIME returns the appropriate time
|
||||
* Send WM_PAINT event during dialog creation ([Wine Bug #35652](https://bugs.winehq.org/show_bug.cgi?id=35652))
|
||||
* Set EOF on file which has a memory mapping should fail
|
||||
* Set LastError to 0 in GetSidIdentifierAuthority
|
||||
* Set NamedPipeState to FILE_PIPE_CLOSING_STATE on broken pipe in NtQueryInformationFile
|
||||
* Share source of d3dx9_36 with d3dx9_33 to avoid Wine DLL forwards ([Wine Bug #21817](https://bugs.winehq.org/show_bug.cgi?id=21817))
|
||||
* Show unmounted devices in winecfg and allow changing the unix path
|
||||
* Show windows version when collecting system info in winedbg
|
||||
* Silence repeated FIXME message in surface_cpu_blt
|
||||
* Silence repeated LocaleNameToLCID/LCIDToLocaleName unsupported flags FIXMEs ([Wine Bug #30076](https://bugs.winehq.org/show_bug.cgi?id=30076))
|
||||
* Skip invalid entries in GetPrivateProfileString16 ([Wine Bug #9919](https://bugs.winehq.org/show_bug.cgi?id=9919))
|
||||
* Skip unknown item when decoding a CMS certificate ([Wine Bug #34388](https://bugs.winehq.org/show_bug.cgi?id=34388))
|
||||
* Software support for Environmental Audio Extensions (EAX)
|
||||
* Start SERVICE_FILE_SYSTEM_DRIVER services with winedevice ([Wine Bug #35824](https://bugs.winehq.org/show_bug.cgi?id=35824))
|
||||
|
@@ -0,0 +1,92 @@
|
||||
From 86fe5438cdd5e3fbd3fd29c1240b6908ad70f2bf Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 4 Dec 2015 21:06:40 +0100
|
||||
Subject: advapi32: Set LastError to 0 in GetSidIdentifierAuthority.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Michael MĂĽller <michael@fds-team.de>
|
||||
---
|
||||
dlls/advapi32/security.c | 3 ++-
|
||||
dlls/advapi32/tests/security.c | 31 +++++++++++++++++++++++++++++++
|
||||
2 files changed, 33 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
|
||||
index c64981e..08f88c0 100644
|
||||
--- a/dlls/advapi32/security.c
|
||||
+++ b/dlls/advapi32/security.c
|
||||
@@ -1167,7 +1167,8 @@ GetEffectiveRightsFromAclW( PACL pacl, PTRUSTEEW pTrustee, PACCESS_MASK pAccessR
|
||||
PSID_IDENTIFIER_AUTHORITY WINAPI
|
||||
GetSidIdentifierAuthority( PSID pSid )
|
||||
{
|
||||
- return RtlIdentifierAuthoritySid(pSid);
|
||||
+ SetLastError(ERROR_SUCCESS);
|
||||
+ return RtlIdentifierAuthoritySid(pSid);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
|
||||
index b171a81..f62601f 100644
|
||||
--- a/dlls/advapi32/tests/security.c
|
||||
+++ b/dlls/advapi32/tests/security.c
|
||||
@@ -132,6 +132,7 @@ static NTSTATUS (WINAPI *pRtlAnsiStringToUnicodeString)(PUNICODE_STRING,PCANSI_S
|
||||
static BOOL (WINAPI *pGetWindowsAccountDomainSid)(PSID,PSID,DWORD*);
|
||||
static void (WINAPI *pRtlInitAnsiString)(PANSI_STRING,PCSZ);
|
||||
static NTSTATUS (WINAPI *pRtlFreeUnicodeString)(PUNICODE_STRING);
|
||||
+static PSID_IDENTIFIER_AUTHORITY (WINAPI *pGetSidIdentifierAuthority)(PSID);
|
||||
|
||||
static HMODULE hmod;
|
||||
static int myARGC;
|
||||
@@ -196,6 +197,7 @@ static void init(void)
|
||||
pGetAclInformation = (void *)GetProcAddress(hmod, "GetAclInformation");
|
||||
pGetAce = (void *)GetProcAddress(hmod, "GetAce");
|
||||
pGetWindowsAccountDomainSid = (void *)GetProcAddress(hmod, "GetWindowsAccountDomainSid");
|
||||
+ pGetSidIdentifierAuthority = (void *)GetProcAddress(hmod, "GetSidIdentifierAuthority");
|
||||
|
||||
myARGC = winetest_get_mainargs( &myARGV );
|
||||
}
|
||||
@@ -6040,6 +6042,34 @@ static void test_GetWindowsAccountDomainSid(void)
|
||||
HeapFree(GetProcessHeap(), 0, user);
|
||||
}
|
||||
|
||||
+static void test_GetSidIdentifierAuthority(void)
|
||||
+{
|
||||
+ char buffer[SECURITY_MAX_SID_SIZE];
|
||||
+ PSID authority_sid = (PSID *)&buffer;
|
||||
+ PSID_IDENTIFIER_AUTHORITY id;
|
||||
+ BOOL ret;
|
||||
+
|
||||
+ if (!pGetSidIdentifierAuthority)
|
||||
+ {
|
||||
+ win_skip("GetSidIdentifierAuthority not available\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ memset(buffer, 0xcc, sizeof(buffer));
|
||||
+ ret = IsValidSid(authority_sid);
|
||||
+ ok(!ret, "expected FALSE, got %u\n", ret);
|
||||
+
|
||||
+ SetLastError(0xdeadbeef);
|
||||
+ id = GetSidIdentifierAuthority(authority_sid);
|
||||
+ ok(id != NULL, "got NULL pointer as identifier authority\n");
|
||||
+ ok(GetLastError() == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", GetLastError());
|
||||
+
|
||||
+ SetLastError(0xdeadbeef);
|
||||
+ id = GetSidIdentifierAuthority(NULL);
|
||||
+ ok(id != NULL, "got NULL pointer as identifier authority\n");
|
||||
+ ok(GetLastError() == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", GetLastError());
|
||||
+}
|
||||
+
|
||||
START_TEST(security)
|
||||
{
|
||||
init();
|
||||
@@ -6084,4 +6114,5 @@ START_TEST(security)
|
||||
test_AdjustTokenPrivileges();
|
||||
test_AddAce();
|
||||
test_system_security_access();
|
||||
+ test_GetSidIdentifierAuthority();
|
||||
}
|
||||
--
|
||||
2.6.2
|
||||
|
1
patches/advapi32-GetSidIdentifierAuthority/definition
Normal file
1
patches/advapi32-GetSidIdentifierAuthority/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: Set LastError to 0 in GetSidIdentifierAuthority
|
@@ -1,4 +1,4 @@
|
||||
From 5bd9830f145a29823b4a44b079c70171e55fb5db Mon Sep 17 00:00:00 2001
|
||||
From 1b05fa6764dc8eb220ef9dd349801fa2e76914bd Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 17 Oct 2015 15:38:13 +0200
|
||||
Subject: comctl32/tests: Add tests for PROPSHEET_InsertPage.
|
||||
@@ -8,7 +8,7 @@ Subject: comctl32/tests: Add tests for PROPSHEET_InsertPage.
|
||||
1 file changed, 96 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/comctl32/tests/propsheet.c b/dlls/comctl32/tests/propsheet.c
|
||||
index 6594298..cdbbca8 100644
|
||||
index 6594298..8fdbae8 100644
|
||||
--- a/dlls/comctl32/tests/propsheet.c
|
||||
+++ b/dlls/comctl32/tests/propsheet.c
|
||||
@@ -806,7 +806,7 @@ static void test_PSM_ADDPAGE(void)
|
||||
@@ -78,7 +78,7 @@ index 6594298..cdbbca8 100644
|
||||
+ ret = SendMessageA(hdlg, PSM_INSERTPAGE, 0, (LPARAM)INVALID_HANDLE_VALUE);
|
||||
+}
|
||||
+
|
||||
+ ret = SendMessageA(hdlg, PSM_INSERTPAGE, (LPARAM)INVALID_HANDLE_VALUE, (LPARAM)hpsp[2]);
|
||||
+ ret = SendMessageA(hdlg, PSM_INSERTPAGE, (WPARAM)INVALID_HANDLE_VALUE, (LPARAM)hpsp[2]);
|
||||
+ ok(ret == FALSE, "got %d\n", ret);
|
||||
+
|
||||
+ /* check item count */
|
||||
@@ -128,5 +128,5 @@ index 6594298..cdbbca8 100644
|
||||
+ test_PSM_INSERTPAGE();
|
||||
}
|
||||
--
|
||||
2.6.1
|
||||
2.6.2
|
||||
|
||||
|
@@ -0,0 +1,117 @@
|
||||
From f28e6a98185ce7dd1137f2f04861c097e75e72a9 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Fri, 4 Dec 2015 09:22:35 +1100
|
||||
Subject: d3dx9_36: Support NULL terminated strings in ID3DXFont_DrawText
|
||||
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
dlls/d3dx9_36/font.c | 10 ++++++++--
|
||||
dlls/d3dx9_36/tests/core.c | 46 +++++++++++++++++++++++++++++++++++++++++++++-
|
||||
2 files changed, 53 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3dx9_36/font.c b/dlls/d3dx9_36/font.c
|
||||
index d6dcd6c..63aa828 100644
|
||||
--- a/dlls/d3dx9_36/font.c
|
||||
+++ b/dlls/d3dx9_36/font.c
|
||||
@@ -214,9 +214,12 @@ static INT WINAPI ID3DXFontImpl_DrawTextA(ID3DXFont *iface, ID3DXSprite *sprite,
|
||||
TRACE("iface %p, sprite %p, string %s, count %d, rect %s, format %#x, color 0x%08x\n",
|
||||
iface, sprite, debugstr_a(string), count, wine_dbgstr_rect(rect), format, color);
|
||||
|
||||
- if (!string || count <= 0)
|
||||
+ if (!string || count == 0)
|
||||
return 0;
|
||||
|
||||
+ if (count < 0)
|
||||
+ count = -1;
|
||||
+
|
||||
countW = MultiByteToWideChar(CP_ACP, 0, string, count, NULL, 0);
|
||||
stringW = HeapAlloc(GetProcessHeap(), 0, countW * sizeof(WCHAR));
|
||||
if (stringW)
|
||||
@@ -239,9 +242,12 @@ static INT WINAPI ID3DXFontImpl_DrawTextW(ID3DXFont *iface, ID3DXSprite *sprite,
|
||||
TRACE("iface %p, sprite %p, string %s, count %d, rect %s, format %#x, color 0x%08x\n",
|
||||
iface, sprite, debugstr_w(string), count, wine_dbgstr_rect(rect), format, color);
|
||||
|
||||
- if (!string || count <= 0)
|
||||
+ if (!string || count == 0)
|
||||
return 0;
|
||||
|
||||
+ if (count < 0)
|
||||
+ count = lstrlenW(string);
|
||||
+
|
||||
/* Strip terminating NULL characters */
|
||||
while (count > 0 && !string[count-1])
|
||||
count--;
|
||||
diff --git a/dlls/d3dx9_36/tests/core.c b/dlls/d3dx9_36/tests/core.c
|
||||
index 1c379fb..c931260 100644
|
||||
--- a/dlls/d3dx9_36/tests/core.c
|
||||
+++ b/dlls/d3dx9_36/tests/core.c
|
||||
@@ -321,6 +321,8 @@ static void test_ID3DXFont(IDirect3DDevice9 *device)
|
||||
{ 12, 256, 5 },
|
||||
{ 72, 256, 8 }
|
||||
};
|
||||
+ static const WCHAR testW[] = {'t','e','s','t',0};
|
||||
+ static const char testA[] = "test";
|
||||
|
||||
|
||||
/* D3DXCreateFont */
|
||||
@@ -463,7 +465,6 @@ static void test_ID3DXFont(IDirect3DDevice9 *device)
|
||||
/* ID3DXFont_PreloadText */
|
||||
hr = D3DXCreateFontA(device, 12, 0, FW_DONTCARE, 0, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, "Arial", &font);
|
||||
if(SUCCEEDED(hr)) {
|
||||
- const WCHAR testW[] = {'t','e','s','t',0};
|
||||
|
||||
todo_wine {
|
||||
hr = ID3DXFont_PreloadTextA(font, NULL, -1);
|
||||
@@ -591,6 +592,49 @@ static void test_ID3DXFont(IDirect3DDevice9 *device)
|
||||
}
|
||||
ID3DXFont_Release(font);
|
||||
}
|
||||
+
|
||||
+ /* ID3DXFont_DrawTextA, ID3DXFont_DrawTextW */
|
||||
+ hr = D3DXCreateFontA(device, 12, 0, FW_DONTCARE, 0, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, "Arial", &font);
|
||||
+ if (SUCCEEDED(hr)) {
|
||||
+ RECT rect;
|
||||
+ int height;
|
||||
+
|
||||
+ SetRect(&rect, 10, 10, 200, 200);
|
||||
+
|
||||
+ height = ID3DXFont_DrawTextA(font, NULL, testA, -2, &rect, 0, 0xFF00FF);
|
||||
+ ok(height == 12, "DrawTextA returned %d, expected 12.\n", height);
|
||||
+
|
||||
+ height = ID3DXFont_DrawTextA(font, NULL, testA, -1, &rect, 0, 0xFF00FF);
|
||||
+ ok(height == 12, "DrawTextA returned %d, expected 12.\n", height);
|
||||
+
|
||||
+ height = ID3DXFont_DrawTextA(font, NULL, testA, 0, &rect, 0, 0xFF00FF);
|
||||
+ ok(height == 0, "DrawTextA returned %d, expected 0.\n", height);
|
||||
+
|
||||
+ height = ID3DXFont_DrawTextA(font, NULL, testA, 1, &rect, 0, 0xFF00FF);
|
||||
+ ok(height == 12, "DrawTextA returned %d, expected 12.\n", height);
|
||||
+
|
||||
+ height = ID3DXFont_DrawTextA(font, NULL, testA, 2, &rect, 0, 0xFF00FF);
|
||||
+ ok(height == 12, "DrawTextA returned %d, expected 12.\n", height);
|
||||
+
|
||||
+if (0) { /* Causes a lockup on windows 7. */
|
||||
+ height = ID3DXFont_DrawTextW(font, NULL, testW, -2, &rect, 0, 0xFF00FF);
|
||||
+ ok(height == 12, "DrawTextW returned %d, expected 12.\n", height);
|
||||
+}
|
||||
+
|
||||
+ height = ID3DXFont_DrawTextW(font, NULL, testW, -1, &rect, 0, 0xFF00FF);
|
||||
+ ok(height == 12, "DrawTextW returned %d, expected 12.\n", height);
|
||||
+
|
||||
+ height = ID3DXFont_DrawTextW(font, NULL, testW, 0, &rect, 0, 0xFF00FF);
|
||||
+ ok(height == 0, "DrawTextW returned %d, expected 0.\n", height);
|
||||
+
|
||||
+ height = ID3DXFont_DrawTextW(font, NULL, testW, 1, &rect, 0, 0xFF00FF);
|
||||
+ ok(height == 12, "DrawTextW returned %d, expected 12.\n", height);
|
||||
+
|
||||
+ height = ID3DXFont_DrawTextW(font, NULL, testW, 2, &rect, 0, 0xFF00FF);
|
||||
+ ok(height == 12, "DrawTextW returned %d, expected 12.\n", height);
|
||||
+
|
||||
+ ID3DXFont_Release(font);
|
||||
+ }
|
||||
}
|
||||
|
||||
static void test_D3DXCreateRenderToSurface(IDirect3DDevice9 *device)
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -0,0 +1,80 @@
|
||||
From 5b46372b7cc36f07d61bce63d5e3ae8aa766aa5a Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Sat, 5 Dec 2015 15:31:06 +1100
|
||||
Subject: d3dx9_36: ID3DXFont_DrawText calc_rect can be null
|
||||
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
dlls/d3dx9_36/font.c | 8 ++++++--
|
||||
dlls/d3dx9_36/tests/core.c | 18 ++++++++++++++++++
|
||||
2 files changed, 24 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3dx9_36/font.c b/dlls/d3dx9_36/font.c
|
||||
index 63aa828..2262db9 100644
|
||||
--- a/dlls/d3dx9_36/font.c
|
||||
+++ b/dlls/d3dx9_36/font.c
|
||||
@@ -236,7 +236,7 @@ static INT WINAPI ID3DXFontImpl_DrawTextW(ID3DXFont *iface, ID3DXSprite *sprite,
|
||||
const WCHAR *string, INT count, RECT *rect, DWORD format, D3DCOLOR color)
|
||||
{
|
||||
struct d3dx_font *This = impl_from_ID3DXFont(iface);
|
||||
- RECT calc_rect = *rect;
|
||||
+ RECT calc_rect;
|
||||
INT height;
|
||||
|
||||
TRACE("iface %p, sprite %p, string %s, count %d, rect %s, format %#x, color 0x%08x\n",
|
||||
@@ -252,11 +252,15 @@ static INT WINAPI ID3DXFontImpl_DrawTextW(ID3DXFont *iface, ID3DXSprite *sprite,
|
||||
while (count > 0 && !string[count-1])
|
||||
count--;
|
||||
|
||||
+ if (rect)
|
||||
+ calc_rect = *rect;
|
||||
+
|
||||
height = DrawTextW(This->hdc, string, count, &calc_rect, format | DT_CALCRECT);
|
||||
|
||||
if (format & DT_CALCRECT)
|
||||
{
|
||||
- *rect = calc_rect;
|
||||
+ if (rect)
|
||||
+ *rect = calc_rect;
|
||||
return height;
|
||||
}
|
||||
|
||||
diff --git a/dlls/d3dx9_36/tests/core.c b/dlls/d3dx9_36/tests/core.c
|
||||
index c931260..1cf0db6 100644
|
||||
--- a/dlls/d3dx9_36/tests/core.c
|
||||
+++ b/dlls/d3dx9_36/tests/core.c
|
||||
@@ -616,6 +616,15 @@ static void test_ID3DXFont(IDirect3DDevice9 *device)
|
||||
height = ID3DXFont_DrawTextA(font, NULL, testA, 2, &rect, 0, 0xFF00FF);
|
||||
ok(height == 12, "DrawTextA returned %d, expected 12.\n", height);
|
||||
|
||||
+ height = ID3DXFont_DrawTextA(font, NULL, testA, -1, NULL, 0, 0xFF00FF);
|
||||
+ ok(height == 12, "DrawTextA returned %d, expected 12.\n", height);
|
||||
+
|
||||
+ height = ID3DXFont_DrawTextA(font, NULL, testA, -1, NULL, DT_CALCRECT, 0xFF00FF);
|
||||
+ ok(height == 12, "DrawTextA returned %d, expected 12.\n", height);
|
||||
+
|
||||
+ height = ID3DXFont_DrawTextA(font, NULL, NULL, -1, NULL, 0, 0xFF00FF);
|
||||
+ ok(height == 0, "DrawTextA returned %d, expected 0.\n", height);
|
||||
+
|
||||
if (0) { /* Causes a lockup on windows 7. */
|
||||
height = ID3DXFont_DrawTextW(font, NULL, testW, -2, &rect, 0, 0xFF00FF);
|
||||
ok(height == 12, "DrawTextW returned %d, expected 12.\n", height);
|
||||
@@ -633,6 +642,15 @@ if (0) { /* Causes a lockup on windows 7. */
|
||||
height = ID3DXFont_DrawTextW(font, NULL, testW, 2, &rect, 0, 0xFF00FF);
|
||||
ok(height == 12, "DrawTextW returned %d, expected 12.\n", height);
|
||||
|
||||
+ height = ID3DXFont_DrawTextW(font, NULL, testW, -1, NULL, 0, 0xFF00FF);
|
||||
+ ok(height == 12, "DrawTextA returned %d, expected 12.\n", height);
|
||||
+
|
||||
+ height = ID3DXFont_DrawTextW(font, NULL, testW, -1, NULL, DT_CALCRECT, 0xFF00FF);
|
||||
+ ok(height == 12, "DrawTextA returned %d, expected 12.\n", height);
|
||||
+
|
||||
+ height = ID3DXFont_DrawTextW(font, NULL, NULL, -1, NULL, 0, 0xFF00FF);
|
||||
+ ok(height == 0, "DrawTextA returned %d, expected 0.\n", height);
|
||||
+
|
||||
ID3DXFont_Release(font);
|
||||
}
|
||||
}
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -0,0 +1,54 @@
|
||||
From 621d31b627bd14ab424e20f76c9dc2d786e5ec9e Mon Sep 17 00:00:00 2001
|
||||
From: Hugh McMaster <hugh.mcmaster@outlook.com>
|
||||
Date: Fri, 4 Dec 2015 15:47:42 +1100
|
||||
Subject: wineconsole: Send the largest console window size information to the
|
||||
server
|
||||
|
||||
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
|
||||
---
|
||||
programs/wineconsole/wineconsole.c | 6 +++++-
|
||||
server/console.c | 7 -------
|
||||
2 files changed, 5 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/programs/wineconsole/wineconsole.c b/programs/wineconsole/wineconsole.c
|
||||
index 7a89eeb..729416f 100644
|
||||
--- a/programs/wineconsole/wineconsole.c
|
||||
+++ b/programs/wineconsole/wineconsole.c
|
||||
@@ -424,11 +424,15 @@ void WINECON_SetConfig(struct inner_data* data, const struct config_data* cf
|
||||
if (strcmpiW(data->curcfg.face_name, cfg->face_name) || data->curcfg.cell_width != cfg->cell_width ||
|
||||
data->curcfg.cell_height != cfg->cell_height || data->curcfg.font_weight != cfg->font_weight)
|
||||
{
|
||||
+ RECT r;
|
||||
data->fnSetFont(data, cfg->face_name, cfg->cell_height, cfg->font_weight);
|
||||
+ SystemParametersInfoW(SPI_GETWORKAREA, 0, &r, 0);
|
||||
SERVER_START_REQ(set_console_output_info)
|
||||
{
|
||||
req->handle = wine_server_obj_handle( data->hConOut );
|
||||
- req->mask = SET_CONSOLE_OUTPUT_INFO_FONT;
|
||||
+ req->mask = SET_CONSOLE_OUTPUT_INFO_MAX_SIZE | SET_CONSOLE_OUTPUT_INFO_FONT;
|
||||
+ req->max_width = (r.right - r.left) / cfg->cell_width;
|
||||
+ req->max_height = (r.bottom - r.top - GetSystemMetrics(SM_CYCAPTION)) / cfg->cell_height;
|
||||
req->font_width = cfg->cell_width;
|
||||
req->font_height = cfg->cell_height;
|
||||
wine_server_call( req );
|
||||
diff --git a/server/console.c b/server/console.c
|
||||
index a57b2fe..9b01614 100644
|
||||
--- a/server/console.c
|
||||
+++ b/server/console.c
|
||||
@@ -1018,13 +1018,6 @@ static int set_console_output_info( struct screen_buffer *screen_buffer,
|
||||
}
|
||||
if (req->mask & SET_CONSOLE_OUTPUT_INFO_MAX_SIZE)
|
||||
{
|
||||
- /* can only be done by renderer */
|
||||
- if (current->process->console != screen_buffer->input)
|
||||
- {
|
||||
- set_error( STATUS_INVALID_PARAMETER );
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
screen_buffer->max_width = req->max_width;
|
||||
screen_buffer->max_height = req->max_height;
|
||||
}
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -0,0 +1,65 @@
|
||||
From 56d5cc64d9047dc5f9866ff2542eb0f07f9ad75d Mon Sep 17 00:00:00 2001
|
||||
From: Hugh McMaster <hugh.mcmaster@outlook.com>
|
||||
Date: Fri, 4 Dec 2015 15:48:12 +1100
|
||||
Subject: kernel32: Implement GetLargestConsoleWindowSize
|
||||
|
||||
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
|
||||
---
|
||||
dlls/kernel32/console.c | 24 +++++++++++++++++++-----
|
||||
1 file changed, 19 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/console.c b/dlls/kernel32/console.c
|
||||
index 51d6e60..f48bca7 100644
|
||||
--- a/dlls/kernel32/console.c
|
||||
+++ b/dlls/kernel32/console.c
|
||||
@@ -1360,6 +1360,22 @@ DWORD WINAPI GetConsoleTitleW(LPWSTR title, DWORD size)
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static COORD get_largest_console_window_size(HANDLE hConsole)
|
||||
+{
|
||||
+ COORD c = {0,0};
|
||||
+
|
||||
+ SERVER_START_REQ(get_console_output_info)
|
||||
+ {
|
||||
+ req->handle = console_handle_unmap(hConsole);
|
||||
+ if (!wine_server_call_err(req))
|
||||
+ {
|
||||
+ c.X = reply->max_width;
|
||||
+ c.Y = reply->max_height;
|
||||
+ }
|
||||
+ }
|
||||
+ SERVER_END_REQ;
|
||||
+ return c;
|
||||
+}
|
||||
|
||||
/***********************************************************************
|
||||
* GetLargestConsoleWindowSize (KERNEL32.@)
|
||||
@@ -1378,8 +1394,7 @@ DWORD WINAPI GetLargestConsoleWindowSize(HANDLE hConsoleOutput)
|
||||
COORD c;
|
||||
DWORD w;
|
||||
} x;
|
||||
- x.c.X = 80;
|
||||
- x.c.Y = 24;
|
||||
+ x.c = get_largest_console_window_size(hConsoleOutput);
|
||||
TRACE("(%p), returning %dx%d (%x)\n", hConsoleOutput, x.c.X, x.c.Y, x.w);
|
||||
return x.w;
|
||||
}
|
||||
@@ -1399,12 +1414,11 @@ DWORD WINAPI GetLargestConsoleWindowSize(HANDLE hConsoleOutput)
|
||||
COORD WINAPI GetLargestConsoleWindowSize(HANDLE hConsoleOutput)
|
||||
{
|
||||
COORD c;
|
||||
- c.X = 80;
|
||||
- c.Y = 24;
|
||||
+ c = get_largest_console_window_size(hConsoleOutput);
|
||||
TRACE("(%p), returning %dx%d\n", hConsoleOutput, c.X, c.Y);
|
||||
return c;
|
||||
}
|
||||
-#endif /* defined(__i386__) */
|
||||
+#endif /* !defined(__i386__) */
|
||||
|
||||
static WCHAR* S_EditString /* = NULL */;
|
||||
static unsigned S_EditStrPos /* = 0 */;
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -0,0 +1,44 @@
|
||||
From 0042b3a28cc7fbe462850eb600df0424a8dfb1e5 Mon Sep 17 00:00:00 2001
|
||||
From: Hugh McMaster <hugh.mcmaster@outlook.com>
|
||||
Date: Fri, 4 Dec 2015 16:00:27 +1100
|
||||
Subject: kernel32: Add a stub for SetConsoleFont
|
||||
|
||||
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
|
||||
---
|
||||
dlls/kernel32/console.c | 6 ++++++
|
||||
dlls/kernel32/kernel32.spec | 2 +-
|
||||
2 files changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/kernel32/console.c b/dlls/kernel32/console.c
|
||||
index f48bca7..3c53b52 100644
|
||||
--- a/dlls/kernel32/console.c
|
||||
+++ b/dlls/kernel32/console.c
|
||||
@@ -3256,6 +3256,12 @@ DWORD WINAPI GetNumberOfConsoleFonts(void)
|
||||
return 1;
|
||||
}
|
||||
|
||||
+BOOL WINAPI SetConsoleFont(HANDLE hConsole, DWORD index)
|
||||
+{
|
||||
+ FIXME("(%p, %u): stub!\n", hConsole, index);
|
||||
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
+ return FALSE;
|
||||
+}
|
||||
|
||||
BOOL WINAPI SetConsoleKeyShortcuts(BOOL set, BYTE keys, VOID *a, DWORD b)
|
||||
{
|
||||
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
|
||||
index ff67e54..d10e6bb 100644
|
||||
--- a/dlls/kernel32/kernel32.spec
|
||||
+++ b/dlls/kernel32/kernel32.spec
|
||||
@@ -1345,7 +1345,7 @@
|
||||
@ stub SetConsoleCursorMode
|
||||
@ stdcall SetConsoleCursorPosition(long long)
|
||||
@ stdcall SetConsoleDisplayMode(long long ptr)
|
||||
-@ stub SetConsoleFont
|
||||
+@ stdcall SetConsoleFont(long long)
|
||||
@ stub SetConsoleHardwareState
|
||||
@ stdcall SetConsoleIcon(ptr)
|
||||
@ stdcall SetConsoleInputExeNameA(ptr)
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -0,0 +1,38 @@
|
||||
From 3935a3728751863c959f1f45e8e1866ed98c3ce4 Mon Sep 17 00:00:00 2001
|
||||
From: Hugh McMaster <hugh.mcmaster@outlook.com>
|
||||
Date: Fri, 4 Dec 2015 16:02:38 +1100
|
||||
Subject: kernel32/tests: Refresh the console to clear the console font table
|
||||
|
||||
The testScreenBuffer function unintentionally causes the console
|
||||
font table to duplicate. This patch clears the font table.
|
||||
|
||||
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
|
||||
---
|
||||
dlls/kernel32/tests/console.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c
|
||||
index 240d9d8..3ba1da5 100644
|
||||
--- a/dlls/kernel32/tests/console.c
|
||||
+++ b/dlls/kernel32/tests/console.c
|
||||
@@ -2787,6 +2787,17 @@ START_TEST(console)
|
||||
testScroll(hConOut, sbi.dwSize);
|
||||
/* will test sb creation / modification / codepage handling */
|
||||
testScreenBuffer(hConOut);
|
||||
+
|
||||
+ /* clear duplicated console font table */
|
||||
+ CloseHandle(hConIn);
|
||||
+ CloseHandle(hConOut);
|
||||
+ FreeConsole();
|
||||
+ ok(AllocConsole(), "Couldn't alloc console\n");
|
||||
+ hConIn = CreateFileA("CONIN$", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0);
|
||||
+ hConOut = CreateFileA("CONOUT$", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0);
|
||||
+ ok(hConIn != INVALID_HANDLE_VALUE, "Opening ConIn\n");
|
||||
+ ok(hConOut != INVALID_HANDLE_VALUE, "Opening ConOut\n");
|
||||
+
|
||||
testCtrlHandler();
|
||||
/* still to be done: access rights & access on objects */
|
||||
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -0,0 +1,93 @@
|
||||
From cea4e680a6e23edcbbba8d0457834ee15c2f7c3a Mon Sep 17 00:00:00 2001
|
||||
From: Hugh McMaster <hugh.mcmaster@outlook.com>
|
||||
Date: Fri, 4 Dec 2015 16:07:24 +1100
|
||||
Subject: kernel32/tests: Add tests for GetLargestConsoleWindowSize
|
||||
|
||||
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com>
|
||||
---
|
||||
dlls/kernel32/tests/console.c | 64 +++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 64 insertions(+)
|
||||
|
||||
diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c
|
||||
index 3ba1da5..f362415 100644
|
||||
--- a/dlls/kernel32/tests/console.c
|
||||
+++ b/dlls/kernel32/tests/console.c
|
||||
@@ -2681,6 +2681,69 @@ static void test_GetConsoleFontSize(HANDLE std_output)
|
||||
ok(!c.Y, "got %d, expected 0\n", c.Y);
|
||||
}
|
||||
|
||||
+static void test_GetLargestConsoleWindowSize(HANDLE std_output)
|
||||
+{
|
||||
+ COORD c, font;
|
||||
+ RECT r;
|
||||
+ LONG workarea_w, workarea_h, maxcon_w, maxcon_h;
|
||||
+ CONSOLE_FONT_INFO cfi;
|
||||
+ DWORD index, i;
|
||||
+ HMODULE hmod;
|
||||
+ DWORD (WINAPI *pGetNumberOfConsoleFonts)(void);
|
||||
+ BOOL (WINAPI *pSetConsoleFont)(HANDLE, DWORD);
|
||||
+
|
||||
+ memset(&c, 10, sizeof(COORD));
|
||||
+ SetLastError(0xdeadbeef);
|
||||
+ c = GetLargestConsoleWindowSize(NULL);
|
||||
+ ok(GetLastError() == ERROR_INVALID_HANDLE, "got %u, expected 6\n", GetLastError());
|
||||
+ ok(!c.X, "got %d, expected 0\n", c.X);
|
||||
+ ok(!c.Y, "got %d, expected 0\n", c.Y);
|
||||
+
|
||||
+ memset(&c, 10, sizeof(COORD));
|
||||
+ SetLastError(0xdeadbeef);
|
||||
+ c = GetLargestConsoleWindowSize(GetStdHandle(STD_INPUT_HANDLE));
|
||||
+ ok(GetLastError() == ERROR_INVALID_HANDLE, "got %u, expected 6\n", GetLastError());
|
||||
+ ok(!c.X, "got %d, expected 0\n", c.X);
|
||||
+ ok(!c.Y, "got %d, expected 0\n", c.Y);
|
||||
+
|
||||
+ SystemParametersInfoW(SPI_GETWORKAREA, 0, &r, 0);
|
||||
+ workarea_w = r.right - r.left;
|
||||
+ workarea_h = r.bottom - r.top - GetSystemMetrics(SM_CYCAPTION);
|
||||
+
|
||||
+ GetCurrentConsoleFont(std_output, FALSE, &cfi);
|
||||
+ index = cfi.nFont; /* save current font index */
|
||||
+
|
||||
+ hmod = GetModuleHandleA("kernel32.dll");
|
||||
+ pGetNumberOfConsoleFonts = (void *)GetProcAddress(hmod, "GetNumberOfConsoleFonts");
|
||||
+ if (!pGetNumberOfConsoleFonts)
|
||||
+ {
|
||||
+ win_skip("GetNumberOfConsoleFonts is not available\n");
|
||||
+ return;
|
||||
+ }
|
||||
+ pSetConsoleFont = (void *)GetProcAddress(hmod, "SetConsoleFont");
|
||||
+ if (!pSetConsoleFont)
|
||||
+ {
|
||||
+ win_skip("SetConsoleFont is not available\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < pGetNumberOfConsoleFonts(); i++)
|
||||
+ {
|
||||
+ pSetConsoleFont(std_output, i);
|
||||
+ memset(&c, 10, sizeof(COORD));
|
||||
+ SetLastError(0xdeadbeef);
|
||||
+ c = GetLargestConsoleWindowSize(std_output);
|
||||
+ ok(GetLastError() == 0xdeadbeef, "got %u, expected 0xdeadbeef\n", GetLastError());
|
||||
+ GetCurrentConsoleFont(std_output, FALSE, &cfi);
|
||||
+ font = GetConsoleFontSize(std_output, cfi.nFont);
|
||||
+ maxcon_w = workarea_w / font.X;
|
||||
+ maxcon_h = workarea_h / font.Y;
|
||||
+ ok(c.X == maxcon_w || c.X == maxcon_w - 1 /* Win10 */, "got %d, expected %d\n", c.X, maxcon_w);
|
||||
+ ok(c.Y == maxcon_h || c.Y == maxcon_h - 1 /* Win10 */, "got %d, expected %d\n", c.Y, maxcon_h);
|
||||
+ }
|
||||
+ pSetConsoleFont(std_output, index); /* restore original font size */
|
||||
+}
|
||||
+
|
||||
START_TEST(console)
|
||||
{
|
||||
static const char font_name[] = "Lucida Console";
|
||||
@@ -2826,4 +2889,5 @@ START_TEST(console)
|
||||
test_ReadConsoleOutputAttribute(hConOut);
|
||||
test_GetCurrentConsoleFont(hConOut);
|
||||
test_GetConsoleFontSize(hConOut);
|
||||
+ test_GetLargestConsoleWindowSize(hConOut);
|
||||
}
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -0,0 +1,58 @@
|
||||
From d3a6fb5dc0a0494627c0980ca8d5e5ee89df4fbc Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 5 Dec 2015 19:36:20 +0100
|
||||
Subject: kernel32: Clamp maximum window size to screen buffer size.
|
||||
|
||||
---
|
||||
dlls/kernel32/console.c | 4 ++--
|
||||
dlls/kernel32/tests/console.c | 9 +++++++++
|
||||
2 files changed, 11 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/console.c b/dlls/kernel32/console.c
|
||||
index 3c53b52..85e4ba8 100644
|
||||
--- a/dlls/kernel32/console.c
|
||||
+++ b/dlls/kernel32/console.c
|
||||
@@ -2160,8 +2160,8 @@ BOOL WINAPI GetConsoleScreenBufferInfo(HANDLE hConsoleOutput, LPCONSOLE_SCREEN_B
|
||||
csbi->srWindow.Right = reply->win_right;
|
||||
csbi->srWindow.Top = reply->win_top;
|
||||
csbi->srWindow.Bottom = reply->win_bottom;
|
||||
- csbi->dwMaximumWindowSize.X = reply->max_width;
|
||||
- csbi->dwMaximumWindowSize.Y = reply->max_height;
|
||||
+ csbi->dwMaximumWindowSize.X = min(reply->width, reply->max_width);
|
||||
+ csbi->dwMaximumWindowSize.Y = min(reply->height, reply->max_height);
|
||||
}
|
||||
}
|
||||
SERVER_END_REQ;
|
||||
diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c
|
||||
index f362415..43a4b75 100644
|
||||
--- a/dlls/kernel32/tests/console.c
|
||||
+++ b/dlls/kernel32/tests/console.c
|
||||
@@ -2686,9 +2686,11 @@ static void test_GetLargestConsoleWindowSize(HANDLE std_output)
|
||||
COORD c, font;
|
||||
RECT r;
|
||||
LONG workarea_w, workarea_h, maxcon_w, maxcon_h;
|
||||
+ CONSOLE_SCREEN_BUFFER_INFO sbi;
|
||||
CONSOLE_FONT_INFO cfi;
|
||||
DWORD index, i;
|
||||
HMODULE hmod;
|
||||
+ BOOL ret;
|
||||
DWORD (WINAPI *pGetNumberOfConsoleFonts)(void);
|
||||
BOOL (WINAPI *pSetConsoleFont)(HANDLE, DWORD);
|
||||
|
||||
@@ -2740,6 +2742,13 @@ static void test_GetLargestConsoleWindowSize(HANDLE std_output)
|
||||
maxcon_h = workarea_h / font.Y;
|
||||
ok(c.X == maxcon_w || c.X == maxcon_w - 1 /* Win10 */, "got %d, expected %d\n", c.X, maxcon_w);
|
||||
ok(c.Y == maxcon_h || c.Y == maxcon_h - 1 /* Win10 */, "got %d, expected %d\n", c.Y, maxcon_h);
|
||||
+
|
||||
+ ret = GetConsoleScreenBufferInfo(std_output, &sbi);
|
||||
+ ok(ret, "GetConsoleScreenBufferInfo failed %u\n", GetLastError());
|
||||
+ ok(sbi.dwMaximumWindowSize.X == min(c.X, sbi.dwSize.X), "got %d, expected %d\n",
|
||||
+ sbi.dwMaximumWindowSize.X, min(c.X, sbi.dwSize.X));
|
||||
+ ok(sbi.dwMaximumWindowSize.Y == min(c.Y, sbi.dwSize.Y), "got %d, expected %d\n",
|
||||
+ sbi.dwMaximumWindowSize.Y, min(c.Y, sbi.dwSize.Y));
|
||||
}
|
||||
pSetConsoleFont(std_output, index); /* restore original font size */
|
||||
}
|
||||
--
|
||||
2.6.2
|
||||
|
1
patches/kernel32-GetLargestConsoleWindowSize/definition
Normal file
1
patches/kernel32-GetLargestConsoleWindowSize/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: [10919] Properly implement GetLargestConsoleWindowSize
|
@@ -1,4 +1,4 @@
|
||||
From 686c258580f515c706074970599fb5a081bdf06a Mon Sep 17 00:00:00 2001
|
||||
From ffd7b942761e5010bdc234f10e5e9721c8d8159b Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 6 Jun 2015 01:21:05 +0200
|
||||
Subject: server: Return correct error codes for NtWriteFile when pipes are
|
||||
@@ -39,10 +39,10 @@ index 42d1fae..3bb2905 100644
|
||||
}
|
||||
}
|
||||
diff --git a/server/named_pipe.c b/server/named_pipe.c
|
||||
index 4bdb4d7..c9c08e5 100644
|
||||
index 37f97ed..28816a2 100644
|
||||
--- a/server/named_pipe.c
|
||||
+++ b/server/named_pipe.c
|
||||
@@ -144,6 +144,7 @@ static const struct object_ops named_pipe_ops =
|
||||
@@ -145,6 +145,7 @@ static const struct object_ops named_pipe_ops =
|
||||
/* server end functions */
|
||||
static void pipe_server_dump( struct object *obj, int verbose );
|
||||
static struct fd *pipe_server_get_fd( struct object *obj );
|
||||
@@ -50,16 +50,16 @@ index 4bdb4d7..c9c08e5 100644
|
||||
static void pipe_server_destroy( struct object *obj);
|
||||
static obj_handle_t pipe_server_flush( struct fd *fd, const async_data_t *async, int blocking );
|
||||
static enum server_fd_type pipe_server_get_fd_type( struct fd *fd );
|
||||
@@ -166,7 +167,7 @@ static const struct object_ops pipe_server_ops =
|
||||
default_set_sd, /* set_sd */
|
||||
@@ -168,7 +169,7 @@ static const struct object_ops pipe_server_ops =
|
||||
no_lookup_name, /* lookup_name */
|
||||
no_open_file, /* open_file */
|
||||
no_alloc_handle, /* alloc_handle */
|
||||
- fd_close_handle, /* close_handle */
|
||||
+ pipe_server_close_handle, /* close_handle */
|
||||
pipe_server_destroy /* destroy */
|
||||
};
|
||||
|
||||
@@ -188,6 +189,7 @@ static const struct fd_ops pipe_server_fd_ops =
|
||||
@@ -190,6 +191,7 @@ static const struct fd_ops pipe_server_fd_ops =
|
||||
static void pipe_client_dump( struct object *obj, int verbose );
|
||||
static int pipe_client_signaled( struct object *obj, struct wait_queue_entry *entry );
|
||||
static struct fd *pipe_client_get_fd( struct object *obj );
|
||||
@@ -67,16 +67,16 @@ index 4bdb4d7..c9c08e5 100644
|
||||
static void pipe_client_destroy( struct object *obj );
|
||||
static obj_handle_t pipe_client_flush( struct fd *fd, const async_data_t *async, int blocking );
|
||||
static enum server_fd_type pipe_client_get_fd_type( struct fd *fd );
|
||||
@@ -208,7 +210,7 @@ static const struct object_ops pipe_client_ops =
|
||||
default_set_sd, /* set_sd */
|
||||
@@ -211,7 +213,7 @@ static const struct object_ops pipe_client_ops =
|
||||
no_lookup_name, /* lookup_name */
|
||||
no_open_file, /* open_file */
|
||||
no_alloc_handle, /* alloc_handle */
|
||||
- fd_close_handle, /* close_handle */
|
||||
+ pipe_client_close_handle, /* close_handle */
|
||||
pipe_client_destroy /* destroy */
|
||||
};
|
||||
|
||||
@@ -272,6 +274,8 @@ static const struct fd_ops named_pipe_device_fd_ops =
|
||||
@@ -276,6 +278,8 @@ static const struct fd_ops named_pipe_device_fd_ops =
|
||||
default_fd_cancel_async /* cancel_async */
|
||||
};
|
||||
|
||||
@@ -85,7 +85,7 @@ index 4bdb4d7..c9c08e5 100644
|
||||
static void named_pipe_dump( struct object *obj, int verbose )
|
||||
{
|
||||
struct named_pipe *pipe = (struct named_pipe *) obj;
|
||||
@@ -386,6 +390,23 @@ static void do_disconnect( struct pipe_server *server )
|
||||
@@ -390,6 +394,23 @@ static void do_disconnect( struct pipe_server *server )
|
||||
server->fd = NULL;
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ index 4bdb4d7..c9c08e5 100644
|
||||
static void pipe_server_destroy( struct object *obj)
|
||||
{
|
||||
struct pipe_server *server = (struct pipe_server *)obj;
|
||||
@@ -412,6 +433,24 @@ static void pipe_server_destroy( struct object *obj)
|
||||
@@ -416,6 +437,24 @@ static void pipe_server_destroy( struct object *obj)
|
||||
release_object( server->pipe );
|
||||
}
|
||||
|
||||
@@ -135,7 +135,7 @@ index 4bdb4d7..c9c08e5 100644
|
||||
{
|
||||
struct pipe_client *client = (struct pipe_client *)obj;
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index d0a949f..91ab8cc 100644
|
||||
index 6b2030b..390c09a 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -2389,6 +2389,7 @@ enum message_type
|
||||
|
@@ -4,4 +4,5 @@ Fixes: Improve ReadDataAvailable handling in FilePipeLocalInformation class
|
||||
Fixes: Set NamedPipeState to FILE_PIPE_CLOSING_STATE on broken pipe in NtQueryInformationFile
|
||||
FIxes: Return proper status codes when NtReadFile/NtWriteFile is called on closed (but not disconnected) pipe
|
||||
Depends: rpcrt4-Pipe_Transport
|
||||
Depends: server-Desktop_Refcount
|
||||
Category: stable
|
||||
|
@@ -1,40 +0,0 @@
|
||||
From 29e32e5ad41bbd4a2c19202bea2175cfb11c17b1 Mon Sep 17 00:00:00 2001
|
||||
From: Bruno Jesus <00cpxxx@gmail.com>
|
||||
Date: Sat, 28 Nov 2015 22:47:38 +0100
|
||||
Subject: krnl386.exe16: Skip invalid entries in GetPrivateProfileString16.
|
||||
|
||||
---
|
||||
dlls/krnl386.exe16/file.c | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/krnl386.exe16/file.c b/dlls/krnl386.exe16/file.c
|
||||
index 77908c2..b66b753 100644
|
||||
--- a/dlls/krnl386.exe16/file.c
|
||||
+++ b/dlls/krnl386.exe16/file.c
|
||||
@@ -539,6 +539,9 @@ INT16 WINAPI GetPrivateProfileString16( LPCSTR section, LPCSTR entry,
|
||||
LPCSTR def_val, LPSTR buffer,
|
||||
UINT16 len, LPCSTR filename )
|
||||
{
|
||||
+ TRACE("(%s, %s, %s, %p, %u, %s)\n", debugstr_a(section), debugstr_a(entry),
|
||||
+ debugstr_a(def_val), buffer, len, debugstr_a(filename));
|
||||
+
|
||||
if (!section)
|
||||
{
|
||||
if (buffer && len) buffer[0] = 0;
|
||||
@@ -572,7 +575,12 @@ INT16 WINAPI GetPrivateProfileString16( LPCSTR section, LPCSTR entry,
|
||||
{
|
||||
char *p = strchr( src, '=' );
|
||||
|
||||
- if (!p) p = src + strlen(src);
|
||||
+ /* A valid entry is formed by name = value */
|
||||
+ if (!p)
|
||||
+ {
|
||||
+ src += strlen(src) + 1;
|
||||
+ continue;
|
||||
+ }
|
||||
if (p - src < len)
|
||||
{
|
||||
memcpy( buffer, src, p - src );
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: [9919] Skip invalid entries in GetPrivateProfileString16
|
@@ -1,126 +0,0 @@
|
||||
From c215f96c76ba4352e79bde6b4422d46ead6b5a85 Mon Sep 17 00:00:00 2001
|
||||
From: Matteo Bruni <mbruni@codeweavers.com>
|
||||
Date: Fri, 13 Nov 2015 00:33:37 +0100
|
||||
Subject: msctf: Add a partial implementation of ITfThreadMgrEx_ActivateEx().
|
||||
|
||||
---
|
||||
dlls/msctf/tests/inputprocessor.c | 16 +++++++++++--
|
||||
dlls/msctf/threadmgr.c | 47 +++++++++++++++++++++------------------
|
||||
2 files changed, 39 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/dlls/msctf/tests/inputprocessor.c b/dlls/msctf/tests/inputprocessor.c
|
||||
index c01d5bc..58d4d26 100644
|
||||
--- a/dlls/msctf/tests/inputprocessor.c
|
||||
+++ b/dlls/msctf/tests/inputprocessor.c
|
||||
@@ -1409,6 +1409,7 @@ static void test_startSession(void)
|
||||
ITfContext *cxt,*cxt2,*cxt3,*cxtTest;
|
||||
ITextStoreACP *ts;
|
||||
TfClientId cid2 = 0;
|
||||
+ ITfThreadMgrEx *tmex;
|
||||
|
||||
hr = ITfThreadMgr_Deactivate(g_tm);
|
||||
ok(hr == E_UNEXPECTED,"Deactivate should have failed with E_UNEXPECTED\n");
|
||||
@@ -1421,10 +1422,21 @@ static void test_startSession(void)
|
||||
test_ShouldActivate = FALSE;
|
||||
hr = ITfThreadMgr_Activate(g_tm,&cid2);
|
||||
ok(SUCCEEDED(hr),"Failed to Activate\n");
|
||||
- ok (cid == cid2, "Second activate client ID does not match\n");
|
||||
+ ok(cid == cid2, "Second activate client ID does not match\n");
|
||||
+
|
||||
+ hr = ITfThreadMgr_QueryInterface(g_tm, &IID_ITfThreadMgrEx, (void **)&tmex);
|
||||
+ ok(SUCCEEDED(hr), "Unable to acquire ITfThreadMgrEx interface\n");
|
||||
+
|
||||
+ hr = ITfThreadMgrEx_ActivateEx(tmex, &cid2, 0);
|
||||
+ ok(SUCCEEDED(hr), "Failed to Activate\n");
|
||||
+ ok(cid == cid2, "ActivateEx client ID does not match\n");
|
||||
+
|
||||
+ ITfThreadMgrEx_Release(tmex);
|
||||
|
||||
hr = ITfThreadMgr_Deactivate(g_tm);
|
||||
- ok(SUCCEEDED(hr),"Failed to Deactivate\n");
|
||||
+ ok(SUCCEEDED(hr), "Failed to Deactivate\n");
|
||||
+ hr = ITfThreadMgr_Deactivate(g_tm);
|
||||
+ ok(SUCCEEDED(hr), "Failed to Deactivate\n");
|
||||
|
||||
test_EnumDocumentMgr(g_tm,NULL,NULL);
|
||||
|
||||
diff --git a/dlls/msctf/threadmgr.c b/dlls/msctf/threadmgr.c
|
||||
index d997cda..91deb8d 100644
|
||||
--- a/dlls/msctf/threadmgr.c
|
||||
+++ b/dlls/msctf/threadmgr.c
|
||||
@@ -327,29 +327,15 @@ static ULONG WINAPI ThreadMgr_Release(ITfThreadMgrEx *iface)
|
||||
* ITfThreadMgr functions
|
||||
*****************************************************/
|
||||
|
||||
-static HRESULT WINAPI ThreadMgr_fnActivate(ITfThreadMgrEx *iface, TfClientId *ptid)
|
||||
+static HRESULT WINAPI ThreadMgr_Activate(ITfThreadMgrEx *iface, TfClientId *id)
|
||||
{
|
||||
ThreadMgr *This = impl_from_ITfThreadMgrEx(iface);
|
||||
|
||||
- TRACE("(%p) %p\n",This, ptid);
|
||||
-
|
||||
- if (!ptid)
|
||||
- return E_INVALIDARG;
|
||||
-
|
||||
- if (!processId)
|
||||
- {
|
||||
- GUID guid;
|
||||
- CoCreateGuid(&guid);
|
||||
- ITfClientId_GetClientId(&This->ITfClientId_iface, &guid, &processId);
|
||||
- }
|
||||
-
|
||||
- activate_textservices((ITfThreadMgr *)iface);
|
||||
- This->activationCount++;
|
||||
- *ptid = processId;
|
||||
- return S_OK;
|
||||
+ TRACE("(%p) %p\n", This, id);
|
||||
+ return ITfThreadMgrEx_ActivateEx(iface, id, 0);
|
||||
}
|
||||
|
||||
-static HRESULT WINAPI ThreadMgr_fnDeactivate(ITfThreadMgrEx *iface)
|
||||
+static HRESULT WINAPI ThreadMgr_Deactivate(ITfThreadMgrEx *iface)
|
||||
{
|
||||
ThreadMgr *This = impl_from_ITfThreadMgrEx(iface);
|
||||
TRACE("(%p)\n",This);
|
||||
@@ -597,8 +583,25 @@ static HRESULT WINAPI ThreadMgr_ActivateEx(ITfThreadMgrEx *iface, TfClientId *id
|
||||
{
|
||||
ThreadMgr *This = impl_from_ITfThreadMgrEx(iface);
|
||||
|
||||
- FIXME("STUB:(%p)\n", This);
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("(%p) %p, %#x\n", This, id, flags);
|
||||
+
|
||||
+ if (!id)
|
||||
+ return E_INVALIDARG;
|
||||
+
|
||||
+ if (flags)
|
||||
+ FIXME("Unimplemented flags %#x\n", flags);
|
||||
+
|
||||
+ if (!processId)
|
||||
+ {
|
||||
+ GUID guid;
|
||||
+ CoCreateGuid(&guid);
|
||||
+ ITfClientId_GetClientId(&This->ITfClientId_iface, &guid, &processId);
|
||||
+ }
|
||||
+
|
||||
+ activate_textservices((ITfThreadMgr *)iface);
|
||||
+ This->activationCount++;
|
||||
+ *id = processId;
|
||||
+ return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI ThreadMgr_GetActiveFlags(ITfThreadMgrEx *iface, DWORD *flags)
|
||||
@@ -614,8 +617,8 @@ static const ITfThreadMgrExVtbl ThreadMgrExVtbl =
|
||||
ThreadMgr_QueryInterface,
|
||||
ThreadMgr_AddRef,
|
||||
ThreadMgr_Release,
|
||||
- ThreadMgr_fnActivate,
|
||||
- ThreadMgr_fnDeactivate,
|
||||
+ ThreadMgr_Activate,
|
||||
+ ThreadMgr_Deactivate,
|
||||
ThreadMgr_CreateDocumentMgr,
|
||||
ThreadMgr_EnumDocumentMgrs,
|
||||
ThreadMgr_GetFocus,
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: [39564] Add partial implementation of ITfThreadMgrEx_ActivateEx
|
@@ -1,4 +1,4 @@
|
||||
From fdb59c20c2b04b0c5c405b0926f785efaaa2b174 Mon Sep 17 00:00:00 2001
|
||||
From cde86309c43cf9ebd9ff1e6c12869cdf34ede607 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@wine-staging.com>
|
||||
Date: Fri, 18 Sep 2015 11:07:43 -0600
|
||||
Subject: msi: Add support for exporting binary streams (Binary/Icon tables).
|
||||
@@ -9,7 +9,7 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@wine-staging.com>
|
||||
1 file changed, 79 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/dlls/msi/database.c b/dlls/msi/database.c
|
||||
index 7c511c9..464b2d4 100644
|
||||
index 7c511c9..6627fd0 100644
|
||||
--- a/dlls/msi/database.c
|
||||
+++ b/dlls/msi/database.c
|
||||
@@ -53,6 +53,13 @@ WINE_DEFAULT_DEBUG_CHANNEL(msi);
|
||||
@@ -49,7 +49,7 @@ index 7c511c9..464b2d4 100644
|
||||
+ return r;
|
||||
+
|
||||
+ /* if the destination folder does not exist then create it (folder name = table name) */
|
||||
+ snprintfW( stream_filename, sizeof(stream_filename), fmt_folder, folder, table );
|
||||
+ snprintfW( stream_filename, sizeof(stream_filename)/sizeof(WCHAR), fmt_folder, folder, table );
|
||||
+ if (GetFileAttributesW( stream_filename ) == INVALID_FILE_ATTRIBUTES)
|
||||
+ {
|
||||
+ if (!CreateDirectoryW( stream_filename, NULL ))
|
||||
@@ -57,7 +57,7 @@ index 7c511c9..464b2d4 100644
|
||||
+ }
|
||||
+
|
||||
+ /* actually create the file */
|
||||
+ snprintfW( stream_filename, sizeof(stream_filename), fmt_file, folder, table, stream_name );
|
||||
+ snprintfW( stream_filename, sizeof(stream_filename)/sizeof(WCHAR), fmt_file, folder, table, stream_name );
|
||||
+ file = CreateFileW( stream_filename, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
+ NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
|
||||
+ if (file == INVALID_HANDLE_VALUE)
|
||||
@@ -149,5 +149,5 @@ index 7c511c9..464b2d4 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.5.1
|
||||
2.6.2
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user