Application "ZusiDisplay" wants to set these socket options. setsockopt() currently returns an error on wine, which prevents the application from working correctly.
I'm not really sure if I'm using the IOCTL_AFD_WINE_SET/GET_* correctly. Maybe the new ones should have different "function" numbers and be sorted below the one for TCP_NODELAY?
Also, not sure if anything needs to be done in unix/socket.c for portability. Are these TCP_KEEPIDLE etc. constants defined on all OSes supported by wine? If not, how should I handle this?
ZusiDisplay seems to work fine if the setsockopt() call is ignored in wine, without returning an error. So if this merge request is not that great, I'd be happy to send a merge request to ignore the call instead.
--
v3: ws2_32: Implement TCP_KEEP{ALIVE,CNT,INTVL} options.
ws2_32/tests: Test TCP_KEEP{ALIVE,CNT,INTVL} options.
include: Add TCP_KEEPCNT and TCP_KEEPINTVL definitions.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5195
Stefan Dösinger (@stefan) commented about dlls/ddraw/tests/ddraw1.c:
> + /* Pick a pixel where no quads are present */
> + pick_rect.x1 = pick_rect.x2 = 480;
> + pick_rect.y1 = pick_rect.y2 = 360;
> + get_pickrecords(device, execute_buffer, viewport, &pick_rect, 0, NULL);
> +
> + /* Pick a pixel where one quad is present */
> + pick_rect.x1 = pick_rect.x2 = 120;
> + pick_rect.y1 = pick_rect.y2 = 120;
> + record_count = get_pickrecords(device, execute_buffer, viewport, &pick_rect, 1, &record[0]);
> + if (record_count == 1)
> + check_pickrecord(&record[0], D3DOP_TRIANGLE, quad_offset + 12, 0.25f);
> +
> + /* Pick a pixel where quad is clipped */
> + pick_rect.x1 = pick_rect.x2 = 40;
> + pick_rect.y1 = pick_rect.y2 = 120;
> + get_pickrecords(device, execute_buffer, viewport, &pick_rect, 0, NULL);
What does clipped mean here? Outside of the 0.0;1.0 depth range?
In the TLVERTEX case you get depth values -0.5, 6.5 and -3.0, suggesting that the near and far clip planes don't matter. If I understand this test here right they do matter for LVERTEX. That is consistent with later d3d versions where Z clipping is essentially disabled when drawing pretransformed geometry with the right settings.
Another way to look at this is that Z clipping is done by D3DPROCESSVERTICES_TRANSFORM not the draw op (D3DOP_TRIANGLE).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3422#note_63421
Stefan Dösinger (@stefan) commented about dlls/ddraw/tests/ddraw1.c:
> +
> + /* Pick a pixel where multiple quads are present */
> + pick_rect.x1 = pick_rect.x2 = 64;
> + pick_rect.y1 = pick_rect.y2 = 360;
> + record_count = get_pickrecords(device, execute_buffer, viewport, &pick_rect, 3, &record[0]);
> + if (record_count == 3)
> + {
> + /* Documentation states this list is z-ordered, but it appears that it is not. */
> + check_pickrecord(&record[0], D3DOP_TRIANGLE, quad_offset + 12, -0.5f);
> + check_pickrecord(&record[1], D3DOP_TRIANGLE, quad_offset + 32, 6.5f);
> + check_pickrecord(&record[2], D3DOP_TRIANGLE, quad_offset + 52, -3.0f);
> +
> + /* If the count is wrong, do not populate any records */
> + memset(&record, 0, sizeof(record));
> + record_count = 1;
> + hr = IDirect3DDevice_GetPickRecords(device, &record_count, &record[0]);
I would expect it to write 3 pick records if the input size in record_count is larger than the number retrieved. I.e., if you set record_count = 4 and make the array large enough it should write 3 and leave the 4th untouched. That's the usual pattern for getters like this at least.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3422#note_63420
This work is based on Wine-Staging patch "msi-msi_vcl_get_cost" by Mark Jansen.
That patch attempts to avoid overflow, although not particularly well, since the
damage would already have been done by calculate_file_cost(). This patch series
addresses the issue in both places.
The Wine-Staging patch seems to have originally been written in an attempt to
address a bug visible with (at least) some Microsoft Office and LibreOffice
installers where file costs would render incorrectly. That bug is recorded as
ReactOS bug 12229 [1], which report includes both the patch to vcl_get_cost(),
and the patch fixing the actual bug, which did eventually made it upstream as
b53957df2a73ae51ca6ebc1e88bb9c4ed8b8d274.
[1] https://jira.reactos.org/browse/CORE-12229
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5216
--
v2: shell32: Implement Paste in the item menu.
shell32: Respect the parent PIDL when pasting from CFSTR_SHELLIDLIST.
shell32: Reimplement pasting from CF_DROP directly.
shell32: Add a get_data_format() helper.
shell32: Move DoPaste() up.
shell32: Remove useless and commented out code.
shell32/tests: Add tests for context menu copy/paste.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5215