Signed-off-by: Brendan Shanks bshanks@codeweavers.com --- dlls/user32/sysparams.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c index 8b2b3381dc3..09506c503ba 100644 --- a/dlls/user32/sysparams.c +++ b/dlls/user32/sysparams.c @@ -4815,7 +4815,7 @@ done: */ LONG WINAPI DisplayConfigGetDeviceInfo(DISPLAYCONFIG_DEVICE_INFO_HEADER *packet) { - FIXME("stub: %p\n", packet); + TRACE("(%p)\n", packet);
if (!packet || packet->size < sizeof(*packet)) return ERROR_GEN_FAILURE; @@ -4825,6 +4825,7 @@ LONG WINAPI DisplayConfigGetDeviceInfo(DISPLAYCONFIG_DEVICE_INFO_HEADER *packet) case DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME: { DISPLAYCONFIG_SOURCE_DEVICE_NAME *source_name = (DISPLAYCONFIG_SOURCE_DEVICE_NAME *)packet; + FIXME("stub: packet type %u\n", packet->type); if (packet->size < sizeof(*source_name)) return ERROR_INVALID_PARAMETER;
@@ -4833,6 +4834,7 @@ LONG WINAPI DisplayConfigGetDeviceInfo(DISPLAYCONFIG_DEVICE_INFO_HEADER *packet) case DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME: { DISPLAYCONFIG_TARGET_DEVICE_NAME *target_name = (DISPLAYCONFIG_TARGET_DEVICE_NAME *)packet; + FIXME("stub: packet type %u\n", packet->type); if (packet->size < sizeof(*target_name)) return ERROR_INVALID_PARAMETER;
@@ -4841,6 +4843,7 @@ LONG WINAPI DisplayConfigGetDeviceInfo(DISPLAYCONFIG_DEVICE_INFO_HEADER *packet) case DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_PREFERRED_MODE: { DISPLAYCONFIG_TARGET_PREFERRED_MODE *preferred_mode = (DISPLAYCONFIG_TARGET_PREFERRED_MODE *)packet; + FIXME("stub: packet type %u\n", packet->type); if (packet->size < sizeof(*preferred_mode)) return ERROR_INVALID_PARAMETER;
@@ -4849,6 +4852,7 @@ LONG WINAPI DisplayConfigGetDeviceInfo(DISPLAYCONFIG_DEVICE_INFO_HEADER *packet) case DISPLAYCONFIG_DEVICE_INFO_GET_ADAPTER_NAME: { DISPLAYCONFIG_ADAPTER_NAME *adapter_name = (DISPLAYCONFIG_ADAPTER_NAME *)packet; + FIXME("stub: packet type %u\n", packet->type); if (packet->size < sizeof(*adapter_name)) return ERROR_INVALID_PARAMETER;
Signed-off-by: Brendan Shanks bshanks@codeweavers.com --- dlls/user32/sysparams.c | 48 +++++++++++++++++++++++++++++++++++-- dlls/user32/tests/monitor.c | 2 -- 2 files changed, 46 insertions(+), 4 deletions(-)
diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c index 09506c503ba..be1ff44cfc4 100644 --- a/dlls/user32/sysparams.c +++ b/dlls/user32/sysparams.c @@ -4815,21 +4815,65 @@ done: */ LONG WINAPI DisplayConfigGetDeviceInfo(DISPLAYCONFIG_DEVICE_INFO_HEADER *packet) { + LONG ret = ERROR_GEN_FAILURE; + HANDLE mutex; + HDEVINFO devinfo; + SP_DEVINFO_DATA device_data = {sizeof(device_data)}; + DWORD index = 0, type; + LUID gpu_luid; + TRACE("(%p)\n", packet);
if (!packet || packet->size < sizeof(*packet)) return ERROR_GEN_FAILURE; + wait_graphics_driver_ready();
switch (packet->type) { case DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME: { DISPLAYCONFIG_SOURCE_DEVICE_NAME *source_name = (DISPLAYCONFIG_SOURCE_DEVICE_NAME *)packet; - FIXME("stub: packet type %u\n", packet->type); + WCHAR device_name[CCHDEVICENAME]; + LONG source_id; + if (packet->size < sizeof(*source_name)) return ERROR_INVALID_PARAMETER;
- return ERROR_NOT_SUPPORTED; + mutex = get_display_device_init_mutex(); + devinfo = SetupDiGetClassDevsW(&GUID_DEVCLASS_MONITOR, DISPLAY, NULL, DIGCF_PRESENT); + if (devinfo == INVALID_HANDLE_VALUE) + { + release_display_device_init_mutex(mutex); + return ret; + } + + while (SetupDiEnumDeviceInfo(devinfo, index++, &device_data)) + { + if (!SetupDiGetDevicePropertyW(devinfo, &device_data, &DEVPROPKEY_MONITOR_GPU_LUID, + &type, (BYTE *)&gpu_luid, sizeof(gpu_luid), NULL, 0)) + continue; + + if ((source_name->header.adapterId.LowPart != gpu_luid.LowPart) || + (source_name->header.adapterId.HighPart != gpu_luid.HighPart)) + continue; + + /* QueryDisplayConfig() derives the source ID from the adapter name. */ + if (!SetupDiGetDevicePropertyW(devinfo, &device_data, &WINE_DEVPROPKEY_MONITOR_ADAPTERNAME, + &type, (BYTE *)device_name, sizeof(device_name), NULL, 0)) + continue; + + source_id = strtolW(device_name + ARRAY_SIZE(ADAPTER_PREFIX), NULL, 10); + source_id--; + if (source_name->header.id != source_id) + continue; + + lstrcpyW(source_name->viewGdiDeviceName, device_name); + ret = ERROR_SUCCESS; + break; + } + SetupDiDestroyDeviceInfoList(devinfo); + release_display_device_init_mutex(mutex); + return ret; } case DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME: { diff --git a/dlls/user32/tests/monitor.c b/dlls/user32/tests/monitor.c index f469111a26c..8fe4701d003 100644 --- a/dlls/user32/tests/monitor.c +++ b/dlls/user32/tests/monitor.c @@ -1300,7 +1300,6 @@ static void test_QueryDisplayConfig_result(UINT32 flags,
for (i = 0; i < paths; i++) { - todo_wine { source_name.header.type = DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME; source_name.header.size = sizeof(source_name); source_name.header.adapterId = pi[i].sourceInfo.adapterId; @@ -1309,7 +1308,6 @@ static void test_QueryDisplayConfig_result(UINT32 flags, ret = pDisplayConfigGetDeviceInfo(&source_name.header); ok(!ret, "Expected 0, got %d\n", ret); ok(source_name.viewGdiDeviceName[0] != '\0', "Expected GDI device name, got empty string\n"); - }
todo_wine { target_name.header.type = DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME;
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=74630
Your paranoid android.
=== debiant (32 bit report) ===
user32: monitor: Timeout msg: Timeout
=== debiant (32 bit French report) ===
user32: monitor: Timeout
=== debiant (build log) ===
0024:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0024:err:winediag:nodrv_CreateWindow The explorer process failed to start. Task: WineTest did not produce the win32_ja_JP report
=== debiant (32 bit WoW report) ===
user32: monitor: Timeout
=== debiant (64 bit WoW report) ===
user32: input.c:2485: Test failed: 4: Unexpected cursor movement input.c:2485: Test failed: 5: Unexpected cursor movement input.c:2485: Test failed: 6: Unexpected cursor movement input.c:2485: Test failed: 7: Unexpected cursor movement input.c:2485: Test failed: 8: Unexpected cursor movement input.c:2206: Test failed: 9: foreground process expected WM_MOUSEMOVE message input.c:2485: Test failed: 9: Unexpected cursor movement input.c:2206: Test failed: 10: foreground process expected WM_MOUSEMOVE message input.c:2485: Test failed: 10: Unexpected cursor movement input.c:2206: Test failed: 11: foreground process expected WM_MOUSEMOVE message input.c:2485: Test failed: 11: Unexpected cursor movement input.c:2206: Test failed: 12: foreground process expected WM_MOUSEMOVE message input.c:2485: Test failed: 12: Unexpected cursor movement input.c:2485: Test failed: 13: Unexpected cursor movement input.c:2485: Test failed: 14: Unexpected cursor movement input.c:2485: Test failed: 15: Unexpected cursor movement input.c:2485: Test failed: 16: Unexpected cursor movement monitor: Timeout msg: Timeout
=== debiant (build log) ===
The task timed out
On 2020-07-02 07:40, Brendan Shanks wrote:
Signed-off-by: Brendan Shanks bshanks@codeweavers.com
dlls/user32/sysparams.c | 48 +++++++++++++++++++++++++++++++++++-- dlls/user32/tests/monitor.c | 2 -- 2 files changed, 46 insertions(+), 4 deletions(-)
diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c index 09506c503ba..be1ff44cfc4 100644 --- a/dlls/user32/sysparams.c +++ b/dlls/user32/sysparams.c @@ -4815,21 +4815,65 @@ done: */ LONG WINAPI DisplayConfigGetDeviceInfo(DISPLAYCONFIG_DEVICE_INFO_HEADER *packet) {
LONG ret = ERROR_GEN_FAILURE;
HANDLE mutex;
HDEVINFO devinfo;
SP_DEVINFO_DATA device_data = {sizeof(device_data)};
DWORD index = 0, type;
LUID gpu_luid;
TRACE("(%p)\n", packet); if (!packet || packet->size < sizeof(*packet)) return ERROR_GEN_FAILURE;
wait_graphics_driver_ready();
switch (packet->type) { case DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME: { DISPLAYCONFIG_SOURCE_DEVICE_NAME *source_name = (DISPLAYCONFIG_SOURCE_DEVICE_NAME *)packet;
FIXME("stub: packet type %u\n", packet->type);
WCHAR device_name[CCHDEVICENAME];
LONG source_id;
if (packet->size < sizeof(*source_name)) return ERROR_INVALID_PARAMETER;
return ERROR_NOT_SUPPORTED;
mutex = get_display_device_init_mutex();
devinfo = SetupDiGetClassDevsW(&GUID_DEVCLASS_MONITOR, DISPLAY, NULL, DIGCF_PRESENT);
if (devinfo == INVALID_HANDLE_VALUE)
{
release_display_device_init_mutex(mutex);
return ret;
}
while (SetupDiEnumDeviceInfo(devinfo, index++, &device_data))
{
if (!SetupDiGetDevicePropertyW(devinfo, &device_data, &DEVPROPKEY_MONITOR_GPU_LUID,
&type, (BYTE *)&gpu_luid, sizeof(gpu_luid), NULL, 0))
continue;
if ((source_name->header.adapterId.LowPart != gpu_luid.LowPart) ||
(source_name->header.adapterId.HighPart != gpu_luid.HighPart))
continue;
/* QueryDisplayConfig() derives the source ID from the adapter name. */
if (!SetupDiGetDevicePropertyW(devinfo, &device_data, &WINE_DEVPROPKEY_MONITOR_ADAPTERNAME,
&type, (BYTE *)device_name, sizeof(device_name), NULL, 0))
continue;
source_id = strtolW(device_name + ARRAY_SIZE(ADAPTER_PREFIX), NULL, 10);
source_id--;
if (source_name->header.id != source_id)
continue;
lstrcpyW(source_name->viewGdiDeviceName, device_name);
ret = ERROR_SUCCESS;
break;
}
SetupDiDestroyDeviceInfoList(devinfo);
release_display_device_init_mutex(mutex);
return ret; } case DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME: {
diff --git a/dlls/user32/tests/monitor.c b/dlls/user32/tests/monitor.c index f469111a26c..8fe4701d003 100644 --- a/dlls/user32/tests/monitor.c +++ b/dlls/user32/tests/monitor.c @@ -1300,7 +1300,6 @@ static void test_QueryDisplayConfig_result(UINT32 flags,
for (i = 0; i < paths; i++) {
todo_wine { source_name.header.type = DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME; source_name.header.size = sizeof(source_name); source_name.header.adapterId = pi[i].sourceInfo.adapterId;
@@ -1309,7 +1308,6 @@ static void test_QueryDisplayConfig_result(UINT32 flags, ret = pDisplayConfigGetDeviceInfo(&source_name.header); ok(!ret, "Expected 0, got %d\n", ret); ok(source_name.viewGdiDeviceName[0] != '\0', "Expected GDI device name, got empty string\n");
} todo_wine { target_name.header.type = DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME;
FWIW, this also fixes Call of Duty: Infinite Warfare DirectX error message on startup.
Signed-off-by: Brendan Shanks bshanks@codeweavers.com --- dlls/user32/tests/monitor.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/dlls/user32/tests/monitor.c b/dlls/user32/tests/monitor.c index 8fe4701d003..6e8c9a275d7 100644 --- a/dlls/user32/tests/monitor.c +++ b/dlls/user32/tests/monitor.c @@ -1309,6 +1309,15 @@ static void test_QueryDisplayConfig_result(UINT32 flags, ok(!ret, "Expected 0, got %d\n", ret); ok(source_name.viewGdiDeviceName[0] != '\0', "Expected GDI device name, got empty string\n");
+ /* Test with an invalid adapter LUID */ + source_name.header.type = DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME; + source_name.header.size = sizeof(source_name); + source_name.header.adapterId.LowPart = 0xFFFF; + source_name.header.adapterId.HighPart = 0xFFFF; + source_name.header.id = pi[i].sourceInfo.id; + ret = pDisplayConfigGetDeviceInfo(&source_name.header); + ok(ret == ERROR_GEN_FAILURE, "Expected GEN_FAILURE, got %d\n", ret); + todo_wine { target_name.header.type = DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME; target_name.header.size = sizeof(target_name);
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=74631
Your paranoid android.
=== debiant (32 bit report) ===
user32: monitor: Timeout
=== debiant (32 bit French report) ===
user32: monitor: Timeout
=== debiant (build log) ===
0024:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0024:err:winediag:nodrv_CreateWindow The explorer process failed to start. Task: WineTest did not produce the win32_ja_JP report
=== debiant (32 bit WoW report) ===
user32: monitor: Timeout msg: Timeout
=== debiant (64 bit WoW report) ===
user32: input.c:2485: Test failed: 4: Unexpected cursor movement input.c:2485: Test failed: 5: Unexpected cursor movement input.c:2485: Test failed: 6: Unexpected cursor movement input.c:2485: Test failed: 7: Unexpected cursor movement input.c:2485: Test failed: 8: Unexpected cursor movement input.c:2206: Test failed: 9: foreground process expected WM_MOUSEMOVE message input.c:2485: Test failed: 9: Unexpected cursor movement input.c:2206: Test failed: 10: foreground process expected WM_MOUSEMOVE message input.c:2485: Test failed: 10: Unexpected cursor movement input.c:2206: Test failed: 11: foreground process expected WM_MOUSEMOVE message input.c:2485: Test failed: 11: Unexpected cursor movement input.c:2206: Test failed: 12: foreground process expected WM_MOUSEMOVE message input.c:2485: Test failed: 12: Unexpected cursor movement input.c:2485: Test failed: 13: Unexpected cursor movement input.c:2485: Test failed: 14: Unexpected cursor movement input.c:2485: Test failed: 15: Unexpected cursor movement input.c:2485: Test failed: 16: Unexpected cursor movement monitor: Timeout msg: Timeout
=== debiant (build log) ===
The task timed out
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=74629
Your paranoid android.
=== debiant (32 bit report) ===
user32: monitor: Timeout msg: Timeout resource: Timeout scroll: Timeout
=== debiant (build log) ===
The task timed out
=== debiant (32 bit WoW report) ===
user32: monitor: Timeout
=== debiant (64 bit WoW report) ===
user32: clipboard.c:717: Test failed: 1: gle 5 clipboard.c:719: Test failed: 1: gle 1418 clipboard.c:746: Test failed: 1: count 4 clipboard.c:749: Test failed: 1: gle 1418 clipboard.c:760: Test failed: 1: gle 5 clipboard.c:765: Test failed: 1.0: got 0000 instead of 0007 clipboard.c:805: Test failed: 1: gle 1418 clipboard.c:815: Test failed: 1: count 4 clipboard.c:818: Test failed: 1: gle 1418 clipboard.c:833: Test failed: 1: gle 5 clipboard.c:838: Test failed: 1.0: got 0000 instead of 0007 clipboard.c:868: Test failed: 1: gle 1418 clipboard.c:717: Test failed: 2: gle 5 clipboard.c:719: Test failed: 2: gle 1418 clipboard.c:746: Test failed: 2: count 4 clipboard.c:749: Test failed: 2: gle 1418 clipboard.c:760: Test failed: 2: gle 5 clipboard.c:765: Test failed: 2.0: got 0000 instead of 000d clipboard.c:805: Test failed: 2: gle 1418 clipboard.c:815: Test failed: 2: count 4 clipboard.c:818: Test failed: 2: gle 1418 clipboard.c:833: Test failed: 2: gle 5 clipboard.c:838: Test failed: 2.0: got 0000 instead of 000d clipboard.c:868: Test failed: 2: gle 1418 clipboard.c:717: Test failed: 3: gle 5 clipboard.c:719: Test failed: 3: gle 1418 clipboard.c:746: Test failed: 3: count 5 clipboard.c:749: Test failed: 3: gle 1418 clipboard.c:755: Test failed: 3: 0003 not available clipboard.c:757: Test failed: 3: count 5 instead of 2 clipboard.c:760: Test failed: 3: gle 5 clipboard.c:765: Test failed: 3.0: got 0000 instead of 000e clipboard.c:805: Test failed: 3: gle 1418 clipboard.c:815: Test failed: 3: count 5 clipboard.c:818: Test failed: 3: gle 1418 clipboard.c:826: Test failed: 3: 0003 not available clipboard.c:828: Test failed: 3: count 5 instead of 2 clipboard.c:833: Test failed: 3: gle 5 clipboard.c:838: Test failed: 3.0: got 0000 instead of 000e clipboard.c:868: Test failed: 3: gle 1418 clipboard.c:717: Test failed: 4: gle 5 clipboard.c:719: Test failed: 4: gle 1418 clipboard.c:746: Test failed: 4: count 6 clipboard.c:749: Test failed: 4: gle 1418 clipboard.c:757: Test failed: 4: count 6 instead of 2 clipboard.c:760: Test failed: 4: gle 5 clipboard.c:765: Test failed: 4.0: got 0000 instead of 0003 clipboard.c:805: Test failed: 4: gle 1418 clipboard.c:815: Test failed: 4: count 6 clipboard.c:818: Test failed: 4: gle 1418 clipboard.c:828: Test failed: 4: count 6 instead of 2 clipboard.c:833: Test failed: 4: gle 5 clipboard.c:838: Test failed: 4.0: got 0000 instead of 0003 clipboard.c:868: Test failed: 4: gle 1418 clipboard.c:717: Test failed: 5: gle 5 clipboard.c:719: Test failed: 5: gle 1418 clipboard.c:746: Test failed: 5: count 7 clipboard.c:749: Test failed: 5: gle 1418 clipboard.c:755: Test failed: 5: 0008 not available clipboard.c:755: Test failed: 5: 0011 not available clipboard.c:757: Test failed: 5: count 7 instead of 3 clipboard.c:760: Test failed: 5: gle 5 clipboard.c:765: Test failed: 5.0: got 0000 instead of 0002 clipboard.c:805: Test failed: 5: gle 1418 clipboard.c:815: Test failed: 5: count 7 clipboard.c:818: Test failed: 5: gle 1418 clipboard.c:826: Test failed: 5: 0008 not available clipboard.c:826: Test failed: 5: 0011 not available clipboard.c:828: Test failed: 5: count 7 instead of 3 clipboard.c:833: Test failed: 5: gle 5 clipboard.c:838: Test failed: 5.0: got 0000 instead of 0002 clipboard.c:868: Test failed: 5: gle 1418 clipboard.c:717: Test failed: 6: gle 5 clipboard.c:719: Test failed: 6: gle 1418 clipboard.c:746: Test failed: 6: count 8 clipboard.c:749: Test failed: 6: gle 1418 clipboard.c:755: Test failed: 6: 0011 not available clipboard.c:757: Test failed: 6: count 8 instead of 3 clipboard.c:760: Test failed: 6: gle 5 clipboard.c:765: Test failed: 6.0: got 0000 instead of 0008 clipboard.c:805: Test failed: 6: gle 1418 clipboard.c:815: Test failed: 6: count 8 clipboard.c:818: Test failed: 6: gle 1418 clipboard.c:826: Test failed: 6: 0011 not available clipboard.c:828: Test failed: 6: count 8 instead of 3 clipboard.c:833: Test failed: 6: gle 5 clipboard.c:838: Test failed: 6.0: got 0000 instead of 0008 clipboard.c:868: Test failed: 6: gle 1418 clipboard.c:717: Test failed: 7: gle 5 clipboard.c:719: Test failed: 7: gle 1418 clipboard.c:746: Test failed: 7: count 9 clipboard.c:749: Test failed: 7: gle 1418 clipboard.c:757: Test failed: 7: count 9 instead of 3 clipboard.c:760: Test failed: 7: gle 5 clipboard.c:765: Test failed: 7.0: got 0000 instead of 0011 clipboard.c:805: Test failed: 7: gle 1418 clipboard.c:815: Test failed: 7: count 9 clipboard.c:818: Test failed: 7: gle 1418 clipboard.c:828: Test failed: 7: count 9 instead of 3 clipboard.c:833: Test failed: 7: gle 5 clipboard.c:838: Test failed: 7.0: got 0000 instead of 0011 clipboard.c:868: Test failed: 7: gle 1418 clipboard.c:874: Test failed: gle 5 clipboard.c:876: Test failed: gle 1418 clipboard.c:878: Test failed: gle 1418 input.c:2485: Test failed: 4: Unexpected cursor movement input.c:2485: Test failed: 5: Unexpected cursor movement input.c:2485: Test failed: 6: Unexpected cursor movement input.c:2485: Test failed: 7: Unexpected cursor movement input.c:2485: Test failed: 8: Unexpected cursor movement input.c:2206: Test failed: 9: foreground process expected WM_MOUSEMOVE message input.c:2485: Test failed: 9: Unexpected cursor movement input.c:2206: Test failed: 10: foreground process expected WM_MOUSEMOVE message input.c:2485: Test failed: 10: Unexpected cursor movement input.c:2206: Test failed: 11: foreground process expected WM_MOUSEMOVE message input.c:2485: Test failed: 11: Unexpected cursor movement input.c:2206: Test failed: 12: foreground process expected WM_MOUSEMOVE message input.c:2485: Test failed: 12: Unexpected cursor movement input.c:2485: Test failed: 13: Unexpected cursor movement input.c:2485: Test failed: 14: Unexpected cursor movement input.c:2485: Test failed: 15: Unexpected cursor movement input.c:2485: Test failed: 16: Unexpected cursor movement monitor: Timeout msg: Timeout
=== debiant (build log) ===
The task timed out