Adds the tray icons implementation based on org.kde.StatusNotifierItem interface usage. Does allow restarting StatusNotifierWatcher object, but will fallback to XEMBED or internal tray, if wine gets initialized when there is no StatusNotifierWatcher object registered.
--
v8: configure: fix winesni.drv not getting disabled
https://gitlab.winehq.org/wine/wine/-/merge_requests/2808
> Yes, Windows 10 v1803 ("April 2018 Update") was the first stable release of Windows to include this feature. `w1064v1507` fails, while `w1064v1809` passes.
We'll need to account for that in the tests, by failing with win_skip() when we can't create an AF_UNIX socket.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786#note_33107
> @zfigura Can you elaborate on this? I don't see a clean way of doing this in ntdll without modifying `struct afd_bind_params`, `struct afd_connect_params`, etc. to add a field for the Unix path, since none of the other `sock_ioctl` cases add on varargs.
afd_bind_params et al. should already take a variable sized sockaddr, and the struct definitions in include/wine/afd.h mention that specifically. Am I missing something?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786#note_33106
Stefan Dösinger (@stefan) commented about dlls/d3d8/tests/device.c:
> + BOOL has_texture;
> + DWORD filters[7];
> + }
> + tests[] =
> + {
> + {
> + TRUE,
> + {
> + D3DTEXF_NONE,
> + D3DTEXF_POINT,
> + D3DTEXF_LINEAR,
> + D3DTEXF_ANISOTROPIC,
> + D3DTEXF_FLATCUBIC,
> + D3DTEXF_GAUSSIANCUBIC,
> + 0xdeadbeef,
> + },
This feels awkward, the filter enum is the same in both cases.
I think the test[] array can be removed entirely, or one filter[] array be used for both. (At which point tests[] becomes a relatively pointless array with TRUE and FALSE in it).
I am not married to testing the value 0xdeadbeef, D3DTEXF_GAUSSIANCUBIC + 1 (6) would work just as well imo. That'd allow you to do for (mip = 0; mip <= D3DTEXF_GAUSSIANCUBIC + 1; ++mip).
To answer your question re texture formats that can't be filtered: To my knowledge that doesn't exist in d3d8, and there is no equivalent to D3DUSAGE_QUERY_FILTER in d3d8 - this value is used to check for filtering capability in IDirect3D9::CheckDeviceFormat.
Hypothetically, a volume texture could have different filter capabilities than a 2D texture. This seems to be the case even on my r200 - it supports mip filters (D3DPTFILTERCAPS_MIPFPOINT, D3DPTFILTERCAPS_MIPFLINEAR) for 2D, but not cube or 3D textures. I highly doubt that it complains about this in ValidateTexture though. I'll give it a try just in case.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2821#note_33093
Stefan Dösinger (@stefan) commented about dlls/d3d8/device.c:
> hr = wined3d_device_validate_device(device->wined3d_device, pass_count);
> wined3d_mutex_unlock();
>
> + /* In d3d8, texture filters are not validated, so errors concerning
> + * unsupported ones are ignored here. */
> + if (hr == WINED3DERR_UNSUPPORTEDTEXTUREFILTER) {
> + *pass_count = 1;
> + return D3D_OK;
> + }
Two small requests here: Please follow the code style of the rest of the file (put the { on its own line), and print a WARN message, e.g. WARN("Ignoring invalid texture filter settings.\n");
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2821#note_33092