Compare commits

..

46 Commits

Author SHA1 Message Date
Sebastian Lackner
7397ac1394 Release 1.9.20. 2016-10-02 20:41:04 +02:00
Sebastian Lackner
6b626b3f42 Added patch to create HardwareId registry key for display devices. 2016-10-02 18:08:25 +02:00
Sebastian Lackner
ec7eae9400 Rebase against 8a92dd9a5720c4b6b334e4f13629c0b0f5a72e94. 2016-10-01 21:04:43 +02:00
Sebastian Lackner
1a199958e7 Rebase against af37b187ad86191110b80bef814d25ce3ac350db. 2016-09-28 18:04:14 +02:00
Sebastian Lackner
2bf9187a19 Added patch to improve palette support in windowscodecs.dll. 2016-09-28 17:55:15 +02:00
Sebastian Lackner
b3eb9ef535 Rebase against f669dc69cdcaf08aa197c98f68a1dfb4f8a265b1. 2016-09-28 03:28:26 +02:00
Sebastian Lackner
78c9cb74ff Rebase against c76c7d85d0be45edf72e63ae7eae51c018383070. 2016-09-27 18:14:12 +02:00
Sebastian Lackner
b52328c75a Rebase against 61e6e8baa01dd44fa46744a8bc2b226474ce487a. 2016-09-23 19:12:11 +02:00
Sebastian Lackner
00fbf6afc8 Rebase against 1513c706341a6c04ddfa8b1998a346d343fc4983.
[ntdll-RtlSetCurrentDirectory_U]
Removed patch to open current working directory with FILE_TRAVERSE access
(accepted upstream).

[server-Win32_Prefix]
Removed patch to allow to create win23 prefix when directory already exists
(accepted upstream).
2016-09-22 21:27:27 +02:00
Sebastian Lackner
1281216a26 Rebase against 6fd36314d051ceff8dbb0f2d442f57983e0bcd65.
[dsound-DSCAPS_CERTIFIED]
Removed patch to pretend that the dsound driver is certified (accepted upstream).

[hid-HidP_TranslateUsagesToI8042ScanCodes]
Removed patch to stub HidP_TranslateUsagesToI8042ScanCodes (accepted upstream).
2016-09-21 21:11:23 +02:00
Sebastian Lackner
dd166155b5 Added patch to fix initial texture upload for 1D/3D textures. 2016-09-21 01:23:13 +02:00
Sebastian Lackner
8112d76673 Rebase against e6e8ed47e6d6d245e4bbda13691eb714cf95a675. 2016-09-21 00:23:02 +02:00
Sebastian Lackner
ee44570fb0 Rebase against 5a9f7ef06df15e26acf46b0210dd7697356da7ac. 2016-09-20 21:33:38 +02:00
Sebastian Lackner
3b127e5f51 Release 1.9.19. 2016-09-19 01:30:09 +02:00
Sebastian Lackner
1e2b0d3e0c Added patch to implement support for SP_COPY_IN_USE_NEEDS_REBOOT in do_file_copyW. 2016-09-18 23:11:45 +02:00
Sebastian Lackner
a358f0984b Added patch to implement CIF reader and download functionality in inseng.dll. 2016-09-18 22:48:10 +02:00
Sebastian Lackner
c08a9ab0d6 Added patch to allow to create win23 prefix when directory already exists. 2016-09-18 20:39:19 +02:00
Sebastian Lackner
4483c9737e Added patch to open current working directory with FILE_TRAVERSE access. 2016-09-18 20:22:06 +02:00
Sebastian Lackner
522961364f Rebase against e2ebc0dc23f0fa04ea79cefc9e3d2faf189a6bf7.
[windowscodecs-32bppGrayFloat]
Partially removed patches to implement support for WICPixelFormat32bppGrayFloat
(accepted upstream).

[windowscodecs-copypixels_to_24bppRGB]
Removed patch to avoid extra conversion step BGR->RGB when converting 32bpp
BGRA to 24bpp RGB (accepted upstream).
2016-09-17 16:06:46 +02:00
Sebastian Lackner
f8b5d1530a Rebase against 1938d389b293930c5ac2f2970c6241e09517cf49.
[gdiplus-GdipCreateMetafileFromStream]
Removed remaining patches to implement GdipGetMetafileHeaderFrom* functions
(accepted upstream).
2016-09-16 07:58:16 +02:00
Sebastian Lackner
75760561c3 Rebase against 4931e6f92bc7e0c229a057ebf2e000f8f5aa1edd. 2016-09-15 06:22:42 +02:00
Sebastian Lackner
79af70fad1 Rebase against 4e9cc305bb1a758eb70419318c7c41c2918fc180. 2016-09-13 23:52:10 +02:00
Sebastian Lackner
3bb2024464 Rebase against c1bc25dd38dab0504bd9eb45641a830ff08488b3.
[gdiplus-GdipCreateMetafileFromStream]
Removed patches to implement GdipCreateMetafileFromStream and
GdipGetMetafileHeaderFromMetafile (accepted upstream).
2016-09-12 23:39:35 +02:00
Sebastian Lackner
2ad4a084dd Added patch to silence a noisy FIXME message in msvcrt.pf_printf. 2016-09-10 18:56:18 +02:00
Sebastian Lackner
4465c82831 Rebase against 4bfefc5c7132023ee40d70572b677ae0e441df38. 2016-09-10 08:27:16 +02:00
Sebastian Lackner
141b05e4ff Rebase against 01581bfc48161c3c55027334b1ecb9e909873a6b. 2016-09-09 22:59:00 +02:00
Sebastian Lackner
50a0e530a8 Rebase against 7c06f1c218a2ecb1f2dda2cfb97b3a2c5b7f01e8. 2016-09-09 19:48:49 +02:00
Sebastian Lackner
b3a71a8918 Rebase against f53c320f04114253955b509da294ef454864679d. 2016-09-07 17:58:48 +02:00
Sebastian Lackner
82a0709ef2 Release 1.9.18. 2016-09-05 16:09:42 +02:00
Sebastian Lackner
bf90df4eed Added hack for WINED3DFMT_R24_UNORM_X8_TYPELESS format. 2016-09-04 21:23:54 +02:00
Sebastian Lackner
e2e200361f Added patch to implement IWICPalette::InitializeFromBitmap and corresponding gdiplus functions. 2016-09-04 21:12:21 +02:00
Sebastian Lackner
ad962f7d64 Rebase against 7baaab5b53011c3a593e1ff32538c9ca706db212.
FIXME: Use CS resource map/unmap mechanism instead of separate opcodes.
2016-09-03 21:19:17 +02:00
Sebastian Lackner
d28e0d12bb Rebase against 225c43b8124aaeb4c2e307379ab98036db1a38b3. 2016-09-01 19:55:33 +02:00
Sebastian Lackner
938ffad317 Rebase against 23a64ca074021bfda46f6287aaa529d6e8f66774. 2016-08-31 21:51:53 +02:00
Sebastian Lackner
6b3228a788 Added patch to avoid extra conversion step BGR->RGB when converting 32bpp BGRA to 24bpp RGB. 2016-08-31 17:54:00 +02:00
Michael MĂĽller
6b709dc505 Added patch for d3d11 1d textures. 2016-08-31 17:42:50 +02:00
Sebastian Lackner
8ca9f08b92 Rebase against 002af352fac43d170aad216bf15098b27555539a. 2016-08-30 20:44:42 +02:00
Sebastian Lackner
39c7e02819 Rebase against d3cb5c24a5ebbc7dcfb181a56f0f55cf3d1a1c30. 2016-08-29 18:29:37 +02:00
Sebastian Lackner
398d920e3a Added patch to implement semi-stub for d3d11_device_CheckFormatSupport. 2016-08-29 03:14:37 +02:00
Sebastian Lackner
5a40e8f8b3 Added patch to add WINED3DFMT_R32G32_{U,S}INT as render target format. 2016-08-29 03:06:03 +02:00
Sebastian Lackner
d4fa026231 Added patch to implement semi-stub for advapi32.GetExplicitEntriesFromAclW. 2016-08-29 03:05:30 +02:00
Sebastian Lackner
43a640f8fd Rebase against 30cdd1fb8cea410cb9e363b16278528669e2c19a. 2016-08-28 20:22:44 +02:00
Sebastian Lackner
deb73bfa7c Rebase against 839995d5e9afcbcdcd084eac3a8e6e48a2173eda. 2016-08-25 23:43:12 +02:00
Sebastian Lackner
f2fd04974f Rebase against a875e3c6ab075c0603e7bf1430abdba704640602. 2016-08-25 23:20:12 +02:00
Sebastian Lackner
9961dd76da Rebase against 94845c400e2d09c96854e756075a0004c17776bb. 2016-08-24 09:30:16 +02:00
Sebastian Lackner
d86ab36369 Rebase against 90173ce448e5afe55627c2cbece28fb4f6bae99d.
[ntdll-ThreadpoolCleanupGroup]
Removed patches to fix multiple bugs related to threadpool cleanup groups and
cancel callbacks (accepted upstream).
2016-08-24 09:29:31 +02:00
244 changed files with 13202 additions and 4395 deletions

View File

