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
46 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
7397ac1394 | ||
|
6b626b3f42 | ||
|
ec7eae9400 | ||
|
1a199958e7 | ||
|
2bf9187a19 | ||
|
b3eb9ef535 | ||
|
78c9cb74ff | ||
|
b52328c75a | ||
|
00fbf6afc8 | ||
|
1281216a26 | ||
|
dd166155b5 | ||
|
8112d76673 | ||
|
ee44570fb0 | ||
|
3b127e5f51 | ||
|
1e2b0d3e0c | ||
|
a358f0984b | ||
|
c08a9ab0d6 | ||
|
4483c9737e | ||
|
522961364f | ||
|
f8b5d1530a | ||
|
75760561c3 | ||
|
79af70fad1 | ||
|
3bb2024464 | ||
|
2ad4a084dd | ||
|
4465c82831 | ||
|
141b05e4ff | ||
|
50a0e530a8 | ||
|
b3a71a8918 | ||
|
82a0709ef2 | ||
|
bf90df4eed | ||
|
e2e200361f | ||
|
ad962f7d64 | ||
|
d28e0d12bb | ||
|
938ffad317 | ||
|
6b3228a788 | ||
|
6b709dc505 | ||
|
8ca9f08b92 | ||
|
39c7e02819 | ||
|
398d920e3a | ||
|
5a40e8f8b3 | ||
|
d4fa026231 | ||
|
43a640f8fd | ||
|
deb73bfa7c | ||
|
f2fd04974f | ||
|
9961dd76da | ||
|
d86ab36369 |
@@ -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
|
||||
|
@@ -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
|
||||
|
1
patches/advapi32-GetExplicitEntriesFromAclW/definition
Normal file
1
patches/advapi32-GetExplicitEntriesFromAclW/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: Implement semi-stub for advapi32.GetExplicitEntriesFromAclW
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
Reference in New Issue
Block a user