Wine-Devel
By thread
wine-devel@list.winehq.org
By month
Messages by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
June 2022
- 68 participants
- 3274 messages
[PATCH v2 4/5] mshtml: Implement overrideMimeType for XMLHttpRequest.
by Gabriel Ivăncescu
We have to special case empty string since Gecko special cases them, but
IE does not.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode(a)gmail.com>
---
dlls/mshtml/tests/xhr.js | 16 ++++++++++++++--
dlls/mshtml/xmlhttprequest.c | 23 +++++++++++++++++++++--
2 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/dlls/mshtml/tests/xhr.js b/dlls/mshtml/tests/xhr.js
index 303c4ad..8d9af26 100644
--- a/dlls/mshtml/tests/xhr.js
+++ b/dlls/mshtml/tests/xhr.js
@@ -71,7 +71,7 @@ function test_xhr() {
}
function test_content_types() {
- var xhr = new XMLHttpRequest(), types, i = 0;
+ var xhr = new XMLHttpRequest(), types, i = 0, override = false;
var v = document.documentMode;
var types = [
@@ -95,7 +95,19 @@ function test_content_types() {
if(v < 10 || types === xml_types)
ok(xhr.responseXML !== null, "unexpected null responseXML for " + types[i]);
else
- ok(xhr.responseXML === null, "unexpected non-null responseXML for " + types[i]);
+ ok(xhr.responseXML === null, "unexpected non-null responseXML for " + (override ? "overriden " : "") + types[i]);
+
+ if(("overrideMimeType" in xhr) && !override) {
+ override = true;
+ xhr = new XMLHttpRequest();
+ xhr.onload = onload;
+ xhr.open("POST", "echo.php", true);
+ xhr.setRequestHeader("X-Test", "True");
+ xhr.overrideMimeType(types[i]);
+ xhr.send(xml);
+ return;
+ }
+ override = false;
if(++i >= types.length) {
if(types === xml_types) {
diff --git a/dlls/mshtml/xmlhttprequest.c b/dlls/mshtml/xmlhttprequest.c
index c165218..f21114a 100644
--- a/dlls/mshtml/xmlhttprequest.c
+++ b/dlls/mshtml/xmlhttprequest.c
@@ -978,10 +978,29 @@ static HRESULT WINAPI HTMLXMLHttpRequest_private_get_withCredentials(IWineXMLHtt
static HRESULT WINAPI HTMLXMLHttpRequest_private_overrideMimeType(IWineXMLHttpRequestPrivate *iface, BSTR mimeType)
{
HTMLXMLHttpRequest *This = impl_from_IWineXMLHttpRequestPrivate(iface);
+ static const WCHAR generic_type[] = L"application/octet-stream";
+ const WCHAR *type = NULL;
+ WCHAR *lowercase = NULL;
+ nsAString nsstr;
+ nsresult nsres;
- FIXME("(%p)->(%s)\n", This, debugstr_w(mimeType));
+ TRACE("(%p)->(%s)\n", This, debugstr_w(mimeType));
- return E_NOTIMPL;
+ if(mimeType) {
+ if(mimeType[0]) {
+ if(!(lowercase = heap_strdupW(mimeType)))
+ return E_OUTOFMEMORY;
+ _wcslwr(lowercase);
+ type = lowercase;
+ }else
+ type = generic_type;
+ }
+
+ nsAString_InitDepend(&nsstr, type);
+ nsres = nsIXMLHttpRequest_SlowOverrideMimeType(This->nsxhr, &nsstr);
+ nsAString_Finish(&nsstr);
+ heap_free(lowercase);
+ return map_nsresult(nsres);
}
static HRESULT WINAPI HTMLXMLHttpRequest_private_put_onerror(IWineXMLHttpRequestPrivate *iface, VARIANT v)
--
2.34.1
June 8, 2022
[PATCH v2 3/5] mshtml: Check for valid XML Content-Type for responseXML in IE10+ modes.
by Gabriel Ivăncescu
Signed-off-by: Gabriel Ivăncescu <gabrielopcode(a)gmail.com>
---
dlls/mshtml/tests/script.c | 10 ++++++-
dlls/mshtml/tests/xhr.js | 57 ++++++++++++++++++++++++++++++++++--
dlls/mshtml/xmlhttprequest.c | 14 +++++++++
3 files changed, 78 insertions(+), 3 deletions(-)
diff --git a/dlls/mshtml/tests/script.c b/dlls/mshtml/tests/script.c
index e368824..efd161d 100644
--- a/dlls/mshtml/tests/script.c
+++ b/dlls/mshtml/tests/script.c
@@ -3043,6 +3043,7 @@ typedef struct {
IInternetProtocolSink *sink;
BINDINFO bind_info;
+ BSTR content_type;
IStream *stream;
char *data;
ULONG size;
@@ -3068,6 +3069,7 @@ static void report_data(ProtocolHandler *This)
IServiceProvider *service_provider;
IHttpNegotiate *http_negotiate;
WCHAR *addl_headers = NULL;
+ WCHAR headers_buf[128];
BSTR headers, url;
HRESULT hres;
@@ -3091,7 +3093,10 @@ static void report_data(ProtocolHandler *This)
CoTaskMemFree(addl_headers);
- headers = SysAllocString(L"HTTP/1.1 200 OK\r\n\r\n");
+ if(This->content_type)
+ swprintf(headers_buf, ARRAY_SIZE(headers_buf), L"HTTP/1.1 200 OK\r\nContent-Type: %s\r\n", This->content_type);
+
+ headers = SysAllocString(This->content_type ? headers_buf : L"HTTP/1.1 200 OK\r\n\r\n");
hres = IHttpNegotiate_OnResponse(http_negotiate, 200, headers, NULL, NULL);
ok(hres == S_OK, "OnResponse failed: %08lx\n", hres);
SysFreeString(headers);
@@ -3250,6 +3255,7 @@ static ULONG WINAPI Protocol_Release(IInternetProtocolEx *iface)
if(This->uri)
IUri_Release(This->uri);
ReleaseBindInfo(&This->bind_info);
+ SysFreeString(This->content_type);
HeapFree(GetProcessHeap(), 0, This);
}
@@ -3424,6 +3430,8 @@ static HRESULT WINAPI ProtocolEx_StartEx(IInternetProtocolEx *iface, IUri *uri,
if(SUCCEEDED(hres)) {
if(!lstrcmpW(query, L"?delay"))
This->delay = 1000;
+ else if(!wcsncmp(query, L"?content-type=", sizeof("?content-type=")-1))
+ This->content_type = SysAllocString(query + sizeof("?content-type=")-1);
SysFreeString(query);
}
diff --git a/dlls/mshtml/tests/xhr.js b/dlls/mshtml/tests/xhr.js
index c450384..303c4ad 100644
--- a/dlls/mshtml/tests/xhr.js
+++ b/dlls/mshtml/tests/xhr.js
@@ -16,6 +16,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+var xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<a name=\"test\">wine</a>";
+
function test_xhr() {
var xhr = new XMLHttpRequest();
var complete_cnt = 0, loadstart = false;
@@ -24,7 +26,9 @@ function test_xhr() {
if(xhr.readyState != 4)
return;
- ok(xhr.responseText === "Testing...", "unexpected responseText " + xhr.responseText);
+ ok(xhr.responseText === xml, "unexpected responseText " + xhr.responseText);
+ ok(xhr.responseXML !== null, "unexpected null responseXML");
+
if(complete_cnt++ && !("onloadend" in xhr))
next_test();
}
@@ -63,7 +67,55 @@ function test_xhr() {
ok(xhr.withCredentials === true, "withCredentials = " + xhr.withCredentials);
xhr.withCredentials = false;
}
- xhr.send("Testing...");
+ xhr.send(xml);
+}
+
+function test_content_types() {
+ var xhr = new XMLHttpRequest(), types, i = 0;
+ var v = document.documentMode;
+
+ var types = [
+ "",
+ "text/plain",
+ "text/html",
+ "wine/xml",
+ "xml"
+ ];
+ var xml_types = [
+ "text/xmL",
+ "apPliCation/xml",
+ "image/SvG+xml",
+ "Wine/Test+xml",
+ "++Xml",
+ "+xMl"
+ ];
+
+ function onload() {
+ ok(xhr.responseText === xml, "unexpected responseText " + xhr.responseText);
+ if(v < 10 || types === xml_types)
+ ok(xhr.responseXML !== null, "unexpected null responseXML for " + types[i]);
+ else
+ ok(xhr.responseXML === null, "unexpected non-null responseXML for " + types[i]);
+
+ if(++i >= types.length) {
+ if(types === xml_types) {
+ next_test();
+ return;
+ }
+ types = xml_types;
+ i = 0;
+ }
+ xhr = new XMLHttpRequest();
+ xhr.onload = onload;
+ xhr.open("POST", "echo.php?content-type=" + types[i], true);
+ xhr.setRequestHeader("X-Test", "True");
+ xhr.send(xml);
+ }
+
+ xhr.onload = onload;
+ xhr.open("POST", "echo.php?content-type=" + types[i], true);
+ xhr.setRequestHeader("X-Test", "True");
+ xhr.send(xml);
}
function test_abort() {
@@ -118,6 +170,7 @@ function test_timeout() {
var tests = [
test_xhr,
+ test_content_types,
test_abort,
test_timeout
];
diff --git a/dlls/mshtml/xmlhttprequest.c b/dlls/mshtml/xmlhttprequest.c
index 8fa91e9..c165218 100644
--- a/dlls/mshtml/xmlhttprequest.c
+++ b/dlls/mshtml/xmlhttprequest.c
@@ -374,6 +374,20 @@ static HRESULT WINAPI HTMLXMLHttpRequest_get_responseXML(IHTMLXMLHttpRequest *if
TRACE("(%p)->(%p)\n", This, p);
+ if(dispex_compat_mode(&This->event_target.dispex) >= COMPAT_MODE_IE10) {
+ nsIDOMDocument *nsdoc;
+ nsresult nsres;
+
+ nsres = nsIXMLHttpRequest_GetResponseXML(This->nsxhr, &nsdoc);
+ if(NS_FAILED(nsres))
+ return map_nsresult(nsres);
+ if(!nsdoc) {
+ *p = NULL;
+ return S_OK;
+ }
+ nsIDOMDocument_Release(nsdoc);
+ }
+
hres = CoCreateInstance(&CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (void**)&xmldoc);
if(FAILED(hres)) {
ERR("CoCreateInstance failed: %08lx\n", hres);
--
2.34.1
June 8, 2022
[PATCH v2 2/5] mshtml: Do not override existing content type with a detected mime type.
by Gabriel Ivăncescu
Signed-off-by: Gabriel Ivăncescu <gabrielopcode(a)gmail.com>
---
Needed by next patch.
dlls/mshtml/navigate.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c
index 5d74cc1..94ad0ea 100644
--- a/dlls/mshtml/navigate.c
+++ b/dlls/mshtml/navigate.c
@@ -1668,10 +1668,9 @@ static HRESULT nsChannelBSC_on_progress(BSCallback *bsc, ULONG status_code, LPCW
This->nschannel = NULL;
}
- if(!This->nschannel)
+ if(!This->nschannel || This->nschannel->content_type)
return S_OK;
- heap_free(This->nschannel->content_type);
This->nschannel->content_type = heap_strdupWtoA(status_text);
break;
case BINDSTATUS_REDIRECTING:
--
2.34.1
June 8, 2022
[PATCH v2 1/5] mshtml: Set the channel's content type when parsing the header.
by Gabriel Ivăncescu
Signed-off-by: Gabriel Ivăncescu <gabrielopcode(a)gmail.com>
---
Needed by 3rd patch.
dlls/mshtml/navigate.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c
index e6f2035..5d74cc1 100644
--- a/dlls/mshtml/navigate.c
+++ b/dlls/mshtml/navigate.c
@@ -708,12 +708,26 @@ HRESULT read_stream(BSCallback *This, IStream *stream, void *buf, DWORD size, DW
static void parse_content_type(nsChannelBSC *This, const WCHAR *value)
{
- const WCHAR *ptr;
- size_t len;
+ const WCHAR *ptr, *beg, *end;
+ size_t len = wcslen(value);
+ char *content_type;
static const WCHAR charsetW[] = {'c','h','a','r','s','e','t','='};
ptr = wcschr(value, ';');
+ for(end = ptr ? ptr : value + len; end > value; end--)
+ if(!iswspace(end[-1]))
+ break;
+ for(beg = value; beg < end; beg++)
+ if(!iswspace(*beg))
+ break;
+
+ if((content_type = heap_strndupWtoU(beg, end - beg))) {
+ heap_free(This->nschannel->content_type);
+ This->nschannel->content_type = content_type;
+ strlwr(content_type);
+ }
+
if(!ptr)
return;
--
2.34.1
June 8, 2022
Re: [PATCH 2/6] dinput/tests: Merge device.c tests into device8.c.
by Marvin
Hi,
While running your changed tests, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at:
https://testbot.winehq.org/JobDetails.pl?Key=116467
Your paranoid android.
=== w864 (64 bit report) ===
Report validation errors:
dinput:device8 crashed (c0000008)
=== w7u_2qxl (32 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w7u_el (32 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w864 (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w1064v1507 (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w1064v1809 (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w1064 (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w1064_2qxl (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w10pro64 (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w10pro64_en_AE_u8 (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w10pro64_ar (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w10pro64_ja (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w10pro64_zh_CN (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w7u_2qxl (32 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w7u_el (32 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w864 (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w1064v1507 (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w1064v1809 (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w1064 (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w1064_2qxl (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w10pro64 (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w10pro64_en_AE_u8 (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w10pro64_ar (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w10pro64_ja (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w10pro64_zh_CN (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w7u_2qxl (32 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w7u_el (32 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w864 (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w1064v1507 (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w1064v1809 (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w1064 (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w1064_2qxl (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w10pro64 (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w10pro64_en_AE_u8 (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w10pro64_ar (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w10pro64_ja (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w10pro64_zh_CN (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== debian11 (32 bit report) ===
dinput:
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x300: Release returned 0
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x500: Release returned 0
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x700: Release returned 0
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (32 bit Arabic:Morocco report) ===
dinput:
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x300: Release returned 0
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x500: Release returned 0
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x700: Release returned 0
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (32 bit German report) ===
dinput:
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x300: Release returned 0
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x500: Release returned 0
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x700: Release returned 0
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (32 bit French report) ===
dinput:
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x300: Release returned 0
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x500: Release returned 0
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x700: Release returned 0
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (32 bit Hebrew:Israel report) ===
dinput:
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x300: Release returned 0
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x500: Release returned 0
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x700: Release returned 0
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (32 bit Hindi:India report) ===
dinput:
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x300: Release returned 0
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x500: Release returned 0
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x700: Release returned 0
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (32 bit Japanese:Japan report) ===
dinput:
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x300: Release returned 0
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x500: Release returned 0
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x700: Release returned 0
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (32 bit Chinese:China report) ===
dinput:
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x300: Release returned 0
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x500: Release returned 0
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x700: Release returned 0
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (32 bit WoW report) ===
dinput:
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x300: Release returned 0
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x500: Release returned 0
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x700: Release returned 0
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:295: Test failed: 0x800: Acquire returned 0x80070005
device8.c:304: Test failed: 0x800: WaitForSingleObject returned 0x102
device8.c:308: Test failed: 0x800: WaitForSingleObject returned 0x102
device8.c:312: Test failed: 0x800: GetDeviceData returned 0x8007000c
device8.c:319: Test failed: 0x800: WaitForSingleObject returned 0x102
device8.c:323: Test failed: 0x800: GetDeviceData returned 0x8007000c
device8.c:324: Test failed: 0x800: got count 10
device8.c:328: Test failed: 0x800: GetDeviceState returned 0x8007000c
device8.c:330: Test failed: 0x800: key A should be still up
device8.c:331: Test failed: 0x800: key S should be still up
device8.c:332: Test failed: 0x800: keydown for D did not register
device8.c:333: Test failed: 0x800: key F should be still up
device8.c:334: Test failed: 0x800: State struct was not memset to zero
device8.c:339: Test failed: 0x800: WaitForSingleObject returned 0x102
device8.c:343: Test failed: 0x800: GetDeviceData returned 0x8007000c
device8.c:344: Test failed: 0x800: got count 10
device8.c:348: Test failed: 0x800: Unacquire returned 0x1
device8.c:356: Test failed: 0x800: Acquire returned 0x80070005
device8.c:365: Test failed: 0x800: WaitForSingleObject returned 0x102
device8.c:369: Test failed: 0x800: WaitForSingleObject returned 0x102
device8.c:373: Test failed: 0x800: GetDeviceData returned 0x8007000c
device8.c:380: Test failed: 0x800: WaitForSingleObject returned 0x102
device8.c:384: Test failed: 0x800: GetDeviceData returned 0x8007000c
device8.c:385: Test failed: 0x800: got count 10
device8.c:389: Test failed: 0x800: GetDeviceState returned 0x8007000c
device8.c:395: Test failed: 0x800: State struct was not memset to zero
device8.c:400: Test failed: 0x800: WaitForSingleObject returned 0x102
device8.c:404: Test failed: 0x800: GetDeviceData returned 0x8007000c
device8.c:405: Test failed: 0x800: got count 10
=== debian11 (64 bit WoW report) ===
dinput:
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x300: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x300: Release returned 0
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x500: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x500: Release returned 0
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:164: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:169: Test failed: 0x700: got hr 0, expected 0x80004002.
device8.c:200: Test succeeded inside todo block: 0x700: Release returned 0
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:161: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:162: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:163: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:166: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:167: Test failed: 0x800: got hr 0, expected 0x80004002.
device8.c:168: Test failed: 0x800: got hr 0, expected 0x80004002.
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
June 8, 2022
[PATCH 2/2] mfreadwrite: Update source reader MF_SOURCE_READER_ANY_STREAM behavior based on tests.
by Derek Lesho
From: Derek Lesho <dlesho(a)codeweavers.com>
Signed-off-by: Derek Lesho <dlesho(a)codeweavers.com>
---
dlls/mfreadwrite/reader.c | 34 ++++++++++++++++++++-------------
dlls/mfreadwrite/tests/mfplat.c | 5 ++---
2 files changed, 23 insertions(+), 16 deletions(-)
diff --git a/dlls/mfreadwrite/reader.c b/dlls/mfreadwrite/reader.c
index b1175479dec..76348458fac 100644
--- a/dlls/mfreadwrite/reader.c
+++ b/dlls/mfreadwrite/reader.c
@@ -92,6 +92,7 @@ struct media_stream
unsigned int flags;
unsigned int requests;
unsigned int responses;
+ LONGLONG last_sample_ts;
struct source_reader *reader;
};
@@ -160,7 +161,6 @@ struct source_reader
IUnknown *device_manager;
unsigned int first_audio_stream_index;
unsigned int first_video_stream_index;
- unsigned int last_read_index;
DWORD stream_count;
unsigned int flags;
DWORD queue;
@@ -459,6 +459,8 @@ static HRESULT source_reader_queue_response(struct source_reader *reader, struct
source_reader_response_ready(reader, response);
+ stream->last_sample_ts = timestamp;
+
return S_OK;
}
@@ -1101,10 +1103,11 @@ static BOOL source_reader_get_read_result(struct source_reader *reader, struct m
static HRESULT source_reader_get_next_selected_stream(struct source_reader *reader, DWORD *stream_index)
{
- unsigned int i, first_selected = ~0u, requests = ~0u;
+ unsigned int i, first_selected = ~0u;
BOOL selected, stream_drained;
+ LONGLONG min_ts = MAXLONGLONG;
- for (i = (reader->last_read_index + 1) % reader->stream_count; ; i = (i + 1) % reader->stream_count)
+ for (i = 0; i < reader->stream_count; ++i)
{
stream_drained = reader->streams[i].state == STREAM_STATE_EOS && !reader->streams[i].responses;
selected = SUCCEEDED(source_reader_get_stream_selection(reader, i, &selected)) && selected;
@@ -1114,24 +1117,20 @@ static HRESULT source_reader_get_next_selected_stream(struct source_reader *read
if (first_selected == ~0u)
first_selected = i;
- /* Try to balance pending reads. */
- if (!stream_drained && reader->streams[i].requests < requests)
+ /* Pick the stream whose last sample had the lowest timestamp. */
+ if (!stream_drained && reader->streams[i].last_sample_ts < min_ts)
{
- requests = reader->streams[i].requests;
+ min_ts = reader->streams[i].last_sample_ts;
*stream_index = i;
}
}
-
- if (i == reader->last_read_index)
- break;
}
/* If all selected streams reached EOS, use first selected. */
if (first_selected != ~0u)
{
- if (requests == ~0u)
+ if (min_ts == MAXLONGLONG)
*stream_index = first_selected;
- reader->last_read_index = *stream_index;
}
return first_selected == ~0u ? MF_E_MEDIA_SOURCE_NO_STREAMS_SELECTED : S_OK;
@@ -1499,7 +1498,12 @@ static HRESULT WINAPI src_reader_SetStreamSelection(IMFSourceReader *iface, DWOR
}
if (selection_changed)
- reader->last_read_index = reader->stream_count - 1;
+ {
+ for (i = 0; i < reader->stream_count; ++i)
+ {
+ reader->streams[i].last_sample_ts = 0;
+ }
+ }
LeaveCriticalSection(&reader->cs);
@@ -1911,6 +1915,11 @@ static HRESULT WINAPI src_reader_SetCurrentPosition(IMFSourceReader *iface, REFG
if (SUCCEEDED(hr))
{
+ for (i = 0; i < reader->stream_count; ++i)
+ {
+ reader->streams[i].last_sample_ts = 0;
+ }
+
if (reader->async_callback)
{
if (SUCCEEDED(hr = source_reader_create_async_op(SOURCE_READER_ASYNC_SEEK, &command)))
@@ -2357,7 +2366,6 @@ static HRESULT create_source_reader_from_source(IMFMediaSource *source, IMFAttri
/* At least one major type has to be set. */
object->first_audio_stream_index = reader_get_first_stream_index(object->descriptor, &MFMediaType_Audio);
object->first_video_stream_index = reader_get_first_stream_index(object->descriptor, &MFMediaType_Video);
- object->last_read_index = object->stream_count - 1;
if (object->first_audio_stream_index == MF_SOURCE_READER_INVALID_STREAM_INDEX &&
object->first_video_stream_index == MF_SOURCE_READER_INVALID_STREAM_INDEX)
diff --git a/dlls/mfreadwrite/tests/mfplat.c b/dlls/mfreadwrite/tests/mfplat.c
index 2762e88281a..c36e1a7e04d 100644
--- a/dlls/mfreadwrite/tests/mfplat.c
+++ b/dlls/mfreadwrite/tests/mfplat.c
@@ -994,7 +994,7 @@ static void test_source_reader_from_media_source(void)
/* Once the last read sample of all streams has the same timestamp value, the reader will
continue reading from the first stream until its timestamp increases. */
- todo_wine ok(!actual_index, "%d: Unexpected stream index %lu.\n", TEST_SOURCE_NUM_STREAMS + 1, actual_index);
+ ok(!actual_index, "%d: Unexpected stream index %lu.\n", TEST_SOURCE_NUM_STREAMS + 1, actual_index);
IMFSample_Release(sample);
@@ -1231,8 +1231,7 @@ static void test_source_reader_from_media_source(void)
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
ok(!stream_flags, "Unexpected stream flags %#lx.\n", stream_flags);
ok(!!sample, "Expected sample object.\n");
- todo_wine_if (actual_index != expected_sample_order[i])
- ok (actual_index == expected_sample_order[i], "Got sample %u from unexpected stream %lu, expected %lu.\n",
+ ok (actual_index == expected_sample_order[i], "Got sample %u from unexpected stream %lu, expected %lu.\n",
i, actual_index, expected_sample_order[i]);
IMFSample_Release(sample);
}
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/209
June 8, 2022
[PATCH 1/2] mfreadwrite/tests: Test timestamp-based MF_SOURCE_READER_ANY_STREAM behavior.
by Derek Lesho
From: Derek Lesho <dlesho(a)codeweavers.com>
Signed-off-by: Derek Lesho <dlesho(a)codeweavers.com>
---
dlls/mfreadwrite/tests/mfplat.c | 71 ++++++++++++++++++++++++++++++++-
1 file changed, 69 insertions(+), 2 deletions(-)
diff --git a/dlls/mfreadwrite/tests/mfplat.c b/dlls/mfreadwrite/tests/mfplat.c
index fcf642859d5..2762e88281a 100644
--- a/dlls/mfreadwrite/tests/mfplat.c
+++ b/dlls/mfreadwrite/tests/mfplat.c
@@ -105,6 +105,7 @@ struct test_media_stream
IMFStreamDescriptor *sd;
IMFMediaEventQueue *event_queue;
BOOL is_new;
+ LONGLONG sample_duration, sample_time;
};
static struct test_media_stream *impl_from_IMFMediaStream(IMFMediaStream *iface)
@@ -211,8 +212,25 @@ static HRESULT WINAPI test_media_stream_RequestSample(IMFMediaStream *iface, IUn
hr = MFCreateSample(&sample);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
- hr = IMFSample_SetSampleTime(sample, 123);
- ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ if (stream->sample_duration)
+ {
+ hr = IMFSample_SetSampleDuration(sample, stream->sample_duration);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+ hr = IMFSample_SetSampleTime(sample, stream->sample_time);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+ stream->sample_time += stream->sample_duration;
+ }
+ else
+ {
+ hr = IMFSample_SetSampleTime(sample, 123);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+ hr = IMFSample_SetSampleDuration(sample, 1);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ }
+
if (token)
IMFSample_SetUnknown(sample, &MFSampleExtension_Token, token);
@@ -888,9 +906,12 @@ skip_read_sample:
static void test_source_reader_from_media_source(void)
{
+ static const DWORD expected_sample_order[10] = {0, 0, 1, 1, 0, 0, 0, 0, 1, 0};
+
struct async_callback *callback;
IMFSourceReader *reader;
IMFMediaSource *source;
+ struct test_source *test_source;
IMFMediaType *media_type;
HRESULT hr;
DWORD actual_index, stream_flags;
@@ -964,6 +985,19 @@ static void test_source_reader_from_media_source(void)
IMFSample_Release(sample);
}
+ hr = IMFSourceReader_ReadSample(reader, MF_SOURCE_READER_ANY_STREAM, 0, &actual_index, &stream_flags,
+ ×tamp, &sample);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ ok(!stream_flags, "Unexpected stream flags %#lx.\n", stream_flags);
+ ok(timestamp == 123, "Unexpected timestamp.\n");
+ ok(!!sample, "Expected sample object.\n");
+
+ /* Once the last read sample of all streams has the same timestamp value, the reader will
+ continue reading from the first stream until its timestamp increases. */
+ todo_wine ok(!actual_index, "%d: Unexpected stream index %lu.\n", TEST_SOURCE_NUM_STREAMS + 1, actual_index);
+
+ IMFSample_Release(sample);
+
IMFSourceReader_Release(reader);
IMFMediaSource_Release(source);
@@ -1172,6 +1206,39 @@ static void test_source_reader_from_media_source(void)
IMFMediaSource_Release(source);
fail_request_sample = FALSE;
+
+ /* MF_SOURCE_READER_ANY_STREAM with streams of different sample sizes */
+ source = create_test_source(2);
+ ok(!!source, "Failed to create test source.\n");
+
+ test_source = impl_from_IMFMediaSource(source);
+ test_source->streams[0]->sample_duration = 100000;
+ test_source->streams[1]->sample_duration = 400000;
+
+ hr = MFCreateSourceReaderFromMediaSource(source, NULL, &reader);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+ hr = IMFSourceReader_SetStreamSelection(reader, 0, TRUE);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+ hr = IMFSourceReader_SetStreamSelection(reader, 1, TRUE);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+
+ /* The source reader picks the stream whose last sample had the lower timestamp */
+ for (i = 0; i < ARRAY_SIZE(expected_sample_order); i++)
+ {
+ hr = IMFSourceReader_ReadSample(reader, MF_SOURCE_READER_ANY_STREAM, 0, &actual_index, &stream_flags, ×tamp, &sample);
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
+ ok(!stream_flags, "Unexpected stream flags %#lx.\n", stream_flags);
+ ok(!!sample, "Expected sample object.\n");
+ todo_wine_if (actual_index != expected_sample_order[i])
+ ok (actual_index == expected_sample_order[i], "Got sample %u from unexpected stream %lu, expected %lu.\n",
+ i, actual_index, expected_sample_order[i]);
+ IMFSample_Release(sample);
+ }
+
+ IMFSourceReader_Release(reader);
+ IMFMediaSource_Release(source);
}
static void test_reader_d3d9(void)
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/209
June 8, 2022
[PATCH 0/2] MR209: mfreadwrite: Base new MF_SOURCE_READER_ANY_STREAM behavior off timestamps
by Derek Lesho (@dlesho)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/209
June 8, 2022
Re: [PATCH 1/6] dinput/tests: Use dinput_test_(init|exit) for all tests.
by Marvin
Hi,
While running your changed tests, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at:
https://testbot.winehq.org/JobDetails.pl?Key=116466
Your paranoid android.
=== w7u_2qxl (32 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w7u_el (32 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w864 (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w1064v1507 (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w1064v1809 (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w1064 (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w1064_2qxl (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w10pro64 (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w10pro64_en_AE_u8 (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w10pro64_ar (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w10pro64_ja (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w10pro64_zh_CN (64 bit report) ===
Report validation errors:
dinput:force_feedback is missing some skip messages
=== w7u_2qxl (32 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w7u_el (32 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w864 (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w1064v1507 (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w1064v1809 (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w1064 (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w1064_2qxl (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w10pro64 (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w10pro64_en_AE_u8 (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w10pro64_ar (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w10pro64_ja (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w10pro64_zh_CN (64 bit report) ===
Report validation errors:
dinput:hotplug is missing some skip messages
=== w7u_2qxl (32 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w7u_el (32 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w8 (32 bit report) ===
dinput:
joystick8.c:1267: Test failed: 0x500: Acquire returned: 0x80070005
joystick8.c:1269: Test failed: 0x500: SetCooperativeLevel returned: 0
joystick8.c:1685: Test failed: 0x800: got lY 16853
=== w864 (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w1064v1507 (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w1064v1809 (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w1064 (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w1064_2qxl (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w10pro64 (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w10pro64_en_AE_u8 (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w10pro64_ar (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w10pro64_ja (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== w10pro64_zh_CN (64 bit report) ===
Report validation errors:
dinput:joystick8 is missing some skip messages
=== debian11 (32 bit report) ===
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (32 bit Arabic:Morocco report) ===
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (32 bit German report) ===
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (32 bit French report) ===
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (32 bit Hebrew:Israel report) ===
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (32 bit Hindi:India report) ===
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (32 bit Japanese:Japan report) ===
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (32 bit Chinese:China report) ===
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
=== debian11 (64 bit WoW report) ===
Report validation errors:
dinput:force_feedback contains a misplaced todo line for hid
dinput:hotplug contains a misplaced todo line for hid
dinput:joystick8 contains a misplaced todo line for hid
June 8, 2022
[tools 2/2] testbot/orm: Remove parameters from Create{Detail,Item}refPropertyDescriptor().
by Francois Gouget
Itemref properties cannot be keys so the IsKey parameter is not
necessary.
Similarly Detailref properties can neither be keys, nor required.
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
---
testbot/lib/ObjectModel/DetailrefPropertyDescriptor.pm | 6 +++---
testbot/lib/ObjectModel/ItemrefPropertyDescriptor.pm | 6 +++---
testbot/lib/WineTestBot/CGI/Sessions.pm | 2 +-
testbot/lib/WineTestBot/Jobs.pm | 8 ++++----
testbot/lib/WineTestBot/PendingPatchSets.pm | 2 +-
testbot/lib/WineTestBot/PendingPatches.pm | 2 +-
testbot/lib/WineTestBot/RecordGroups.pm | 2 +-
testbot/lib/WineTestBot/Steps.pm | 2 +-
testbot/lib/WineTestBot/StepsTasks.pm | 2 +-
testbot/lib/WineTestBot/Tasks.pm | 2 +-
testbot/lib/WineTestBot/UserRoles.pm | 2 +-
testbot/lib/WineTestBot/Users.pm | 2 +-
12 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/testbot/lib/ObjectModel/DetailrefPropertyDescriptor.pm b/testbot/lib/ObjectModel/DetailrefPropertyDescriptor.pm
index 25144d08c..5825f7486 100644
--- a/testbot/lib/ObjectModel/DetailrefPropertyDescriptor.pm
+++ b/testbot/lib/ObjectModel/DetailrefPropertyDescriptor.pm
@@ -60,10 +60,10 @@ sub ValidateValue($$$)
return undef;
}
-sub CreateDetailrefPropertyDescriptor($$$$$)
+sub CreateDetailrefPropertyDescriptor($$$)
{
- my ($Name, $DisplayName, $IsKey, $IsRequired, $Creator) = @_;
- return ObjectModel::DetailrefPropertyDescriptor->new($Name, $DisplayName, $IsKey, $IsRequired, $Creator);
+ my ($Name, $DisplayName, $Creator) = @_;
+ return ObjectModel::DetailrefPropertyDescriptor->new($Name, $DisplayName, !1, !1, $Creator);
}
sub SetDetailrefKeyPrefix($@)
diff --git a/testbot/lib/ObjectModel/ItemrefPropertyDescriptor.pm b/testbot/lib/ObjectModel/ItemrefPropertyDescriptor.pm
index d79e1d25a..6895e801a 100644
--- a/testbot/lib/ObjectModel/ItemrefPropertyDescriptor.pm
+++ b/testbot/lib/ObjectModel/ItemrefPropertyDescriptor.pm
@@ -72,10 +72,10 @@ sub ValidateValue($$$)
return undef;
}
-sub CreateItemrefPropertyDescriptor($$$$$$)
+sub CreateItemrefPropertyDescriptor($$$$$)
{
- my ($Name, $DisplayName, $IsKey, $IsRequired, $Creator, $RefColNames) = @_;
- return ObjectModel::ItemrefPropertyDescriptor->new($Name, $DisplayName, $IsKey, $IsRequired, $Creator, $RefColNames);
+ my ($Name, $DisplayName, $IsRequired, $Creator, $RefColNames) = @_;
+ return ObjectModel::ItemrefPropertyDescriptor->new($Name, $DisplayName, !1, $IsRequired, $Creator, $RefColNames);
}
1;
diff --git a/testbot/lib/WineTestBot/CGI/Sessions.pm b/testbot/lib/WineTestBot/CGI/Sessions.pm
index d61c6e0ff..5ca84e734 100644
--- a/testbot/lib/WineTestBot/CGI/Sessions.pm
+++ b/testbot/lib/WineTestBot/CGI/Sessions.pm
@@ -72,7 +72,7 @@ sub CreateItem($)
my @PropertyDescriptors = (
CreateBasicPropertyDescriptor("Id", "Session id", 1, 1, "A", 32),
CreateBasicPropertyDescriptor("UserName", "User", !1, 1, "A", 40),
- CreateItemrefPropertyDescriptor("User", "User", !1, 1, \&CreateUsers, ["UserName"]),
+ CreateItemrefPropertyDescriptor("User", "User", 1, \&CreateUsers, ["UserName"]),
CreateBasicPropertyDescriptor("Permanent", "Permanent session", !1, 1, "B", 1),
);
diff --git a/testbot/lib/WineTestBot/Jobs.pm b/testbot/lib/WineTestBot/Jobs.pm
index 091420d45..140bd572b 100644
--- a/testbot/lib/WineTestBot/Jobs.pm
+++ b/testbot/lib/WineTestBot/Jobs.pm
@@ -509,9 +509,9 @@ sub CreateItem($)
my @PropertyDescriptors = (
CreateBasicPropertyDescriptor("Id", "Job", 1, 1, "S", 10),
CreateBasicPropertyDescriptor("BranchName", "Branch", !1, 1, "A", 20),
- CreateItemrefPropertyDescriptor("Branch", "Branch", !1, 1, \&CreateBranches, ["BranchName"]),
+ CreateItemrefPropertyDescriptor("Branch", "Branch", 1, \&CreateBranches, ["BranchName"]),
CreateBasicPropertyDescriptor("UserName", "Author", !1, 1, "A", 40),
- CreateItemrefPropertyDescriptor("User", "Author", !1, 1, \&CreateUsers, ["UserName"]),
+ CreateItemrefPropertyDescriptor("User", "Author", 1, \&CreateUsers, ["UserName"]),
CreateBasicPropertyDescriptor("Priority", "Priority", !1, 1, "N", 1),
CreateEnumPropertyDescriptor("Status", "Status", !1, 1, ['new', 'staging', 'queued', 'running', 'completed', 'badpatch', 'badbuild', 'boterror', 'canceled']),
CreateBasicPropertyDescriptor("Remarks", "Remarks", !1, !1, "A", 128),
@@ -521,8 +521,8 @@ my @PropertyDescriptors = (
# Somehow mod_perl sometimes fails to find CreatePatches() if not given the
# fully qualified name, but never has any trouble with the other Create*()
# functions.
- CreateItemrefPropertyDescriptor("Patch", "Submitted from patch", !1, !1, \&WineTestBot::Patches::CreatePatches, ["PatchId"]),
- CreateDetailrefPropertyDescriptor("Steps", "Steps", !1, !1, \&CreateSteps),
+ CreateItemrefPropertyDescriptor("Patch", "Submitted from patch", !1, \&WineTestBot::Patches::CreatePatches, ["PatchId"]),
+ CreateDetailrefPropertyDescriptor("Steps", "Steps", \&CreateSteps),
);
SetDetailrefKeyPrefix("Job", @PropertyDescriptors);
diff --git a/testbot/lib/WineTestBot/PendingPatchSets.pm b/testbot/lib/WineTestBot/PendingPatchSets.pm
index 0fedc52e6..51a1d1341 100644
--- a/testbot/lib/WineTestBot/PendingPatchSets.pm
+++ b/testbot/lib/WineTestBot/PendingPatchSets.pm
@@ -193,7 +193,7 @@ my @PropertyDescriptors = (
CreateBasicPropertyDescriptor("EMail", "EMail of series author", 1, 1, "A", 40),
CreateBasicPropertyDescriptor("Version", "Version", 1, 1, "N", 2),
CreateBasicPropertyDescriptor("TotalParts", "Expected number of parts in series", 1, 1, "N", 2),
- CreateDetailrefPropertyDescriptor("Parts", "Parts received so far", !1, !1, \&CreatePendingPatches),
+ CreateDetailrefPropertyDescriptor("Parts", "Parts received so far", \&CreatePendingPatches),
);
SetDetailrefKeyPrefix("PendingPatchSet", @PropertyDescriptors);
diff --git a/testbot/lib/WineTestBot/PendingPatches.pm b/testbot/lib/WineTestBot/PendingPatches.pm
index c65aabdce..f4768b823 100644
--- a/testbot/lib/WineTestBot/PendingPatches.pm
+++ b/testbot/lib/WineTestBot/PendingPatches.pm
@@ -66,7 +66,7 @@ sub CreateItem($)
my @PropertyDescriptors = (
CreateBasicPropertyDescriptor("No", "Part no", 1, 1, "N", 2),
CreateBasicPropertyDescriptor("PatchId", "Patch id", !1, 1, "N", 10),
- CreateItemrefPropertyDescriptor("Patch", "Submitted via patch", !1, 1, \&CreatePatches, ["PatchId"]),
+ CreateItemrefPropertyDescriptor("Patch", "Submitted via patch", 1, \&CreatePatches, ["PatchId"]),
);
my @FlatPropertyDescriptors = (
CreateBasicPropertyDescriptor("PendingPatchSetEMail", "EMail of series author", 1, 1, "A", 40),
diff --git a/testbot/lib/WineTestBot/RecordGroups.pm b/testbot/lib/WineTestBot/RecordGroups.pm
index c3022ae5b..116d105ee 100644
--- a/testbot/lib/WineTestBot/RecordGroups.pm
+++ b/testbot/lib/WineTestBot/RecordGroups.pm
@@ -85,7 +85,7 @@ sub CreateItem($)
my @PropertyDescriptors = (
CreateBasicPropertyDescriptor("Id", "Group id", 1, 1, "S", 10),
CreateBasicPropertyDescriptor("Timestamp", "Timestamp", !1, 1, "DT", 19),
- CreateDetailrefPropertyDescriptor("Records", "Records", !1, !1, \&CreateRecords),
+ CreateDetailrefPropertyDescriptor("Records", "Records", \&CreateRecords),
);
SetDetailrefKeyPrefix("RecordGroup", @PropertyDescriptors);
diff --git a/testbot/lib/WineTestBot/Steps.pm b/testbot/lib/WineTestBot/Steps.pm
index 48d020949..07e60cd5b 100644
--- a/testbot/lib/WineTestBot/Steps.pm
+++ b/testbot/lib/WineTestBot/Steps.pm
@@ -241,7 +241,7 @@ my @PropertyDescriptors = (
CreateBasicPropertyDescriptor("DebugLevel", "Debug level (WINETEST_DEBUG)", !1, 1, "N", 2),
CreateBasicPropertyDescriptor("LogTime", "Timestamp traces (WINETEST_TIME)", !1, 1, "B", 1),
CreateBasicPropertyDescriptor("ReportSuccessfulTests", "Report successful tests (WINETEST_REPORT_SUCCESS)", !1, 1, "B", 1),
- CreateDetailrefPropertyDescriptor("Tasks", "Tasks", !1, !1, \&CreateTasks),
+ CreateDetailrefPropertyDescriptor("Tasks", "Tasks", \&CreateTasks),
);
SetDetailrefKeyPrefix("Step", @PropertyDescriptors);
my @FlatPropertyDescriptors = (
diff --git a/testbot/lib/WineTestBot/StepsTasks.pm b/testbot/lib/WineTestBot/StepsTasks.pm
index 794c73eb7..2533c6a01 100644
--- a/testbot/lib/WineTestBot/StepsTasks.pm
+++ b/testbot/lib/WineTestBot/StepsTasks.pm
@@ -182,7 +182,7 @@ my @PropertyDescriptors = (
CreateBasicPropertyDescriptor("Type", "Step type", !1, 1, "A", 32),
CreateBasicPropertyDescriptor("Status", "Status", !1, 1, "A", 32),
CreateBasicPropertyDescriptor("VMName", "VM", !1, 1, "A", 20),
- CreateItemrefPropertyDescriptor("VM", "VM", !1, 1, \&CreateVMs, ["VMName"]),
+ CreateItemrefPropertyDescriptor("VM", "VM", 1, \&CreateVMs, ["VMName"]),
CreateBasicPropertyDescriptor("Timeout", "Timeout", !1, 1, "N", 4),
CreateBasicPropertyDescriptor("FileName", "File", !1, !1, "A", 100),
CreateBasicPropertyDescriptor("FileType", "File Type", !1, 1, "A", 32),
diff --git a/testbot/lib/WineTestBot/Tasks.pm b/testbot/lib/WineTestBot/Tasks.pm
index 8e9386299..5c5813cd9 100644
--- a/testbot/lib/WineTestBot/Tasks.pm
+++ b/testbot/lib/WineTestBot/Tasks.pm
@@ -355,7 +355,7 @@ my @PropertyDescriptors = (
CreateBasicPropertyDescriptor("No", "Task", 1, 1, "N", 2),
CreateEnumPropertyDescriptor("Status", "Status", !1, 1, ['queued', 'running', 'completed', 'badpatch', 'badbuild', 'boterror', 'canceled', 'skipped']),
CreateBasicPropertyDescriptor("VMName", "VM", !1, 1, "A", 20),
- CreateItemrefPropertyDescriptor("VM", "VM", !1, 1, \&CreateVMs, ["VMName"]),
+ CreateItemrefPropertyDescriptor("VM", "VM", 1, \&CreateVMs, ["VMName"]),
CreateBasicPropertyDescriptor("Timeout", "Timeout", !1, 1, "N", 4),
CreateBasicPropertyDescriptor("Missions", "Missions", !1, 1, "A", 256),
CreateBasicPropertyDescriptor("CmdLineArg", "Command line args", !1, !1, "A", 256),
diff --git a/testbot/lib/WineTestBot/UserRoles.pm b/testbot/lib/WineTestBot/UserRoles.pm
index fcdbc8e04..90c4332c3 100644
--- a/testbot/lib/WineTestBot/UserRoles.pm
+++ b/testbot/lib/WineTestBot/UserRoles.pm
@@ -59,7 +59,7 @@ sub CreateItem($)
my @PropertyDescriptors = (
CreateBasicPropertyDescriptor("RoleName", "Role", 1, 1, "A", 20),
- CreateItemrefPropertyDescriptor("Role", "Role", !1, 1, \&CreateRoles, ["RoleName"]),
+ CreateItemrefPropertyDescriptor("Role", "Role", 1, \&CreateRoles, ["RoleName"]),
);
my @FlatPropertyDescriptors = (
CreateBasicPropertyDescriptor("UserName", "Username", 1, 1, "A", 40),
diff --git a/testbot/lib/WineTestBot/Users.pm b/testbot/lib/WineTestBot/Users.pm
index f2f2a199d..70d0d7b75 100644
--- a/testbot/lib/WineTestBot/Users.pm
+++ b/testbot/lib/WineTestBot/Users.pm
@@ -326,7 +326,7 @@ my @PropertyDescriptors = (
CreateBasicPropertyDescriptor("Password", "Password", !1, 1, "A", 49),
CreateBasicPropertyDescriptor("RealName", "Real name", !1, !1, "A", 40),
CreateBasicPropertyDescriptor("ResetCode", "Password reset code", !1, !1, "A", 32),
- CreateDetailrefPropertyDescriptor("Roles", "Roles", !1, !1, \&CreateUserRoles),
+ CreateDetailrefPropertyDescriptor("Roles", "Roles", \&CreateUserRoles),
);
SetDetailrefKeyPrefix("User", @PropertyDescriptors);
--
2.30.2
June 8, 2022