@@ -1,85 +0,0 @@
From c3170561ea6c0de42ae71925e31e08941e1b96dc Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 31 Jul 2016 00:03:02 +0200
Subject: server: Workaround duplicate condition warning of GCC 6.
---
server/request.c | 13 ++++++++++---
server/sock.c | 9 ++++++++-
2 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/server/request.c b/server/request.c
index 597bf88..483884b 100644
--- a/server/request.c
+++ b/server/request.c
@@ -220,6 +220,13 @@ const void *get_req_data_after_objattr( const struct object_attributes *attr, da
return ptr;
}
+static inline int should_retry( int err )
+{
+ if (err == EWOULDBLOCK) return 1;
+ if (err == EAGAIN) return 1;
+ return 0;
+}
+
/* write the remaining part of the reply */
void write_reply( struct thread *thread )
{
@@ -241,7 +248,7 @@ void write_reply( struct thread *thread )
}
if (errno == EPIPE)
kill_thread( thread, 0 ); /* normal death */
- else if (errno != EWOULDBLOCK && errno != EAGAIN)
+ else if (!should_retry( errno ))
fatal_protocol_error( thread, "reply write: %s\n", strerror( errno ));
}
@@ -368,7 +375,7 @@ error:
kill_thread( thread, 0 );
else if (ret > 0)
fatal_protocol_error( thread, "partial read %d\n", ret );
- else if (errno != EWOULDBLOCK && errno != EAGAIN)
+ else if (!should_retry( errno ))
fatal_protocol_error( thread, "read: %s\n", strerror( errno ));
}
@@ -449,7 +456,7 @@ int receive_fd( struct process *process )
}
else
{
- if (errno != EWOULDBLOCK && errno != EAGAIN)
+ if (!should_retry( errno ))
{
fprintf( stderr, "Protocol error: process %04x: ", process->id );
perror( "recvmsg" );
diff --git a/server/sock.c b/server/sock.c
index dc10d2a..4f76163 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -1065,6 +1065,13 @@ static void ifchange_wake_up( struct object *obj, unsigned int status )
}
}
+static inline int should_retry( int err )
+{
+ if (err == EWOULDBLOCK) return 1;
+ if (err == EAGAIN) return 1;
+ return 0;
+}
+
static void ifchange_poll_event( struct fd *fd, int event )
{
struct object *ifchange = get_fd_user( fd );
@@ -1075,7 +1082,7 @@ static void ifchange_poll_event( struct fd *fd, int event )
r = recv( get_unix_fd(fd), buffer, sizeof(buffer), MSG_DONTWAIT );
if (r < 0)
{
- if (errno == EWOULDBLOCK || errno == EAGAIN)
+ if (should_retry( errno ))
return; /* retry when poll() says the socket is ready */
status = sock_get_ntstatus( errno );
}
--
2.9.0

View File

@@ -0,0 +1,277 @@
From cb383abcb7d36d739092a93c1f276895622b6806 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 28 Aug 2016 21:56:41 +0200
Subject: advapi32: Implement GetExplicitEntriesFromAclW.
---
dlls/advapi32/security.c | 81 ++++++++++++++++++++++-
dlls/advapi32/tests/security.c | 142 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 221 insertions(+), 2 deletions(-)
diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c
index 92a1789..c60aa4e 100644
--- a/dlls/advapi32/security.c
+++ b/dlls/advapi32/security.c
@@ -4202,8 +4202,85 @@ DWORD WINAPI GetExplicitEntriesFromAclA( PACL pacl, PULONG pcCountOfExplicitEntr
DWORD WINAPI GetExplicitEntriesFromAclW( PACL pacl, PULONG pcCountOfExplicitEntries,
PEXPLICIT_ACCESSW* pListOfExplicitEntries)
{
- FIXME("%p %p %p\n",pacl, pcCountOfExplicitEntries, pListOfExplicitEntries);
- return ERROR_CALL_NOT_IMPLEMENTED;
+ ACL_SIZE_INFORMATION sizeinfo;
+ EXPLICIT_ACCESSW* entries;
+ MAX_SID *sid_entries;
+ ACE_HEADER *ace;
+ NTSTATUS status;
+ int i;
+
+ FIXME("%p %p %p: semi-stub\n",pacl, pcCountOfExplicitEntries, pListOfExplicitEntries);
+
+ if (!pcCountOfExplicitEntries || !pListOfExplicitEntries)
+ return ERROR_INVALID_PARAMETER;
+
+ status = RtlQueryInformationAcl(pacl, &sizeinfo, sizeof(sizeinfo), AclSizeInformation);
+ if (status) return RtlNtStatusToDosError(status);
+
+ if (!sizeinfo.AceCount)
+ {
+ *pcCountOfExplicitEntries = 0;
+ *pListOfExplicitEntries = NULL;
+ return ERROR_SUCCESS;
+ }
+
+ entries = LocalAlloc(LMEM_FIXED | LMEM_ZEROINIT, (sizeof(EXPLICIT_ACCESSW) + sizeof(MAX_SID)) * sizeinfo.AceCount);
+ if (!entries) return ERROR_OUTOFMEMORY;
+ sid_entries = (MAX_SID*)((char*)entries + sizeof(EXPLICIT_ACCESSW) * sizeinfo.AceCount);
+
+ for (i = 0; i < sizeinfo.AceCount; i++)
+ {
+ status = RtlGetAce(pacl, i, (void**)&ace);
+ if (status) goto error;
+
+ switch (ace->AceType)
+ {
+ case ACCESS_ALLOWED_ACE_TYPE:
+ {
+ ACCESS_ALLOWED_ACE *allow = (ACCESS_ALLOWED_ACE *)ace;
+ entries[i].grfAccessMode = GRANT_ACCESS;
+ entries[i].grfInheritance = ace->AceFlags;
+ entries[i].grfAccessPermissions = allow->Mask;
+
+ CopySid(sizeof(MAX_SID), (PSID)&sid_entries[i], (PSID)&allow->SidStart);
+ entries[i].Trustee.pMultipleTrustee = NULL;
+ entries[i].Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
+ entries[i].Trustee.TrusteeForm = TRUSTEE_IS_SID;
+ entries[i].Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN;
+ entries[i].Trustee.ptstrName = (WCHAR *)&sid_entries[i];
+ break;
+ }
+
+ case ACCESS_DENIED_ACE_TYPE:
+ {
+ ACCESS_DENIED_ACE *deny = (ACCESS_DENIED_ACE *)ace;
+ entries[i].grfAccessMode = DENY_ACCESS;
+ entries[i].grfInheritance = ace->AceFlags;
+ entries[i].grfAccessPermissions = deny->Mask;
+
+ CopySid(sizeof(MAX_SID), (PSID)&sid_entries[i], (PSID)&deny->SidStart);
+ entries[i].Trustee.pMultipleTrustee = NULL;
+ entries[i].Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
+ entries[i].Trustee.TrusteeForm = TRUSTEE_IS_SID;
+ entries[i].Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN;
+ entries[i].Trustee.ptstrName = (WCHAR *)&sid_entries[i];
+ break;
+ }
+
+ default:
+ FIXME("Unhandled ace type %d\n", ace->AceType);
+ entries[i].grfAccessMode = NOT_USED_ACCESS;
+ continue;
+ }
+ }
+
+ *pcCountOfExplicitEntries = sizeinfo.AceCount;
+ *pListOfExplicitEntries = entries;
+ return ERROR_SUCCESS;
+
+error:
+ LocalFree(entries);
+ return RtlNtStatusToDosError(status);
}
/******************************************************************************
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index cf104ab..2bcb108 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -133,6 +133,7 @@ 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 DWORD (WINAPI *pGetExplicitEntriesFromAclW)(PACL,PULONG,PEXPLICIT_ACCESSW*);
static HMODULE hmod;
static int myARGC;
@@ -227,6 +228,7 @@ static void init(void)
pGetAce = (void *)GetProcAddress(hmod, "GetAce");
pGetWindowsAccountDomainSid = (void *)GetProcAddress(hmod, "GetWindowsAccountDomainSid");
pGetSidIdentifierAuthority = (void *)GetProcAddress(hmod, "GetSidIdentifierAuthority");
+ pGetExplicitEntriesFromAclW = (void *)GetProcAddress(hmod, "GetExplicitEntriesFromAclW");
myARGC = winetest_get_mainargs( &myARGV );
}
@@ -6378,6 +6380,145 @@ static void test_pseudo_tokens(void)
"Expected ERROR_NO_TOKEN, got %u\n", GetLastError());
}
+static void test_GetExplicitEntriesFromAclW(void)
+{
+ static const WCHAR wszCurrentUser[] = { 'C','U','R','R','E','N','T','_','U','S','E','R','\0'};
+ SID_IDENTIFIER_AUTHORITY SIDAuthWorld = { SECURITY_WORLD_SID_AUTHORITY };
+ SID_IDENTIFIER_AUTHORITY SIDAuthNT = { SECURITY_NT_AUTHORITY };
+ PSID everyone_sid = NULL, users_sid = NULL;
+ EXPLICIT_ACCESSW access;
+ EXPLICIT_ACCESSW *access2;
+ PACL new_acl, old_acl = NULL;
+ ULONG count;
+ DWORD res;
+
+ if (!pGetExplicitEntriesFromAclW)
+ {
+ win_skip("GetExplicitEntriesFromAclW is not available\n");
+ return;
+ }
+
+ if (!pSetEntriesInAclW)
+ {
+ win_skip("SetEntriesInAclW is not available\n");
+ return;
+ }
+
+ old_acl = HeapAlloc(GetProcessHeap(), 0, 256);
+ res = InitializeAcl(old_acl, 256, ACL_REVISION);
+ if(!res && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
+ {
+ win_skip("ACLs not implemented - skipping tests\n");
+ HeapFree(GetProcessHeap(), 0, old_acl);
+ return;
+ }
+ ok(res, "InitializeAcl failed with error %d\n", GetLastError());
+
+ res = AllocateAndInitializeSid(&SIDAuthWorld, 1, SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &everyone_sid);
+ ok(res, "AllocateAndInitializeSid failed with error %d\n", GetLastError());
+
+ res = AllocateAndInitializeSid(&SIDAuthNT, 2, SECURITY_BUILTIN_DOMAIN_RID,
+ DOMAIN_ALIAS_RID_USERS, 0, 0, 0, 0, 0, 0, &users_sid);
+ ok(res, "AllocateAndInitializeSid failed with error %d\n", GetLastError());
+
+ res = AddAccessAllowedAce(old_acl, ACL_REVISION, KEY_READ, users_sid);
+ ok(res, "AddAccessAllowedAce failed with error %d\n", GetLastError());
+
+ access2 = NULL;
+ res = pGetExplicitEntriesFromAclW(old_acl, &count, &access2);
+ ok(res == ERROR_SUCCESS, "GetExplicitEntriesFromAclW failed with error %d\n", GetLastError());
+ ok(count == 1, "Expected count == 1, got %d\n", count);
+ ok(access2[0].grfAccessMode == GRANT_ACCESS, "Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
+ ok(access2[0].grfAccessPermissions == KEY_READ, "Expected KEY_READ, got %d\n", access2[0].grfAccessPermissions);
+ ok(access2[0].Trustee.TrusteeForm == TRUSTEE_IS_SID, "Expected SID trustee, got %d\n", access2[0].Trustee.TrusteeForm);
+ ok(access2[0].grfInheritance == NO_INHERITANCE, "Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
+ ok(EqualSid(access2[0].Trustee.ptstrName, users_sid), "Expected equal SIDs\n");
+ LocalFree(access2);
+
+ access.Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
+ access.Trustee.pMultipleTrustee = NULL;
+
+ access.grfAccessPermissions = KEY_WRITE;
+ access.grfAccessMode = GRANT_ACCESS;
+ access.grfInheritance = NO_INHERITANCE;
+ access.Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP;
+ access.Trustee.TrusteeForm = TRUSTEE_IS_SID;
+ access.Trustee.ptstrName = everyone_sid;
+ res = pSetEntriesInAclW(1, &access, old_acl, &new_acl);
+ ok(res == ERROR_SUCCESS, "SetEntriesInAclW failed: %u\n", res);
+ ok(new_acl != NULL, "returned acl was NULL\n");
+
+ access2 = NULL;
+ res = pGetExplicitEntriesFromAclW(new_acl, &count, &access2);
+ ok(res == ERROR_SUCCESS, "GetExplicitEntriesFromAclW failed with error %d\n", GetLastError());
+ ok(count == 2, "Expected count == 2, got %d\n", count);
+ ok(access2[0].grfAccessMode == GRANT_ACCESS, "Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
+ ok(access2[0].grfAccessPermissions == KEY_WRITE, "Expected KEY_WRITE, got %d\n", access2[0].grfAccessPermissions);
+ ok(access2[0].Trustee.TrusteeType == TRUSTEE_IS_UNKNOWN,
+ "Expected TRUSTEE_IS_UNKNOWN trustee type, got %d\n", access2[0].Trustee.TrusteeType);
+ ok(access2[0].Trustee.TrusteeForm == TRUSTEE_IS_SID, "Expected SID trustee, got %d\n", access2[0].Trustee.TrusteeForm);
+ ok(access2[0].grfInheritance == NO_INHERITANCE, "Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
+ ok(EqualSid(access2[0].Trustee.ptstrName, everyone_sid), "Expected equal SIDs\n");
+ LocalFree(access2);
+ LocalFree(new_acl);
+
+ access.Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN;
+ res = pSetEntriesInAclW(1, &access, old_acl, &new_acl);
+ ok(res == ERROR_SUCCESS, "SetEntriesInAclW failed: %u\n", res);
+ ok(new_acl != NULL, "returned acl was NULL\n");
+
+ access2 = NULL;
+ res = pGetExplicitEntriesFromAclW(new_acl, &count, &access2);
+ ok(res == ERROR_SUCCESS, "GetExplicitEntriesFromAclW failed with error %d\n", GetLastError());
+ ok(count == 2, "Expected count == 2, got %d\n", count);
+ ok(access2[0].grfAccessMode == GRANT_ACCESS, "Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
+ ok(access2[0].grfAccessPermissions == KEY_WRITE, "Expected KEY_WRITE, got %d\n", access2[0].grfAccessPermissions);
+ ok(access2[0].Trustee.TrusteeType == TRUSTEE_IS_UNKNOWN,
+ "Expected TRUSTEE_IS_UNKNOWN trustee type, got %d\n", access2[0].Trustee.TrusteeType);
+ ok(access2[0].Trustee.TrusteeForm == TRUSTEE_IS_SID, "Expected SID trustee, got %d\n", access2[0].Trustee.TrusteeForm);
+ ok(access2[0].grfInheritance == NO_INHERITANCE, "Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
+ ok(EqualSid(access2[0].Trustee.ptstrName, everyone_sid), "Expected equal SIDs\n");
+ LocalFree(access2);
+ LocalFree(new_acl);
+
+ access.Trustee.TrusteeForm = TRUSTEE_IS_NAME;
+ access.Trustee.ptstrName = (LPWSTR)wszCurrentUser;
+ res = pSetEntriesInAclW(1, &access, old_acl, &new_acl);
+ ok(res == ERROR_SUCCESS, "SetEntriesInAclW failed: %u\n", res);
+ ok(new_acl != NULL, "returned acl was NULL\n");
+
+ access2 = NULL;
+ res = pGetExplicitEntriesFromAclW(new_acl, &count, &access2);
+ ok(res == ERROR_SUCCESS, "GetExplicitEntriesFromAclW failed with error %d\n", GetLastError());
+ ok(count == 2, "Expected count == 2, got %d\n", count);
+ ok(access2[0].grfAccessMode == GRANT_ACCESS, "Expected GRANT_ACCESS, got %d\n", access2[0].grfAccessMode);
+ ok(access2[0].grfAccessPermissions == KEY_WRITE, "Expected KEY_WRITE, got %d\n", access2[0].grfAccessPermissions);
+ ok(access2[0].Trustee.TrusteeType == TRUSTEE_IS_UNKNOWN,
+ "Expected TRUSTEE_IS_UNKNOWN trustee type, got %d\n", access2[0].Trustee.TrusteeType);
+ ok(access2[0].Trustee.TrusteeForm == TRUSTEE_IS_SID, "Expected SID trustee, got %d\n", access2[0].Trustee.TrusteeForm);
+ ok(access2[0].grfInheritance == NO_INHERITANCE, "Expected NO_INHERITANCE, got %x\n", access2[0].grfInheritance);
+ LocalFree(access2);
+ LocalFree(new_acl);
+
+ access.grfAccessMode = REVOKE_ACCESS;
+ access.Trustee.TrusteeForm = TRUSTEE_IS_SID;
+ access.Trustee.ptstrName = users_sid;
+ res = pSetEntriesInAclW(1, &access, old_acl, &new_acl);
+ ok(res == ERROR_SUCCESS, "SetEntriesInAclW failed: %u\n", res);
+ ok(new_acl != NULL, "returned acl was NULL\n");
+
+ access2 = (void *)0xdeadbeef;
+ res = pGetExplicitEntriesFromAclW(new_acl, &count, &access2);
+ ok(res == ERROR_SUCCESS, "GetExplicitEntriesFromAclW failed with error %d\n", GetLastError());
+ ok(count == 0, "Expected count == 0, got %d\n", count);
+ ok(access2 == NULL, "access2 was not NULL\n");
+ LocalFree(new_acl);
+
+ FreeSid(users_sid);
+ FreeSid(everyone_sid);
+ HeapFree(GetProcessHeap(), 0, old_acl);
+}
+
START_TEST(security)
{
init();
@@ -6424,4 +6565,5 @@ START_TEST(security)
test_system_security_access();
test_GetSidIdentifierAuthority();
test_pseudo_tokens();
+ test_GetExplicitEntriesFromAclW();
}
--
2.9.0

View File

@@ -0,0 +1 @@
Fixes: Implement semi-stub for advapi32.GetExplicitEntriesFromAclW

View File

@@ -1,4 +1,4 @@
From 446107bd1bda89cfdb656dd1f0e06dcb328c00ed Mon Sep 17 00:00:00 2001
From 8467721c604c1ed81f31b6675b143e98321b368b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 15 Jan 2016 13:01:15 +0100
Subject: kernelbase: Add dll and add stub for QuirkIsEnabled.
@@ -22,7 +22,7 @@ index b9caed0..2beb34b 100644
+C_SRCS = \
+ misc.c
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index 23ca440..19cf953 100644
index f104030..8e62b4a 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -1,3 +1,6 @@
@@ -250,7 +250,7 @@ index 23ca440..19cf953 100644
@ stdcall DebugBreak() kernel32.DebugBreak
@ stdcall DecodePointer(ptr) kernel32.DecodePointer
+@ stub DecodeRemotePointer
@ stub DecodeSystemPointer
@ stdcall DecodeSystemPointer(ptr) kernel32.DecodeSystemPointer
@ stdcall DefineDosDeviceW(long wstr wstr) kernel32.DefineDosDeviceW
+@ stdcall DelayLoadFailureHook(str str) kernel32.DelayLoadFailureHook
+@ stub DelayLoadFailureHookLookup
@@ -294,7 +294,7 @@ index 23ca440..19cf953 100644
+@ stub EmptyWorkingSet
@ stdcall EncodePointer(ptr) kernel32.EncodePointer
+@ stub EncodeRemotePointer
@ stub EncodeSystemPointer
@ stdcall EncodeSystemPointer(ptr) kernel32.EncodeSystemPointer
+@ stub EnterCriticalPolicySectionInternal
@ stdcall EnterCriticalSection(ptr) kernel32.EnterCriticalSection
+@ stub EnterSynchronizationBarrier
@@ -1379,7 +1379,7 @@ index 23ca440..19cf953 100644
@ stdcall SetCriticalSectionSpinCount(ptr long) kernel32.SetCriticalSectionSpinCount
@ stdcall SetCurrentDirectoryA(str) kernel32.SetCurrentDirectoryA
@ stdcall SetCurrentDirectoryW(wstr) kernel32.SetCurrentDirectoryW
@ stub SetDefaultDllDirectories
@ stdcall SetDefaultDllDirectories(long) kernel32.SetDefaultDllDirectories
+@ stub SetDynamicTimeZoneInformation
@ stdcall SetEndOfFile(long) kernel32.SetEndOfFile
@ stub SetEnvironmentStringsW
@@ -1770,17 +1770,17 @@ index 6b6ead2..7c2a9d1 100644
422 stdcall -noname SHGlobalCounterCreateNamedA(str long)
423 stdcall -noname SHGlobalCounterCreateNamedW(wstr long)
diff --git a/tools/make_specfiles b/tools/make_specfiles
index d658f30..c1a0f15 100755
index f3b5c5e..8a7e514 100755
--- a/tools/make_specfiles
+++ b/tools/make_specfiles
@@ -195,6 +195,7 @@ my @dll_groups =
@@ -230,6 +230,7 @@ my @dll_groups =
[
"kernel32",
"advapi32",
+ "shlwapi",
"user32",
"kernelbase",
],
"api-ms-win-core-bem-l1-1-0",
--
2.9.0

View File

@@ -1,4 +1,4 @@
From 2f51e46724cd93eedfa9024dc3f88bfdd2eb3172 Mon Sep 17 00:00:00 2001
From 88298227180510b5eee8b129ae964f14bf565d64 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 15 Jan 2016 13:07:09 +0100
Subject: api-ms-win-core-quirks-l1-1-0: Add dll.
@@ -13,17 +13,17 @@ Subject: api-ms-win-core-quirks-l1-1-0: Add dll.
create mode 100644 dlls/api-ms-win-core-quirks-l1-1-0/api-ms-win-core-quirks-l1-1-0.spec
diff --git a/configure.ac b/configure.ac
index 7374b74..1cf8036 100644
index e97cd17..6d51b3f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2729,6 +2729,7 @@ WINE_CONFIG_DLL(api-ms-win-core-processthreads-l1-1-1)
@@ -2717,6 +2717,7 @@ WINE_CONFIG_DLL(api-ms-win-core-processthreads-l1-1-1)
WINE_CONFIG_DLL(api-ms-win-core-processthreads-l1-1-2)
WINE_CONFIG_DLL(api-ms-win-core-profile-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-psapi-l1-1-0)
+WINE_CONFIG_DLL(api-ms-win-core-quirks-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-realtime-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-registry-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-rtlsupport-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-rtlsupport-l1-2-0)
WINE_CONFIG_DLL(api-ms-win-core-registryuserspecific-l1-1-0)
diff --git a/dlls/api-ms-win-core-quirks-l1-1-0/Makefile.in b/dlls/api-ms-win-core-quirks-l1-1-0/Makefile.in
new file mode 100644
index 0000000..9486e8b
@@ -46,11 +46,11 @@ index 0000000..54ce373
+@ stub QuirkIsEnabledForPackage2
+@ stub QuirkIsEnabledForProcess
diff --git a/tools/make_specfiles b/tools/make_specfiles
index 572c0b8..e62c2cd 100755
index 8a7e514..3316f76 100755
--- a/tools/make_specfiles
+++ b/tools/make_specfiles
@@ -225,6 +225,10 @@ my @dll_groups =
"kernelbase",
@@ -236,6 +236,10 @@ my @dll_groups =
"api-ms-win-core-bem-l1-1-0",
],
[
+ "kernelbase",
@@ -61,5 +61,5 @@ index 572c0b8..e62c2cd 100755
"api-ms-win-downlevel-ole32-l1-1-0",
"api-ms-win-core-com-l1-1-0",
--
2.6.4
2.9.0

View File

@@ -1,4 +1,4 @@
From fa095669c3bad1091523c6133c6a12541555dfbd Mon Sep 17 00:00:00 2001
From e08bd12d12e5e3159ce9efa848cad6118951ff5e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 15 Jan 2016 13:37:26 +0100
Subject: api-ms-win-appmodel-runtime-l1-1-1: Add new dll.
@@ -13,17 +13,17 @@ Subject: api-ms-win-appmodel-runtime-l1-1-1: Add new dll.
create mode 100644 dlls/api-ms-win-appmodel-runtime-l1-1-1/api-ms-win-appmodel-runtime-l1-1-1.spec
diff --git a/configure.ac b/configure.ac
index 1ebf17a..2d2108b 100644
index 6d51b3f..9be829f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2623,6 +2623,7 @@ WINE_CONFIG_DLL(advpack,,[implib])
@@ -2650,6 +2650,7 @@ WINE_CONFIG_DLL(advpack,,[implib])
WINE_CONFIG_TEST(dlls/advpack/tests)
WINE_CONFIG_DLL(amstream,,[clean])
WINE_CONFIG_TEST(dlls/amstream/tests)
+WINE_CONFIG_DLL(api-ms-win-appmodel-runtime-l1-1-1)
WINE_CONFIG_DLL(api-ms-win-core-com-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-com-l1-1-1)
WINE_CONFIG_DLL(api-ms-win-core-console-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-apiquery-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-appcompat-l1-1-1)
WINE_CONFIG_DLL(api-ms-win-core-appinit-l1-1-0)
diff --git a/dlls/api-ms-win-appmodel-runtime-l1-1-1/Makefile.in b/dlls/api-ms-win-appmodel-runtime-l1-1-1/Makefile.in
new file mode 100644
index 0000000..289d96f
@@ -74,17 +74,17 @@ index 0000000..2e5fbf1
+@ stub VerifyPackageId
+@ stub VerifyPackageRelativeApplicationId
diff --git a/tools/make_specfiles b/tools/make_specfiles
index 05010cc..d2158d8 100755
index 3316f76..5a58eed 100755
--- a/tools/make_specfiles
+++ b/tools/make_specfiles
@@ -161,6 +161,7 @@ my @dll_groups =
@@ -137,6 +137,7 @@ my @dll_groups =
],
[
"kernel32",
+ "api-ms-win-appmodel-runtime-l1-1-1",
"api-ms-win-downlevel-normaliz-l1-1-0",
"api-ms-win-core-processthreads-l1-1-0",
"api-ms-win-core-debug-l1-1-0",
"api-ms-win-core-appcompat-l1-1-1",
--
2.6.4
2.9.0

View File

@@ -1,55 +0,0 @@
From 60ecb8d166d2b940052160dcb250cc458ba2f728 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 15 Jan 2016 13:45:05 +0100
Subject: api-ms-win-core-apiquery-l1-1-0: Add dll.
---
configure.ac | 1 +
dlls/api-ms-win-core-apiquery-l1-1-0/Makefile.in | 1 +
.../api-ms-win-core-apiquery-l1-1-0/api-ms-win-core-apiquery-l1-1-0.spec | 1 +
tools/make_specfiles | 1 +
4 files changed, 4 insertions(+)
create mode 100644 dlls/api-ms-win-core-apiquery-l1-1-0/Makefile.in
create mode 100644 dlls/api-ms-win-core-apiquery-l1-1-0/api-ms-win-core-apiquery-l1-1-0.spec
diff --git a/configure.ac b/configure.ac
index 6ab0640..ce22c64 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2626,6 +2626,7 @@ WINE_CONFIG_TEST(dlls/advpack/tests)
WINE_CONFIG_DLL(amstream,,[clean])
WINE_CONFIG_TEST(dlls/amstream/tests)
WINE_CONFIG_DLL(api-ms-win-appmodel-runtime-l1-1-1)
+WINE_CONFIG_DLL(api-ms-win-core-apiquery-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-com-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-com-l1-1-1)
WINE_CONFIG_DLL(api-ms-win-core-console-l1-1-0)
diff --git a/dlls/api-ms-win-core-apiquery-l1-1-0/Makefile.in b/dlls/api-ms-win-core-apiquery-l1-1-0/Makefile.in
new file mode 100644
index 0000000..492a265
--- /dev/null
+++ b/dlls/api-ms-win-core-apiquery-l1-1-0/Makefile.in
@@ -0,0 +1 @@
+MODULE = api-ms-win-core-apiquery-l1-1-0.dll
diff --git a/dlls/api-ms-win-core-apiquery-l1-1-0/api-ms-win-core-apiquery-l1-1-0.spec b/dlls/api-ms-win-core-apiquery-l1-1-0/api-ms-win-core-apiquery-l1-1-0.spec
new file mode 100644
index 0000000..1d99dd7
--- /dev/null
+++ b/dlls/api-ms-win-core-apiquery-l1-1-0/api-ms-win-core-apiquery-l1-1-0.spec
@@ -0,0 +1 @@
+@ stdcall ApiSetQueryApiSetPresence(ptr ptr) ntdll.ApiSetQueryApiSetPresence
diff --git a/tools/make_specfiles b/tools/make_specfiles
index 13a5674..cd0d761 100755
--- a/tools/make_specfiles
+++ b/tools/make_specfiles
@@ -264,6 +264,7 @@ my @dll_groups =
"msvcrt",
"ntdll",
"ntoskrnl.exe",
+ "api-ms-win-core-apiquery-l1-1-0",
"api-ms-win-core-rtlsupport-l1-1-0",
"api-ms-win-core-rtlsupport-l1-2-0",
],
--
2.6.4

View File

@@ -1,4 +1,4 @@
From d8b9e665f8ec796e7232700e0cc9df5b6b945c77 Mon Sep 17 00:00:00 2001
From 55213631f626468dae79789336fb421aed983dc5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 16 Jan 2016 20:03:48 +0100
Subject: api-ms-win-core-heap-l2-1-0: Add dll.
@@ -13,10 +13,10 @@ Subject: api-ms-win-core-heap-l2-1-0: Add dll.
create mode 100644 dlls/api-ms-win-core-heap-l2-1-0/api-ms-win-core-heap-l2-1-0.spec
diff --git a/configure.ac b/configure.ac
index 36d95c9..4fe0992 100644
index 6b777c0..35e0636 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2645,6 +2645,7 @@ WINE_CONFIG_DLL(api-ms-win-core-file-l2-1-1)
@@ -2676,6 +2676,7 @@ WINE_CONFIG_DLL(api-ms-win-core-file-l2-1-1)
WINE_CONFIG_DLL(api-ms-win-core-handle-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-heap-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-heap-l1-2-0)
@@ -45,17 +45,17 @@ index 0000000..81308d2
+@ stdcall LocalReAlloc(long long long) kernel32.LocalReAlloc
+@ stdcall LocalUnlock(long) kernel32.LocalUnlock
diff --git a/tools/make_specfiles b/tools/make_specfiles
index 03e753f..d945fbe 100755
index 0bae7d4..cd4269e 100755
--- a/tools/make_specfiles
+++ b/tools/make_specfiles
@@ -185,6 +185,7 @@ my @dll_groups =
@@ -169,6 +169,7 @@ my @dll_groups =
"api-ms-win-core-handle-l1-1-0",
"api-ms-win-core-heap-l1-1-0",
"api-ms-win-core-heap-l1-2-0",
+ "api-ms-win-core-heap-l2-1-0",
"api-ms-win-core-heap-obsolete-l1-1-0",
"api-ms-win-core-io-l1-1-0",
"api-ms-win-core-io-l1-1-1",
"api-ms-win-core-kernel32-legacy-l1-1-0",
--
2.6.4
2.9.0

View File

@@ -1,4 +1,4 @@
From e7dfb60036cd8a437bbe586507ea7f895c0da0e0 Mon Sep 17 00:00:00 2001
From 8f6353a291eaa4d1b61d2063c93a294b7deef7a7 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 17 Jan 2016 20:17:46 +0100
Subject: shcore: Add dll.
@@ -13,10 +13,10 @@ Subject: shcore: Add dll.
create mode 100644 dlls/shcore/shcore.spec
diff --git a/configure.ac b/configure.ac
index 7daf5a8..d5f8e7d 100644
index 04015a1..557f26b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3238,6 +3238,7 @@ WINE_CONFIG_TEST(dlls/setupapi/tests)
@@ -3289,6 +3289,7 @@ WINE_CONFIG_TEST(dlls/setupapi/tests)
WINE_CONFIG_DLL(setupx.dll16,enable_win16)
WINE_CONFIG_DLL(sfc,,[implib])
WINE_CONFIG_DLL(sfc_os,,[implib])
@@ -121,10 +121,10 @@ index 0000000..12a4ef3
+@ stub SetProcessReference
+@ stub UnregisterScaleChangeEvent
diff --git a/tools/make_specfiles b/tools/make_specfiles
index ce6dc2f..cf8bc20 100755
index 2c64243..611aaca 100755
--- a/tools/make_specfiles
+++ b/tools/make_specfiles
@@ -261,6 +261,11 @@ my @dll_groups =
@@ -238,6 +238,11 @@ my @dll_groups =
"api-ms-win-core-url-l1-1-0",
],
[
@@ -134,8 +134,8 @@ index ce6dc2f..cf8bc20 100755
+ ],
+ [
"user32",
"api-ms-win-core-stringansi-l1-1-0",
"api-ms-win-core-string-l2-1-0",
"api-ms-win-downlevel-user32-l1-1-0",
--
2.7.1
2.9.0

View File

@@ -1,4 +1,4 @@
From 9a4670c39fd3973522c8c5f7bb9252129aab0967 Mon Sep 17 00:00:00 2001
From 49eb261c42d89a4c755914a40af797eb0b04d816 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 17 Jan 2016 17:02:41 +0100
Subject: api-ms-win-shcore-obsolete-l1-1-0: Add dll.
@@ -13,17 +13,17 @@ Subject: api-ms-win-shcore-obsolete-l1-1-0: Add dll.
create mode 100644 dlls/api-ms-win-shcore-obsolete-l1-1-0/api-ms-win-shcore-obsolete-l1-1-0.spec
diff --git a/configure.ac b/configure.ac
index d5f8e7d..ec0afd4 100644
index e8b9c2a..736c744 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2735,6 +2735,7 @@ WINE_CONFIG_DLL(api-ms-win-security-sddl-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-service-core-l1-1-1)
WINE_CONFIG_DLL(api-ms-win-service-management-l1-1-0)
@@ -2801,6 +2801,7 @@ WINE_CONFIG_DLL(api-ms-win-service-management-l2-1-0)
WINE_CONFIG_DLL(api-ms-win-service-private-l1-1-1)
WINE_CONFIG_DLL(api-ms-win-service-winsvc-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-service-winsvc-l1-2-0)
+WINE_CONFIG_DLL(api-ms-win-shcore-obsolete-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-shell-shellcom-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-shell-shellfolders-l1-1-0)
WINE_CONFIG_DLL(apphelp)
WINE_CONFIG_TEST(dlls/apphelp/tests)
WINE_CONFIG_DLL(appwiz.cpl,,[clean])
diff --git a/dlls/api-ms-win-shcore-obsolete-l1-1-0/Makefile.in b/dlls/api-ms-win-shcore-obsolete-l1-1-0/Makefile.in
new file mode 100644
index 0000000..6588d13
@@ -41,10 +41,10 @@ index 0000000..edb8143
+@ stdcall SHStrDupA(str ptr) shcore.SHStrDupA
+@ stdcall SHStrDupW(wstr ptr) shcore.SHStrDupW
diff --git a/tools/make_specfiles b/tools/make_specfiles
index cf8bc20..b5aa9d6 100755
index 6fb6376..c19993d 100755
--- a/tools/make_specfiles
+++ b/tools/make_specfiles
@@ -266,6 +266,10 @@ my @dll_groups =
@@ -270,6 +270,10 @@ my @dll_groups =
"shcore",
],
[
@@ -53,8 +53,8 @@ index cf8bc20..b5aa9d6 100755
+ ],
+ [
"user32",
"api-ms-win-core-stringansi-l1-1-0",
"api-ms-win-core-string-l2-1-0",
"api-ms-win-downlevel-user32-l1-1-0",
--
2.7.1
2.9.0

View File

@@ -1,4 +1,4 @@
From 7100e12fb3dcc986f210cf0a41e462fbcc122906 Mon Sep 17 00:00:00 2001
From c0c54145e9b77cabfe520050f1a383659abd679f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Tue, 19 Jan 2016 16:19:11 +0100
Subject: api-ms-win-shcore-thread-l1-1-0: Add dll
@@ -13,17 +13,17 @@ Subject: api-ms-win-shcore-thread-l1-1-0: Add dll
create mode 100644 dlls/api-ms-win-shcore-thread-l1-1-0/api-ms-win-shcore-thread-l1-1-0.spec
diff --git a/configure.ac b/configure.ac
index 442335d..d2bac7d 100644
index 3847ab8..876b232 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2751,6 +2751,7 @@ WINE_CONFIG_DLL(api-ms-win-service-core-l1-1-1)
WINE_CONFIG_DLL(api-ms-win-service-management-l1-1-0)
@@ -2797,6 +2797,7 @@ WINE_CONFIG_DLL(api-ms-win-service-management-l2-1-0)
WINE_CONFIG_DLL(api-ms-win-service-winsvc-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-service-winsvc-l1-2-0)
WINE_CONFIG_DLL(api-ms-win-shcore-obsolete-l1-1-0)
+WINE_CONFIG_DLL(api-ms-win-shcore-thread-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-shell-shellcom-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-shell-shellfolders-l1-1-0)
WINE_CONFIG_DLL(apphelp)
WINE_CONFIG_TEST(dlls/apphelp/tests)
WINE_CONFIG_DLL(appwiz.cpl,,[clean])
diff --git a/dlls/api-ms-win-shcore-thread-l1-1-0/Makefile.in b/dlls/api-ms-win-shcore-thread-l1-1-0/Makefile.in
new file mode 100644
index 0000000..0a20ccf
@@ -46,10 +46,10 @@ index 0000000..1533005
+@ stdcall SHSetThreadRef(ptr) shcore.SHSetThreadRef
+@ stub SetProcessReference
diff --git a/tools/make_specfiles b/tools/make_specfiles
index f7d7ede..c7761b9 100755
index e16a378..3fd4f36 100755
--- a/tools/make_specfiles
+++ b/tools/make_specfiles
@@ -266,6 +266,7 @@ my @dll_groups =
@@ -268,6 +268,7 @@ my @dll_groups =
[
"shcore",
"api-ms-win-shcore-obsolete-l1-1-0",
@@ -58,5 +58,5 @@ index f7d7ede..c7761b9 100755
[
"user32",
--
2.7.1
2.9.0

View File

@@ -1,4 +1,4 @@
From ffe4994aea8261274e79e142c0ba37df87ffdebb Mon Sep 17 00:00:00 2001
From 116f061509b35ca571b5a7b19477d82c94437502 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 21 Jan 2016 00:52:33 +0100
Subject: api-ms-win-core-shlwapi-obsolete-l1-2-0: Add dll.
@@ -13,17 +13,17 @@ Subject: api-ms-win-core-shlwapi-obsolete-l1-2-0: Add dll.
create mode 100644 dlls/api-ms-win-core-shlwapi-obsolete-l1-2-0/api-ms-win-core-shlwapi-obsolete-l1-2-0.spec
diff --git a/configure.ac b/configure.ac
index dd3074a..2ba3014 100644
index b7361d1..1ceda28 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2680,6 +2680,7 @@ WINE_CONFIG_DLL(api-ms-win-core-registry-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-rtlsupport-l1-1-0)
@@ -2716,6 +2716,7 @@ WINE_CONFIG_DLL(api-ms-win-core-rtlsupport-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-rtlsupport-l1-2-0)
WINE_CONFIG_DLL(api-ms-win-core-shlwapi-legacy-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-shlwapi-obsolete-l1-1-0)
+WINE_CONFIG_DLL(api-ms-win-core-shlwapi-obsolete-l1-2-0)
WINE_CONFIG_DLL(api-ms-win-core-sidebyside-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-string-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-core-string-l2-1-0)
WINE_CONFIG_DLL(api-ms-win-core-synch-l1-1-0)
diff --git a/dlls/api-ms-win-core-shlwapi-obsolete-l1-2-0/Makefile.in b/dlls/api-ms-win-core-shlwapi-obsolete-l1-2-0/Makefile.in
new file mode 100644
index 0000000..3f39b0b
@@ -97,17 +97,17 @@ index 0000000..8b8b520
+@ stdcall StrTrimA(str str) shlwapi.StrTrimA
+@ stdcall StrTrimW(wstr wstr) shlwapi.StrTrimW
diff --git a/tools/make_specfiles b/tools/make_specfiles
index 4a08e9c..3777632 100755
index 8b202da..0f58756 100755
--- a/tools/make_specfiles
+++ b/tools/make_specfiles
@@ -258,6 +258,7 @@ my @dll_groups =
"api-ms-win-downlevel-shlwapi-l1-1-0",
"api-ms-win-downlevel-shlwapi-l2-1-0",
@@ -235,6 +235,7 @@ my @dll_groups =
"api-ms-win-core-registryuserspecific-l1-1-0",
"api-ms-win-core-shlwapi-legacy-l1-1-0",
"api-ms-win-core-shlwapi-obsolete-l1-1-0",
+ "api-ms-win-core-shlwapi-obsolete-l1-2-0",
"api-ms-win-core-url-l1-1-0",
],
[
--
2.7.1
2.9.0

View File

@@ -1,4 +1,4 @@
From 3c6d2e90631603492ca4aab85db1369f6b8377ac Mon Sep 17 00:00:00 2001
From dece0c4c7519885d8e6da604de5735f1ebed7769 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 23 Jan 2016 20:56:53 +0100
Subject: api-ms-win-shcore-stream-l1-1-0: Add dll
@@ -13,17 +13,17 @@ Subject: api-ms-win-shcore-stream-l1-1-0: Add dll
create mode 100644 dlls/api-ms-win-shcore-stream-l1-1-0/api-ms-win-shcore-stream-l1-1-0.spec
diff --git a/configure.ac b/configure.ac
index 0aeb5dd..ecd03c7 100644
index d88aa46..f5d8f62 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2734,6 +2734,7 @@ WINE_CONFIG_DLL(api-ms-win-service-core-l1-1-1)
WINE_CONFIG_DLL(api-ms-win-service-management-l1-1-0)
@@ -2798,6 +2798,7 @@ WINE_CONFIG_DLL(api-ms-win-service-management-l2-1-0)
WINE_CONFIG_DLL(api-ms-win-service-winsvc-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-service-winsvc-l1-2-0)
WINE_CONFIG_DLL(api-ms-win-shcore-obsolete-l1-1-0)
+WINE_CONFIG_DLL(api-ms-win-shcore-stream-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-shcore-thread-l1-1-0)
WINE_CONFIG_DLL(apphelp)
WINE_CONFIG_TEST(dlls/apphelp/tests)
WINE_CONFIG_DLL(api-ms-win-shell-shellcom-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-shell-shellfolders-l1-1-0)
diff --git a/dlls/api-ms-win-shcore-stream-l1-1-0/Makefile.in b/dlls/api-ms-win-shcore-stream-l1-1-0/Makefile.in
new file mode 100644
index 0000000..df2caad
@@ -53,10 +53,10 @@ index 0000000..1ee9dd3
+@ stdcall SHOpenRegStreamA(long str str long) shcore.SHOpenRegStreamA
+@ stdcall SHOpenRegStreamW(long wstr wstr long) shcore.SHOpenRegStreamW
diff --git a/tools/make_specfiles b/tools/make_specfiles
index 46284d5..289b980 100755
index 6a08495..dc429d7 100755
--- a/tools/make_specfiles
+++ b/tools/make_specfiles
@@ -268,6 +268,7 @@ my @dll_groups =
@@ -270,6 +270,7 @@ my @dll_groups =
"shcore",
"api-ms-win-shcore-obsolete-l1-1-0",
"api-ms-win-shcore-thread-l1-1-0",
@@ -65,5 +65,5 @@ index 46284d5..289b980 100755
[
"user32",
--
2.6.4
2.9.0

View File

@@ -1,4 +1,4 @@
From 7e4ebcb33dad0af77407a89d2691a1c0c9690688 Mon Sep 17 00:00:00 2001
From 11664cbe8489c457a4b286253155ba6837269953 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 23 Jan 2016 21:05:14 +0100
Subject: api-ms-win-rtcore-ntuser-window-l1-1-0: Add dll
@@ -13,17 +13,17 @@ Subject: api-ms-win-rtcore-ntuser-window-l1-1-0: Add dll
create mode 100644 dlls/api-ms-win-rtcore-ntuser-window-l1-1-0/api-ms-win-rtcore-ntuser-window-l1-1-0.spec
diff --git a/configure.ac b/configure.ac
index 402b642..1c707b3 100644
index 6685769..356dd05 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2728,6 +2728,7 @@ WINE_CONFIG_DLL(api-ms-win-downlevel-version-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-eventing-classicprovider-l1-1-0)
@@ -2782,6 +2782,7 @@ WINE_CONFIG_DLL(api-ms-win-eventing-controller-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-eventing-provider-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-eventlog-legacy-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-ntuser-dc-access-l1-1-0)
+WINE_CONFIG_DLL(api-ms-win-rtcore-ntuser-window-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-security-audit-l1-1-1)
WINE_CONFIG_DLL(api-ms-win-security-base-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-security-base-l1-2-0)
WINE_CONFIG_DLL(api-ms-win-security-lsalookup-l1-1-0)
diff --git a/dlls/api-ms-win-rtcore-ntuser-window-l1-1-0/Makefile.in b/dlls/api-ms-win-rtcore-ntuser-window-l1-1-0/Makefile.in
new file mode 100644
index 0000000..9641c2a
@@ -119,10 +119,10 @@ index 0000000..b7575c6
+@ stdcall WaitMessage() user32.WaitMessage
+@ stdcall WindowFromPoint(int64) user32.WindowFromPoint
diff --git a/tools/make_specfiles b/tools/make_specfiles
index 4a782ba..090640b 100755
index 1b1e722..56c813a 100755
--- a/tools/make_specfiles
+++ b/tools/make_specfiles
@@ -277,6 +277,7 @@ my @dll_groups =
@@ -269,6 +269,7 @@ my @dll_groups =
"api-ms-win-core-string-l2-1-0",
"api-ms-win-downlevel-user32-l1-1-0",
"api-ms-win-ntuser-dc-access-l1-1-0",
@@ -131,5 +131,5 @@ index 4a782ba..090640b 100755
],
[
--
2.7.1
2.9.0

View File

@@ -1,4 +1,4 @@
From b25de463a2989e3c328f6250e109fa143782fcc6 Mon Sep 17 00:00:00 2001
From c67410351d98e086e96dba69cc1a5f351939c017 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 23 Jan 2016 21:08:48 +0100
Subject: api-ms-win-rtcore-ntuser-draw-l1-1-0: Add dll.
@@ -13,17 +13,17 @@ Subject: api-ms-win-rtcore-ntuser-draw-l1-1-0: Add dll.
create mode 100644 dlls/api-ms-win-rtcore-ntuser-draw-l1-1-0/api-ms-win-rtcore-ntuser-draw-l1-1-0.spec
diff --git a/configure.ac b/configure.ac
index bf93e84..628ae61 100644
index c6914fa..78bbc39 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2728,6 +2728,7 @@ WINE_CONFIG_DLL(api-ms-win-downlevel-version-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-eventing-classicprovider-l1-1-0)
@@ -2782,6 +2782,7 @@ WINE_CONFIG_DLL(api-ms-win-eventing-controller-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-eventing-provider-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-eventlog-legacy-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-ntuser-dc-access-l1-1-0)
+WINE_CONFIG_DLL(api-ms-win-rtcore-ntuser-draw-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-rtcore-ntuser-window-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-security-audit-l1-1-1)
WINE_CONFIG_DLL(api-ms-win-security-base-l1-1-0)
WINE_CONFIG_DLL(api-ms-win-security-base-l1-2-0)
diff --git a/dlls/api-ms-win-rtcore-ntuser-draw-l1-1-0/Makefile.in b/dlls/api-ms-win-rtcore-ntuser-draw-l1-1-0/Makefile.in
new file mode 100644
index 0000000..956f2f3
@@ -39,10 +39,10 @@ index 0000000..59900a9
@@ -0,0 +1 @@
+@ stdcall RedrawWindow(long ptr long long) user32.RedrawWindow
diff --git a/tools/make_specfiles b/tools/make_specfiles
index ed6d72a..bbf2b5e 100755
index d222f88..e175d2e 100755
--- a/tools/make_specfiles
+++ b/tools/make_specfiles
@@ -277,6 +277,7 @@ my @dll_groups =
@@ -269,6 +269,7 @@ my @dll_groups =
"api-ms-win-core-string-l2-1-0",
"api-ms-win-downlevel-user32-l1-1-0",
"api-ms-win-ntuser-dc-access-l1-1-0",
@@ -51,5 +51,5 @@ index ed6d72a..bbf2b5e 100755
"ext-ms-win-ntuser-mouse-l1-1-0",
"ext-ms-win-rtcore-ntuser-syscolors-l1-1-0",
--
2.7.1
2.9.0

View File

@@ -1,4 +1,4 @@
From 88367d179496bb178f97591000ef5e56e58a9322 Mon Sep 17 00:00:00 2001
From 5989f92d5a873732acb8cb9af4011ce7e145bbb3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 23 Jan 2016 21:13:02 +0100
Subject: ext-ms-win-kernel32-package-current-l1-1-0: Add dll.
@@ -13,10 +13,10 @@ Subject: ext-ms-win-kernel32-package-current-l1-1-0: Add dll.
create mode 100644 dlls/ext-ms-win-kernel32-package-current-l1-1-0/ext-ms-win-kernel32-package-current-l1-1-0.spec
diff --git a/configure.ac b/configure.ac
index bb63b0d..e7c55db 100644
index d2abe1d..dc1b078 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2939,6 +2939,7 @@ WINE_CONFIG_DLL(explorerframe,,[clean])
@@ -2958,6 +2958,7 @@ WINE_CONFIG_DLL(explorerframe,,[clean])
WINE_CONFIG_TEST(dlls/explorerframe/tests)
WINE_CONFIG_DLL(ext-ms-win-appmodel-usercontext-l1-1-0)
WINE_CONFIG_DLL(ext-ms-win-gdi-devcaps-l1-1-0)
@@ -40,17 +40,17 @@ index 0000000..2156c27
+@ stdcall GetCurrentPackageId(ptr ptr) kernel32.GetCurrentPackageId
+@ stub GetCurrentPackageInfo
diff --git a/tools/make_specfiles b/tools/make_specfiles
index b364446..5b2418b 100755
index 1337fca..756ae00 100755
--- a/tools/make_specfiles
+++ b/tools/make_specfiles
@@ -214,6 +214,7 @@ my @dll_groups =
"api-ms-win-core-wow64-l1-1-0",
@@ -180,6 +180,7 @@ my @dll_groups =
"api-ms-win-core-xstate-l2-1-0",
"api-ms-win-core-errorhandling-l1-1-2",
"api-ms-win-core-util-l1-1-0",
+ "ext-ms-win-kernel32-package-current-l1-1-0",
],
[
"kernel32",
--
2.6.4
2.9.0

View File

@@ -0,0 +1,453 @@
From 9dc913d2ae5fca9a46acc67d896cf317389f7d97 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 25 Aug 2016 19:41:15 +0200
Subject: d3d11: Add stub ID3D11Texture2D and ID3D10Texture2D interfaces.
---
dlls/d3d11/d3d11_private.h | 21 +++
dlls/d3d11/device.c | 36 ++++-
dlls/d3d11/texture.c | 340 +++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 393 insertions(+), 4 deletions(-)
diff --git a/dlls/d3d11/d3d11_private.h b/dlls/d3d11/d3d11_private.h
index 4af0faa..6bd7282 100644
--- a/dlls/d3d11/d3d11_private.h
+++ b/dlls/d3d11/d3d11_private.h
@@ -104,6 +104,27 @@ void skip_dword_unknown(const char **ptr, unsigned int count) DECLSPEC_HIDDEN;
HRESULT parse_dxbc(const char *data, SIZE_T data_size,
HRESULT (*chunk_handler)(const char *data, DWORD data_size, DWORD tag, void *ctx), void *ctx) DECLSPEC_HIDDEN;
+/* ID3D11Texture1D, ID3D10Texture1D */
+struct d3d_texture1d
+{
+ ID3D11Texture1D ID3D11Texture1D_iface;
+ ID3D10Texture1D ID3D10Texture1D_iface;
+ LONG refcount;
+
+ D3D11_TEXTURE1D_DESC desc;
+ ID3D11Device *device;
+};
+
+static inline struct d3d_texture1d *impl_from_ID3D10Texture1D(ID3D10Texture1D *iface)
+{
+ return CONTAINING_RECORD(iface, struct d3d_texture1d, ID3D10Texture1D_iface);
+}
+
+HRESULT d3d_texture1d_create(struct d3d_device *device, const D3D11_TEXTURE1D_DESC *desc,
+ const D3D11_SUBRESOURCE_DATA *data, struct d3d_texture1d **texture) DECLSPEC_HIDDEN;
+struct d3d_texture1d *unsafe_impl_from_ID3D11Texture1D(ID3D11Texture1D *iface) DECLSPEC_HIDDEN;
+struct d3d_texture1d *unsafe_impl_from_ID3D10Texture1D(ID3D10Texture1D *iface) DECLSPEC_HIDDEN;
+
/* ID3D11Texture2D, ID3D10Texture2D */
struct d3d_texture2d
{
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
index 9a42c8b..8c2aab6 100644
--- a/dlls/d3d11/device.c
+++ b/dlls/d3d11/device.c
@@ -2106,9 +2106,18 @@ static HRESULT STDMETHODCALLTYPE d3d11_device_CreateBuffer(ID3D11Device *iface,
static HRESULT STDMETHODCALLTYPE d3d11_device_CreateTexture1D(ID3D11Device *iface,
const D3D11_TEXTURE1D_DESC *desc, const D3D11_SUBRESOURCE_DATA *data, ID3D11Texture1D **texture)
{
- FIXME("iface %p, desc %p, data %p, texture %p stub!\n", iface, desc, data, texture);
+ struct d3d_device *device = impl_from_ID3D11Device(iface);
+ struct d3d_texture1d *object;
+ HRESULT hr;
- return E_NOTIMPL;
+ TRACE("iface %p, desc %p, data %p, texture %p.\n", iface, desc, data, texture);
+
+ if (FAILED(hr = d3d_texture1d_create(device, desc, data, &object)))
+ return hr;
+
+ *texture = &object->ID3D11Texture1D_iface;
+
+ return S_OK;
}
static HRESULT STDMETHODCALLTYPE d3d11_device_CreateTexture2D(ID3D11Device *iface,
@@ -4436,9 +4445,28 @@ static HRESULT STDMETHODCALLTYPE d3d10_device_CreateBuffer(ID3D10Device1 *iface,
static HRESULT STDMETHODCALLTYPE d3d10_device_CreateTexture1D(ID3D10Device1 *iface,
const D3D10_TEXTURE1D_DESC *desc, const D3D10_SUBRESOURCE_DATA *data, ID3D10Texture1D **texture)
{
- FIXME("iface %p, desc %p, data %p, texture %p stub!\n", iface, desc, data, texture);
+ struct d3d_device *device = impl_from_ID3D10Device(iface);
+ D3D11_TEXTURE1D_DESC d3d11_desc;
+ struct d3d_texture1d *object;
+ HRESULT hr;
- return E_NOTIMPL;
+ TRACE("iface %p, desc %p, data %p, texture %p.\n", iface, desc, data, texture);
+
+ d3d11_desc.Width = desc->Width;
+ d3d11_desc.MipLevels = desc->MipLevels;
+ d3d11_desc.ArraySize = desc->ArraySize;
+ d3d11_desc.Format = desc->Format;
+ d3d11_desc.Usage = d3d11_usage_from_d3d10_usage(desc->Usage);
+ d3d11_desc.BindFlags = d3d11_bind_flags_from_d3d10_bind_flags(desc->BindFlags);
+ d3d11_desc.CPUAccessFlags = d3d11_cpu_access_flags_from_d3d10_cpu_access_flags(desc->CPUAccessFlags);
+ d3d11_desc.MiscFlags = d3d11_resource_misc_flags_from_d3d10_resource_misc_flags(desc->MiscFlags);
+
+ if (FAILED(hr = d3d_texture1d_create(device, &d3d11_desc, (const D3D11_SUBRESOURCE_DATA *)data, &object)))
+ return hr;
+
+ *texture = &object->ID3D10Texture1D_iface;
+
+ return S_OK;
}
static HRESULT STDMETHODCALLTYPE d3d10_device_CreateTexture2D(ID3D10Device1 *iface,
diff --git a/dlls/d3d11/texture.c b/dlls/d3d11/texture.c
index d7b2af1..d201b23 100644
--- a/dlls/d3d11/texture.c
+++ b/dlls/d3d11/texture.c
@@ -25,6 +25,346 @@
WINE_DEFAULT_DEBUG_CHANNEL(d3d11);
+
+/* ID3D11Texture1D methods */
+
+static inline struct d3d_texture1d *impl_from_ID3D11Texture1D(ID3D11Texture1D *iface)
+{
+ return CONTAINING_RECORD(iface, struct d3d_texture1d, ID3D11Texture1D_iface);
+}
+
+static HRESULT STDMETHODCALLTYPE d3d11_texture1d_QueryInterface(ID3D11Texture1D *iface, REFIID riid, void **object)
+{
+ struct d3d_texture1d *texture = impl_from_ID3D11Texture1D(iface);
+
+ TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
+
+ if (IsEqualGUID(riid, &IID_ID3D11Texture1D)
+ || IsEqualGUID(riid, &IID_ID3D11Resource)
+ || IsEqualGUID(riid, &IID_ID3D11DeviceChild)
+ || IsEqualGUID(riid, &IID_IUnknown))
+ {
+ *object = &texture->ID3D11Texture1D_iface;
+ IUnknown_AddRef((IUnknown *)*object);
+ return S_OK;
+ }
+ else if (IsEqualGUID(riid, &IID_ID3D10Texture1D)
+ || IsEqualGUID(riid, &IID_ID3D10Resource)
+ || IsEqualGUID(riid, &IID_ID3D10DeviceChild))
+ {
+ *object = &texture->ID3D10Texture1D_iface;
+ IUnknown_AddRef((IUnknown *)*object);
+ return S_OK;
+ }
+
+ WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
+
+ *object = NULL;
+ return E_NOINTERFACE;
+}
+
+static ULONG STDMETHODCALLTYPE d3d11_texture1d_AddRef(ID3D11Texture1D *iface)
+{
+ struct d3d_texture1d *texture = impl_from_ID3D11Texture1D(iface);
+ ULONG refcount = InterlockedIncrement(&texture->refcount);
+
+ TRACE("%p increasing refcount to %u.\n", texture, refcount);
+
+ if (refcount == 1)
+ {
+ ID3D11Device_AddRef(texture->device);
+ }
+
+ return refcount;
+}
+
+static ULONG STDMETHODCALLTYPE d3d11_texture1d_Release(ID3D11Texture1D *iface)
+{
+ struct d3d_texture1d *texture = impl_from_ID3D11Texture1D(iface);
+ ULONG refcount = InterlockedDecrement(&texture->refcount);
+
+ TRACE("%p decreasing refcount to %u.\n", texture, refcount);
+
+ if (!refcount)
+ {
+ ID3D11Device *device = texture->device;
+
+ /* Release the device last, it may cause the wined3d device to be
+ * destroyed. */
+ ID3D11Device_Release(device);
+ }
+
+ return refcount;
+}
+
+static void STDMETHODCALLTYPE d3d11_texture1d_GetDevice(ID3D11Texture1D *iface, ID3D11Device **device)
+{
+ struct d3d_texture1d *texture = impl_from_ID3D11Texture1D(iface);
+
+ TRACE("iface %p, device %p.\n", iface, device);
+
+ *device = texture->device;
+ ID3D11Device_AddRef(*device);
+}
+
+static HRESULT STDMETHODCALLTYPE d3d11_texture1d_GetPrivateData(ID3D11Texture1D *iface,
+ REFGUID guid, UINT *data_size, void *data)
+{
+ FIXME("iface %p, guid %s, data_size %p, data %p: stub.\n", iface, debugstr_guid(guid), data_size, data);
+
+ return E_FAIL;
+}
+
+static HRESULT STDMETHODCALLTYPE d3d11_texture1d_SetPrivateData(ID3D11Texture1D *iface,
+ REFGUID guid, UINT data_size, const void *data)
+{
+ FIXME("iface %p, guid %s, data_size %u, data %p: stub.\n", iface, debugstr_guid(guid), data_size, data);
+
+ return E_FAIL;
+}
+
+static HRESULT STDMETHODCALLTYPE d3d11_texture1d_SetPrivateDataInterface(ID3D11Texture1D *iface,
+ REFGUID guid, const IUnknown *data)
+{
+ FIXME("iface %p, guid %s, data %p: stub.\n", iface, debugstr_guid(guid), data);
+
+ return E_FAIL;
+}
+
+static void STDMETHODCALLTYPE d3d11_texture1d_GetType(ID3D11Texture1D *iface,
+ D3D11_RESOURCE_DIMENSION *resource_dimension)
+{
+ TRACE("iface %p, resource_dimension %p.\n", iface, resource_dimension);
+
+ *resource_dimension = D3D11_RESOURCE_DIMENSION_TEXTURE1D;
+}
+
+static void STDMETHODCALLTYPE d3d11_texture1d_SetEvictionPriority(ID3D11Texture1D *iface, UINT eviction_priority)
+{
+ FIXME("iface %p, eviction_priority %#x stub!\n", iface, eviction_priority);
+}
+
+static UINT STDMETHODCALLTYPE d3d11_texture1d_GetEvictionPriority(ID3D11Texture1D *iface)
+{
+ FIXME("iface %p stub!\n", iface);
+
+ return 0;
+}
+
+static void STDMETHODCALLTYPE d3d11_texture1d_GetDesc(ID3D11Texture1D *iface, D3D11_TEXTURE1D_DESC *desc)
+{
+ struct d3d_texture1d *texture = impl_from_ID3D11Texture1D(iface);
+
+ FIXME("iface %p, desc %p: semi-stub.\n", iface, desc);
+
+ *desc = texture->desc;
+}
+
+static const struct ID3D11Texture1DVtbl d3d11_texture1d_vtbl =
+{
+ /* IUnknown methods */
+ d3d11_texture1d_QueryInterface,
+ d3d11_texture1d_AddRef,
+ d3d11_texture1d_Release,
+ /* ID3D11DeviceChild methods */
+ d3d11_texture1d_GetDevice,
+ d3d11_texture1d_GetPrivateData,
+ d3d11_texture1d_SetPrivateData,
+ d3d11_texture1d_SetPrivateDataInterface,
+ /* ID3D11Resource methods */
+ d3d11_texture1d_GetType,
+ d3d11_texture1d_SetEvictionPriority,
+ d3d11_texture1d_GetEvictionPriority,
+ /* ID3D11Texture1D methods */
+ d3d11_texture1d_GetDesc,
+};
+
+struct d3d_texture1d *unsafe_impl_from_ID3D11Texture1D(ID3D11Texture1D *iface)
+{
+ if (!iface)
+ return NULL;
+ assert(iface->lpVtbl == &d3d11_texture1d_vtbl);
+ return CONTAINING_RECORD(iface, struct d3d_texture1d, ID3D11Texture1D_iface);
+}
+
+/* IUnknown methods */
+
+static HRESULT STDMETHODCALLTYPE d3d10_texture1d_QueryInterface(ID3D10Texture1D *iface, REFIID riid, void **object)
+{
+ struct d3d_texture1d *texture = impl_from_ID3D10Texture1D(iface);
+
+ TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
+
+ return d3d11_texture1d_QueryInterface(&texture->ID3D11Texture1D_iface, riid, object);
+}
+
+static ULONG STDMETHODCALLTYPE d3d10_texture1d_AddRef(ID3D10Texture1D *iface)
+{
+ struct d3d_texture1d *texture = impl_from_ID3D10Texture1D(iface);
+
+ TRACE("iface %p.\n", iface);
+
+ return d3d11_texture1d_AddRef(&texture->ID3D11Texture1D_iface);
+}
+
+static ULONG STDMETHODCALLTYPE d3d10_texture1d_Release(ID3D10Texture1D *iface)
+{
+ struct d3d_texture1d *texture = impl_from_ID3D10Texture1D(iface);
+
+ TRACE("iface %p.\n", iface);
+
+ return d3d11_texture1d_Release(&texture->ID3D11Texture1D_iface);
+}
+
+/* ID3D10DeviceChild methods */
+
+static void STDMETHODCALLTYPE d3d10_texture1d_GetDevice(ID3D10Texture1D *iface, ID3D10Device **device)
+{
+ struct d3d_texture1d *texture = impl_from_ID3D10Texture1D(iface);
+
+ TRACE("iface %p, device %p.\n", iface, device);
+
+ ID3D11Device_QueryInterface(texture->device, &IID_ID3D10Device, (void **)device);
+}
+
+static HRESULT STDMETHODCALLTYPE d3d10_texture1d_GetPrivateData(ID3D10Texture1D *iface,
+ REFGUID guid, UINT *data_size, void *data)
+{
+ struct d3d_texture1d *texture = impl_from_ID3D10Texture1D(iface);
+
+ TRACE("iface %p, guid %s, data_size %p, data %p.\n", iface, debugstr_guid(guid), data_size, data);
+
+ return d3d11_texture1d_GetPrivateData(&texture->ID3D11Texture1D_iface, guid, data_size, data);
+}
+
+static HRESULT STDMETHODCALLTYPE d3d10_texture1d_SetPrivateData(ID3D10Texture1D *iface,
+ REFGUID guid, UINT data_size, const void *data)
+{
+ struct d3d_texture1d *texture = impl_from_ID3D10Texture1D(iface);
+
+ TRACE("iface %p, guid %s, data_size %u, data %p.\n", iface, debugstr_guid(guid), data_size, data);
+
+ return d3d11_texture1d_SetPrivateData(&texture->ID3D11Texture1D_iface, guid, data_size, data);
+}
+
+static HRESULT STDMETHODCALLTYPE d3d10_texture1d_SetPrivateDataInterface(ID3D10Texture1D *iface,
+ REFGUID guid, const IUnknown *data)
+{
+ struct d3d_texture1d *texture = impl_from_ID3D10Texture1D(iface);
+
+ TRACE("iface %p, guid %s, data %p.\n", iface, debugstr_guid(guid), data);
+
+ return d3d11_texture1d_SetPrivateDataInterface(&texture->ID3D11Texture1D_iface, guid, data);
+}
+
+/* ID3D10Resource methods */
+
+static void STDMETHODCALLTYPE d3d10_texture1d_GetType(ID3D10Texture1D *iface,
+ D3D10_RESOURCE_DIMENSION *resource_dimension)
+{
+ TRACE("iface %p, resource_dimension %p\n", iface, resource_dimension);
+
+ *resource_dimension = D3D10_RESOURCE_DIMENSION_TEXTURE1D;
+}
+
+static void STDMETHODCALLTYPE d3d10_texture1d_SetEvictionPriority(ID3D10Texture1D *iface, UINT eviction_priority)
+{
+ FIXME("iface %p, eviction_priority %u stub!\n", iface, eviction_priority);
+}
+
+static UINT STDMETHODCALLTYPE d3d10_texture1d_GetEvictionPriority(ID3D10Texture1D *iface)
+{
+ FIXME("iface %p stub!\n", iface);
+
+ return 0;
+}
+
+/* ID3D10Texture1D methods */
+
+static HRESULT STDMETHODCALLTYPE d3d10_texture1d_Map(ID3D10Texture1D *iface, UINT sub_resource_idx,
+ D3D10_MAP map_type, UINT map_flags, void **data)
+{
+ FIXME("iface %p, sub_resource_idx %u, map_type %u, map_flags %#x, mapped_texture %p: stub.\n",
+ iface, sub_resource_idx, map_type, map_flags, data);
+
+ return E_FAIL;
+}
+
+static void STDMETHODCALLTYPE d3d10_texture1d_Unmap(ID3D10Texture1D *iface, UINT sub_resource_idx)
+{
+ FIXME("iface %p, sub_resource_idx %u: stub.\n", iface, sub_resource_idx);
+}
+
+static void STDMETHODCALLTYPE d3d10_texture1d_GetDesc(ID3D10Texture1D *iface, D3D10_TEXTURE1D_DESC *desc)
+{
+ FIXME("iface %p, desc %p: stub\n", iface, desc);
+}
+
+static const struct ID3D10Texture1DVtbl d3d10_texture1d_vtbl =
+{
+ /* IUnknown methods */
+ d3d10_texture1d_QueryInterface,
+ d3d10_texture1d_AddRef,
+ d3d10_texture1d_Release,
+ /* ID3D10DeviceChild methods */
+ d3d10_texture1d_GetDevice,
+ d3d10_texture1d_GetPrivateData,
+ d3d10_texture1d_SetPrivateData,
+ d3d10_texture1d_SetPrivateDataInterface,
+ /* ID3D10Resource methods */
+ d3d10_texture1d_GetType,
+ d3d10_texture1d_SetEvictionPriority,
+ d3d10_texture1d_GetEvictionPriority,
+ /* ID3D10Texture1D methods */
+ d3d10_texture1d_Map,
+ d3d10_texture1d_Unmap,
+ d3d10_texture1d_GetDesc,
+};
+
+struct d3d_texture1d *unsafe_impl_from_ID3D10Texture1D(ID3D10Texture1D *iface)
+{
+ if (!iface)
+ return NULL;
+ assert(iface->lpVtbl == &d3d10_texture1d_vtbl);
+ return CONTAINING_RECORD(iface, struct d3d_texture1d, ID3D10Texture1D_iface);
+}
+
+static HRESULT d3d_texture1d_init(struct d3d_texture1d *texture, struct d3d_device *device,
+ const D3D11_TEXTURE1D_DESC *desc, const D3D11_SUBRESOURCE_DATA *data)
+{
+ texture->ID3D11Texture1D_iface.lpVtbl = &d3d11_texture1d_vtbl;
+ texture->ID3D10Texture1D_iface.lpVtbl = &d3d10_texture1d_vtbl;
+ texture->refcount = 1;
+ texture->desc = *desc;
+
+ texture->device = &device->ID3D11Device_iface;
+ ID3D11Device_AddRef(texture->device);
+
+ return S_OK;
+}
+
+HRESULT d3d_texture1d_create(struct d3d_device *device, const D3D11_TEXTURE1D_DESC *desc,
+ const D3D11_SUBRESOURCE_DATA *data, struct d3d_texture1d **texture)
+{
+ struct d3d_texture1d *object;
+ HRESULT hr;
+
+ if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
+ return E_OUTOFMEMORY;
+
+ if (FAILED(hr = d3d_texture1d_init(object, device, desc, data)))
+ {
+ WARN("Failed to initialize texture, hr %#x.\n", hr);
+ HeapFree(GetProcessHeap(), 0, object);
+ return hr;
+ }
+
+ TRACE("Created texture %p.\n", object);
+ *texture = object;
+
+ return S_OK;
+}
+
/* ID3D11Texture2D methods */
static inline struct d3d_texture2d *impl_from_ID3D11Texture2D(ID3D11Texture2D *iface)
--
2.8.1

View File

@@ -0,0 +1,135 @@
From a1e800ac4f09ae90a19e2503682f069dd81850a5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 31 Aug 2016 16:22:43 +0200
Subject: d3d11: Create a texture in d3d_texture1d_init.
---
dlls/d3d11/d3d11_private.h | 1 +
dlls/d3d11/texture.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++
dlls/d3d11/utils.c | 8 ++++++++
3 files changed, 59 insertions(+)
diff --git a/dlls/d3d11/d3d11_private.h b/dlls/d3d11/d3d11_private.h
index 6bd7282..73f4196 100644
--- a/dlls/d3d11/d3d11_private.h
+++ b/dlls/d3d11/d3d11_private.h
@@ -111,6 +111,7 @@ struct d3d_texture1d
ID3D10Texture1D ID3D10Texture1D_iface;
LONG refcount;
+ struct wined3d_texture *wined3d_texture;
D3D11_TEXTURE1D_DESC desc;
ID3D11Device *device;
};
diff --git a/dlls/d3d11/texture.c b/dlls/d3d11/texture.c
index d201b23..55fb265 100644
--- a/dlls/d3d11/texture.c
+++ b/dlls/d3d11/texture.c
@@ -73,6 +73,9 @@ static ULONG STDMETHODCALLTYPE d3d11_texture1d_AddRef(ID3D11Texture1D *iface)
if (refcount == 1)
{
ID3D11Device_AddRef(texture->device);
+ wined3d_mutex_lock();
+ wined3d_texture_incref(texture->wined3d_texture);
+ wined3d_mutex_unlock();
}
return refcount;
@@ -89,6 +92,9 @@ static ULONG STDMETHODCALLTYPE d3d11_texture1d_Release(ID3D11Texture1D *iface)
{
ID3D11Device *device = texture->device;
+ wined3d_mutex_lock();
+ wined3d_texture_decref(texture->wined3d_texture);
+ wined3d_mutex_unlock();
/* Release the device last, it may cause the wined3d device to be
* destroyed. */
ID3D11Device_Release(device);
@@ -329,14 +335,58 @@ struct d3d_texture1d *unsafe_impl_from_ID3D10Texture1D(ID3D10Texture1D *iface)
return CONTAINING_RECORD(iface, struct d3d_texture1d, ID3D10Texture1D_iface);
}
+static void STDMETHODCALLTYPE d3d_texture1d_wined3d_object_released(void *parent)
+{
+ struct d3d_texture1d *texture = parent;
+
+ HeapFree(GetProcessHeap(), 0, texture);
+}
+
+static const struct wined3d_parent_ops d3d_texture1d_wined3d_parent_ops =
+{
+ d3d_texture1d_wined3d_object_released,
+};
+
static HRESULT d3d_texture1d_init(struct d3d_texture1d *texture, struct d3d_device *device,
const D3D11_TEXTURE1D_DESC *desc, const D3D11_SUBRESOURCE_DATA *data)
{
+ struct wined3d_resource_desc wined3d_desc;
+ unsigned int levels;
+ HRESULT hr;
+
texture->ID3D11Texture1D_iface.lpVtbl = &d3d11_texture1d_vtbl;
texture->ID3D10Texture1D_iface.lpVtbl = &d3d10_texture1d_vtbl;
texture->refcount = 1;
texture->desc = *desc;
+ wined3d_mutex_lock();
+
+ wined3d_desc.resource_type = WINED3D_RTYPE_TEXTURE_1D;
+ wined3d_desc.format = wined3dformat_from_dxgi_format(desc->Format);
+ wined3d_desc.multisample_type = WINED3D_MULTISAMPLE_NONE;
+ wined3d_desc.multisample_quality = 0;
+ wined3d_desc.usage = wined3d_usage_from_d3d11(desc->BindFlags, desc->Usage);
+ wined3d_desc.pool = WINED3D_POOL_DEFAULT;
+ wined3d_desc.width = desc->Width;
+ wined3d_desc.height = 1;
+ wined3d_desc.depth = 1;
+ wined3d_desc.size = 0;
+
+ levels = desc->MipLevels ? desc->MipLevels : wined3d_log2i(max(desc->Width, 1)) + 1;
+
+ if (FAILED(hr = wined3d_texture_create(device->wined3d_device, &wined3d_desc,
+ desc->ArraySize, levels, 0, (struct wined3d_sub_resource_data *)data,
+ texture, &d3d_texture1d_wined3d_parent_ops, &texture->wined3d_texture)))
+ {
+ WARN("Failed to create wined3d texture, hr %#x.\n", hr);
+ wined3d_mutex_unlock();
+ if (hr == WINED3DERR_NOTAVAILABLE || hr == WINED3DERR_INVALIDCALL)
+ hr = E_INVALIDARG;
+ return hr;
+ }
+ texture->desc.MipLevels = levels;
+ wined3d_mutex_unlock();
+
texture->device = &device->ID3D11Device_iface;
ID3D11Device_AddRef(texture->device);
diff --git a/dlls/d3d11/utils.c b/dlls/d3d11/utils.c
index 89dbbda..06f2600 100644
--- a/dlls/d3d11/utils.c
+++ b/dlls/d3d11/utils.c
@@ -566,6 +566,10 @@ struct wined3d_resource *wined3d_resource_from_d3d11_resource(ID3D11Resource *re
return wined3d_buffer_get_resource(unsafe_impl_from_ID3D11Buffer(
(ID3D11Buffer *)resource)->wined3d_buffer);
+ case D3D11_RESOURCE_DIMENSION_TEXTURE1D:
+ return wined3d_texture_get_resource(unsafe_impl_from_ID3D11Texture1D(
+ (ID3D11Texture1D *)resource)->wined3d_texture);
+
case D3D11_RESOURCE_DIMENSION_TEXTURE2D:
return wined3d_texture_get_resource(unsafe_impl_from_ID3D11Texture2D(
(ID3D11Texture2D *)resource)->wined3d_texture);
@@ -592,6 +596,10 @@ struct wined3d_resource *wined3d_resource_from_d3d10_resource(ID3D10Resource *re
return wined3d_buffer_get_resource(unsafe_impl_from_ID3D10Buffer(
(ID3D10Buffer *)resource)->wined3d_buffer);
+ case D3D10_RESOURCE_DIMENSION_TEXTURE1D:
+ return wined3d_texture_get_resource(unsafe_impl_from_ID3D10Texture1D(
+ (ID3D10Texture1D *)resource)->wined3d_texture);
+
case D3D10_RESOURCE_DIMENSION_TEXTURE2D:
return wined3d_texture_get_resource(unsafe_impl_from_ID3D10Texture2D(
(ID3D10Texture2D *)resource)->wined3d_texture);
--
2.8.1

View File

@@ -0,0 +1,53 @@
From 25be3c1b3ee879ab4dcc4721636042d3bb7c52af Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 31 Aug 2016 16:23:12 +0200
Subject: d3d11: Create a private store in d3d_texture1d_init.
---
dlls/d3d11/d3d11_private.h | 1 +
dlls/d3d11/texture.c | 3 +++
2 files changed, 4 insertions(+)
diff --git a/dlls/d3d11/d3d11_private.h b/dlls/d3d11/d3d11_private.h
index 73f4196..4a18ca7 100644
--- a/dlls/d3d11/d3d11_private.h
+++ b/dlls/d3d11/d3d11_private.h
@@ -111,6 +111,7 @@ struct d3d_texture1d
ID3D10Texture1D ID3D10Texture1D_iface;
LONG refcount;
+ struct wined3d_private_store private_store;
struct wined3d_texture *wined3d_texture;
D3D11_TEXTURE1D_DESC desc;
ID3D11Device *device;
diff --git a/dlls/d3d11/texture.c b/dlls/d3d11/texture.c
index 55fb265..0c269c1 100644
--- a/dlls/d3d11/texture.c
+++ b/dlls/d3d11/texture.c
@@ -339,6 +339,7 @@ static void STDMETHODCALLTYPE d3d_texture1d_wined3d_object_released(void *parent
{
struct d3d_texture1d *texture = parent;
+ wined3d_private_store_cleanup(&texture->private_store);
HeapFree(GetProcessHeap(), 0, texture);
}
@@ -360,6 +361,7 @@ static HRESULT d3d_texture1d_init(struct d3d_texture1d *texture, struct d3d_devi
texture->desc = *desc;
wined3d_mutex_lock();
+ wined3d_private_store_init(&texture->private_store);
wined3d_desc.resource_type = WINED3D_RTYPE_TEXTURE_1D;
wined3d_desc.format = wined3dformat_from_dxgi_format(desc->Format);
@@ -379,6 +381,7 @@ static HRESULT d3d_texture1d_init(struct d3d_texture1d *texture, struct d3d_devi
texture, &d3d_texture1d_wined3d_parent_ops, &texture->wined3d_texture)))
{
WARN("Failed to create wined3d texture, hr %#x.\n", hr);
+ wined3d_private_store_cleanup(&texture->private_store);
wined3d_mutex_unlock();
if (hr == WINED3DERR_NOTAVAILABLE || hr == WINED3DERR_INVALIDCALL)
hr = E_INVALIDARG;
--
2.8.1

View File

@@ -0,0 +1,83 @@
From d29fadf3f80f98f06f955739ede3739dc1425459 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 27 Aug 2016 23:59:20 +0200
Subject: d3d11: Generate dxgi surface in d3d_texture1d_init.
---
dlls/d3d11/d3d11_private.h | 1 +
dlls/d3d11/texture.c | 33 +++++++++++++++++++++++++++++++++
2 files changed, 34 insertions(+)
diff --git a/dlls/d3d11/d3d11_private.h b/dlls/d3d11/d3d11_private.h
index 3bd2dec..edf7217 100644
--- a/dlls/d3d11/d3d11_private.h
+++ b/dlls/d3d11/d3d11_private.h
@@ -112,6 +112,7 @@ struct d3d_texture1d
LONG refcount;
struct wined3d_private_store private_store;
+ IUnknown *dxgi_surface;
struct wined3d_texture *wined3d_texture;
D3D11_TEXTURE1D_DESC desc;
ID3D11Device *device;
diff --git a/dlls/d3d11/texture.c b/dlls/d3d11/texture.c
index 2fe7aa4..94f4c57 100644
--- a/dlls/d3d11/texture.c
+++ b/dlls/d3d11/texture.c
@@ -57,6 +57,12 @@ static HRESULT STDMETHODCALLTYPE d3d11_texture1d_QueryInterface(ID3D11Texture1D
return S_OK;
}
+ if (texture->dxgi_surface)
+ {
+ TRACE("Forwarding to dxgi surface.\n");
+ return IUnknown_QueryInterface(texture->dxgi_surface, riid, object);
+ }
+
WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
*object = NULL;
@@ -339,6 +345,7 @@ static void STDMETHODCALLTYPE d3d_texture1d_wined3d_object_released(void *parent
{
struct d3d_texture1d *texture = parent;
+ if (texture->dxgi_surface) IUnknown_Release(texture->dxgi_surface);
wined3d_private_store_cleanup(&texture->private_store);
HeapFree(GetProcessHeap(), 0, texture);
}
@@ -388,6 +395,32 @@ static HRESULT d3d_texture1d_init(struct d3d_texture1d *texture, struct d3d_devi
return hr;
}
texture->desc.MipLevels = levels;
+
+ if (desc->MipLevels == 1 && desc->ArraySize == 1)
+ {
+ IWineDXGIDevice *wine_device;
+
+ if (FAILED(hr = ID3D10Device1_QueryInterface(&device->ID3D10Device1_iface, &IID_IWineDXGIDevice,
+ (void **)&wine_device)))
+ {
+ ERR("Device should implement IWineDXGIDevice.\n");
+ wined3d_texture_decref(texture->wined3d_texture);
+ wined3d_mutex_unlock();
+ return E_FAIL;
+ }
+
+ hr = IWineDXGIDevice_create_surface(wine_device, texture->wined3d_texture, 0, NULL,
+ (IUnknown *)&texture->ID3D10Texture1D_iface, (void **)&texture->dxgi_surface);
+ IWineDXGIDevice_Release(wine_device);
+ if (FAILED(hr))
+ {
+ ERR("Failed to create DXGI surface, returning %#x\n", hr);
+ texture->dxgi_surface = NULL;
+ wined3d_texture_decref(texture->wined3d_texture);
+ wined3d_mutex_unlock();
+ return hr;
+ }
+ }
wined3d_mutex_unlock();
texture->device = &device->ID3D11Device_iface;
--
2.9.0

Some files were not shown because too many files have changed in this diff Show More