EA Desktop depends on that when tries to run the game with elevated privileges (which is performed from a process started by a service and running in a service session on Windows).
The improved stub only returns interactive ("Console") session, while Windows at least starting from Win Vista also always have "Services" session. While we could probably return "Sevices" as well, I think it is safer not to while we don't really have services running in "Services" session (along with all the winstation, token etc. info).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3756
The validation code is meant both as a check that the frontend is behaving properly and as a sort of the documentation to establish what is allowed and what is not in the IR.
~~Currently an assertion is thrown if validation fails. I realize this is a rather strong proposal, but it's of course up for debate. In theory asserting here is the right thing, as it is expected that the frontend is generating correct IR code. However vkd3d is already used in production for many programs, and it could very well be that some of those are working properly even if the generated IR is somewhat out of specs; allowing the assertion might cause regressions as soon as enough checks are implemented in the validator. Please let me know your opinions.~~ **Solved in favor of a softer failure, and only when validation is enabled**
--
v5: vkd3d-shader: Validate source parameters.
vkd3d-shader: Validate destination parameters.
vkd3d-shader: Validate register types.
vkd3d-shader: Validate instruction handlers.
vkd3d-shader: Introduce a boilerplate to validate the generated IR.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/317
If DISABLEAUTOREDIRECTS is set in BINDINFO options, urlmon does not set HTTP verb to GET when handling redirections.
Although HTTP specification is vague on the correct behaviour here, many web servers expect this. This is what's causing the "400 Bad Request" error when user tries to log into GMail accounts using Outlook.
--
v4: urlmon: test redirection of POST requests
urlmon: fix HTTP redirects when auto redirection is disabled
https://gitlab.winehq.org/wine/wine/-/merge_requests/3725
This begins the initial implementation of a unified QueryInterface on the dispex. There's a couple of hacks used to make the conversion split up easier, but they're all resolved within this MR.
--
v3: mshtml: Trace the object name in dispex methods.
mshtml: Use query_interface in the dispex vtbl for XMLHttpRequest.
mshtml: Use query_interface in the dispex vtbl for inner windows.
mshtml: Introduce query_interface in dispex vtbl and use it for DOM Nodes.
mshtml: Return interface directly from node vtbl's QI instead of HRESULT,
mshtml: Expose an EventTarget interface on the outer window for events'
https://gitlab.winehq.org/wine/wine/-/merge_requests/3723
This goes on top of !325 (which was already approved).
--
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/332
This begins the initial implementation of a unified QueryInterface on the dispex. There's a couple of hacks used to make the conversion split up easier, but they're all resolved within this MR.
--
v2: mshtml: Use query_interface in the dispex vtbl for XMLHttpRequest.
mshtml: Use query_interface in the dispex vtbl for inner windows.
mshtml: Introduce query_interface in dispex vtbl and use it for DOM Nodes.
mshtml: Return interface directly from node vtbl's QI instead of HRESULT,
mshtml: Expose an EventTarget interface on the outer window for events'
https://gitlab.winehq.org/wine/wine/-/merge_requests/3723
If DISABLEAUTOREDIRECTS is set in BINDINFO options, urlmon does not set HTTP verb to GET when handling redirections.
Although HTTP specification is vague on the correct behaviour here, many web servers expect this. This is what's causing the "400 Bad Request" error when user tries to log into GMail accounts using Outlook.
--
v3: urlmon: test redirection of POST requests
https://gitlab.winehq.org/wine/wine/-/merge_requests/3725
The validation code is meant both as a check that the frontend is behaving properly and as a sort of the documentation to establish what is allowed and what is not in the IR.
~~Currently an assertion is thrown if validation fails. I realize this is a rather strong proposal, but it's of course up for debate. In theory asserting here is the right thing, as it is expected that the frontend is generating correct IR code. However vkd3d is already used in production for many programs, and it could very well be that some of those are working properly even if the generated IR is somewhat out of specs; allowing the assertion might cause regressions as soon as enough checks are implemented in the validator. Please let me know your opinions.~~ **Solved in favor of a softer failure, and only when validation is enabled**
--
v4: vkd3d-shader: Validate source parameters.
vkd3d-shader: Validate destination parameters.
vkd3d-shader: Validate register types.
vkd3d-shader: Validator instruction handlers.
vkd3d-shader: Introduce a boilerplate to validate the generated IR.
vkd3d-shader: Embed the parsing location in vkd3d_shader_instruction.
vkd3d-shader: Destroy the SM6 parser on parsing errors.
vkd3d-shader: Destroy the SM4 parser on parsing errors.
vkd3d-shader: Destroy the SM1 parser on parsing errors.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/317
Windows 10 [received support](https://devblogs.microsoft.com/commandline/af_unix-comes-to-window… for AF_UNIX sockets in Insider Build 17063. This merge request adds basic support for AF_UNIX sockets to ws2_32 and wineserver.
Of particular note is the difficulty in handling `sun_path`. Most of the functions that allow for translating Windows paths to Unix paths are not accessible from ws2_32. I considered the following options:
* Pass the Windows path to wineserver and do the conversion there.
* This is, as far as I can tell, not possible without major rearchitecting. wineserver does not have functions to translate Windows paths to Unix paths, for obvious reasons.
* Obtain the current working directory of the requesting process and temporarily change directories to there.
* This only handles relative paths and fails for absolute paths, UNC paths, etc.
* Conditionally change directories based on whether the path is relative or not.
* This is error-prone and wineserver does not have the requisite functions to do this cleanly.
I ultimately decided to pass the translated Unix path to wineserver, which changes directories to `dirname(path)`. It then provides `bind` and `connect` with `basename(path)`. This is not threadsafe, but wineserver is not (currently) multithreaded.
Abstract sockets are not fully supported by this patch, matching the behavior of Windows.
--
v50: ws2_32/tests: Add test for AF_UNIX sockets fix.
server: Fix getsockname() and accept() on AF_UNIX sockets.
server: Introduce error when attempting to create a SOCK_DGRAM AF_UNIX socket.
server: Allow for deletion of socket files.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786
Windows 10 [received support](https://devblogs.microsoft.com/commandline/af_unix-comes-to-window… for AF_UNIX sockets in Insider Build 17063. This merge request adds basic support for AF_UNIX sockets to ws2_32 and wineserver.
Of particular note is the difficulty in handling `sun_path`. Most of the functions that allow for translating Windows paths to Unix paths are not accessible from ws2_32. I considered the following options:
* Pass the Windows path to wineserver and do the conversion there.
* This is, as far as I can tell, not possible without major rearchitecting. wineserver does not have functions to translate Windows paths to Unix paths, for obvious reasons.
* Obtain the current working directory of the requesting process and temporarily change directories to there.
* This only handles relative paths and fails for absolute paths, UNC paths, etc.
* Conditionally change directories based on whether the path is relative or not.
* This is error-prone and wineserver does not have the requisite functions to do this cleanly.
I ultimately decided to pass the translated Unix path to wineserver, which changes directories to `dirname(path)`. It then provides `bind` and `connect` with `basename(path)`. This is not threadsafe, but wineserver is not (currently) multithreaded.
Abstract sockets are not fully supported by this patch, matching the behavior of Windows.
--
v49: ws2_32/tests: Add test for AF_UNIX sockets fix.
server: Fix getsockname() and accept() on AF_UNIX sockets.
server: Introduce error when attempting to create a SOCK_DGRAM AF_UNIX socket.
server: Allow for deletion of socket files.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786
Windows 10 [received support](https://devblogs.microsoft.com/commandline/af_unix-comes-to-window… for AF_UNIX sockets in Insider Build 17063. This merge request adds basic support for AF_UNIX sockets to ws2_32 and wineserver.
Of particular note is the difficulty in handling `sun_path`. Most of the functions that allow for translating Windows paths to Unix paths are not accessible from ws2_32. I considered the following options:
* Pass the Windows path to wineserver and do the conversion there.
* This is, as far as I can tell, not possible without major rearchitecting. wineserver does not have functions to translate Windows paths to Unix paths, for obvious reasons.
* Obtain the current working directory of the requesting process and temporarily change directories to there.
* This only handles relative paths and fails for absolute paths, UNC paths, etc.
* Conditionally change directories based on whether the path is relative or not.
* This is error-prone and wineserver does not have the requisite functions to do this cleanly.
I ultimately decided to pass the translated Unix path to wineserver, which changes directories to `dirname(path)`. It then provides `bind` and `connect` with `basename(path)`. This is not threadsafe, but wineserver is not (currently) multithreaded.
Abstract sockets are not fully supported by this patch, matching the behavior of Windows.
--
v48: ws2_32/tests: Add test for AF_UNIX sockets fix.
server: Fix getsockname() and accept() on AF_UNIX sockets.
server: Introduce error when attempting to create a SOCK_DGRAM AF_UNIX socket.
server: Allow for deletion of socket files.
ws2_32: Add support for AF_UNIX sockets.
ntdll/unix: Add support for AF_UNIX sockets to multiple functions.
ws2_32: Add afunix.h header.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786
I wanted to use ._xy element access to make it shorter, but that attempt was crushed by the reality - such indexing apparently compiles but does not produce correct element access loads. I'm going to update once this is fixed.
--
v2: vkd3d-shader/hlsl: Add determinant() function.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/329
On Wed Sep 6 20:27:50 2023 +0000, Helix Graziani wrote:
> how do i do that?
git rebase -i HEAD~# (# can be any number of commits that aren't merge commits)
git rebase <branch> (<branch> is any branch, use it like git merge)
in this case I would say the easiest way (that I know of) is to get a diff, reset and then commit the diff, and then force push.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3724#note_44471
On Wed Sep 6 20:13:16 2023 +0000, Etaash Mathamsetty wrote:
> btw your pull request isn't squashed and then merged, you have to squash
> all the commits into one (since this is just a single stub).
> To avoid merge commits use git rebase rather than git merge
ah ok
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3724#note_44466
--
v2: dmusic: Get rid of the IDirectMusicInstrumentImpl typedef.
dmusic: Rename IDirectMusicInstrumentImpl method prefix to instrument.
dmusic: Simplify and cleanup IDirectMusicInstrument constructor.
dmusic: Get rid of struct collection liWavePoolTablePosition member.
dmusic: Get rid of struct collection liCollectionPosition member.
dmusic: Get rid of the IDirectMusicCollectionImpl typedef.
dmusic: Rename IDirectMusicCollectionImpl method prefix to collection.
dmusic: Move constructor parameter checks to class factory.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3740
--
v4: dmsynth: Return DMUS_E_SYNTHNOTCONFIGURED when sink fails to activate.
dmsynth: Return S_FALSE if IDirectMusicSynth_Activate is no-op.
dmsynth: Forward IDirectMusicSynth_GetLatencyClock to the sink.
dmsynth: Implement latency IReferenceClock interface on the sink.
include: Use IReferenceClock interface from strmif.idl in dmusicc.h.
dmsynth: Move constructor parameter checks to class factory.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3738
I wanted to use ._xy element access to make it shorter, but that attempt was crushed by the reality - such indexing apparently compiles but does not produce correct element access loads. I'm going to update once this is fixed.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/329
--
v7: tests: Add a test for fmod() with vector arguments.
vkd3d-shader: Use ternary operator in fmod() implementation.
vkd3d-shader/tpf: Use 'movc' to implement ternary operator.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/268
This MR replaces `vkd3d_shader_register.immconst_type` with `vkd3d_shader_register.dimension` which is intended for all register types and not just immconsts.
This dimension is parsed in tpf.c, and initialized according to the register type in d3dbc.c.
Having this field in vkd3d_shader_register allows us to avoid hardcoding special cases for the register dimensions when writing sm4 bytecode (e.g. for the sampler src register in gather instructions). Also, it allows for some fixes to d3d_asm.c, which are introduced in part 2 (https://gitlab.winehq.org/fcasas/vkd3d/-/commits/add_vkd3d_reg_dim).
--
v6: vkd3d-shader/d3dbc: Initialize register dimension for all register types.
vkd3d-shader/tpf: Parse register dimension for all register types.
vkd3d-shader: Turn vkd3d_shader_register.immconst_type into vkd3d_shader_register.dimension.
vkd3d-shader/tpf: Use vsir_register_init() in shader_sm1_parse_dst_param().
vkd3d-shader/tpf: Use vsir_register_init() in shader_sm1_parse_src_param().
vkd3d-shader/tpf: Use vsir_register_init() in shader_sm4_read_param().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_emit_default_control_point_phase().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_emit_resource_declaration().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_emit_sampler_declaration().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_emit_dcl_immediate_constant_buffer().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_emit_cbv_declaration().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_emit_dcl_indexable_temp().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_emit_hull_shader_builtins().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_get_invocation_id().
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/319
On Wed Sep 6 17:08:48 2023 +0000, Jeffrey Smith wrote:
> Are you sure? It appears to be inconsistent with the styling for the
> rest of the if condition. All other or-separated terms are using
> parenthesis, regardless of whether they contain an &&.
You're probably right. Let's leave it as is.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3744#note_44449
An application subclasses edit control and crashes on unexpected WM_TIMER messages. A timer was
added a long time ago and it was for auto scrolling the view when the cursor is outside of the
client area. However, with a EDIT_EM_ScrollCaret() call in EDIT_WM_MouseMove(), the view can be
scrolled to the correct position automatically. So the timer is not necessary at all. This is tested
manually with a long text in the edit control with notepad on XP, Win7 and Win10. Before this patch,
the caret will move backwards every 100ms when the clicking the left mouse button on the bottom of
the text and then dragging the cursor upwards and outside of the client area. After this, the
behavior is the same as native.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3623
This begins the initial implementation of a unified QueryInterface on the dispex. There's a couple of hacks used to make the conversion split up easier, but they're all resolved within this MR.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3723
This MR adds support for handling `wl_pointer` devices:
1. Handle enter/leave/(absolute) motion/button/axis events to allow users to interact with applications using such devices, e.g., a mouse.
2. Update the cursor image used for Wayland surfaces based on the Windows cursor bitmap data.
A few notes:
1. A single `wl_seat`/`wl_pointer` is supported for now.
2. Many of the input interactions require window management support that hasn't been implemented yet (e.g., popup positioning, resizing, max/fullscreen).
3. There is some potential for bad interactions between the input event dispatching mechanism and the `win32u` flushing logic for `window_surface` , which can lead to visual glitches. Although I don't think this is blocker for this MR, I would like to start a discussion about the problem and mitigation ideas in a comment below.
Thanks!
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3686
It can be unnecessary at best and unsupported at worst (e.g. no ARB_texture_multisample).
--
v3: wined3d: Don't skip ARB fragment program selection when fog state is dirty.
wined3d: Don't force going through a texture when downloading from renderbuffers.
wined3d: Handle depth textures in texture2d_read_from_framebuffer().
wined3d: Rename wined3d_context_gl_apply_fbo_state_blit() function.
wined3d: Don't setup FBO and draw buffers in wined3d_context_gl_apply_blit_state().
wined3d: Don't call wined3d_texture_load() from wined3d_context_gl_apply_blit_state().
wined3d: Don't bind the FBO to GL_READ_FRAMEBUFFER in wined3d_context_gl_apply_blit_state().
wined3d: Prepare/load the destination resource location in arbfp_blitter_blit().
wined3d: Prepare/load the destination resource location in ffp_blitter_blit().
wined3d: Don't call wined3d_context_gl_apply_blit_state() from texture2d_read_from_framebuffer().
https://gitlab.winehq.org/wine/wine/-/merge_requests/3211
Now that we can write HLSL intrinsics in HLSL, cleaning up missing
functions becomes much easier.
This commit also extends the trigonometry tests a little bit to make
sure that tan works right.
--
v4: vkd3d-shader/hlsl: Implement intrinsic tan.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/321
If DISABLEAUTOREDIRECTS is set in BINDINFO options, urlmon does not set HTTP verb to GET when handling redirections.
Although HTTP specification is vague on the correct behaviour here, many web servers expect this. This is what's causing the "400 Bad Request" error when user tries to log into GMail accounts using Outlook.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3725
Since dcf0bf1f, one could no longer kill a GUI application launched from
unix shell (with start.exe /exec) with ctrl-c.
(depends on https://gitlab.winehq.org/wine/wine/-/merge_requests/3310
to be fully functional).
Signed-off-by: Eric Pouech <epouech(a)codeweavers.com>
--
v5: programs/cmd: Better handle ctrl-c events.
ntdll: Unconditionally forward console events to kernelbase.
kernel32/console: Add tests for GenerateConsoleCtrlEvent().
https://gitlab.winehq.org/wine/wine/-/merge_requests/3312
Since dcf0bf1f, one could no longer kill a GUI application launched from
unix shell (with start.exe /exec) with ctrl-c.
(depends on https://gitlab.winehq.org/wine/wine/-/merge_requests/3310
to be fully functional).
Signed-off-by: Eric Pouech <epouech(a)codeweavers.com>
--
v4: programs/cmd: Better handle ctrl-c events.
ntdll,server: Terminate GUI programs launched from unix shell.
kernel32/console: Add tests for GenerateConsoleCtrlEvent().
https://gitlab.winehq.org/wine/wine/-/merge_requests/3312
--
v3: dmsynth: Return DMUS_E_SYNTHNOTCONFIGURED when sink fails to activate.
dmsynth: Return S_FALSE if IDirectMusicSynth_Activate is no-op.
dmsynth: Forward IDirectMusicSynth_GetLatencyClock to the sink.
dmsynth: Implement latency IReferenceClock interface on the sink.
include: Use IReferenceClock interface from strmif.idl in dmusicc.h.
dmsynth: Simplify and cleanup class constructors.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3738
This MR replaces `vkd3d_shader_register.immconst_type` with `vkd3d_shader_register.dimension` which is intended for all register types and not just immconsts.
This dimension is parsed in tpf.c, and initialized according to the register type in d3dbc.c.
Having this field in vkd3d_shader_register allows us to avoid hardcoding special cases for the register dimensions when writing sm4 bytecode (e.g. for the sampler src register in gather instructions). Also, it allows for some fixes to d3d_asm.c, which are introduced in part 2 (https://gitlab.winehq.org/fcasas/vkd3d/-/commits/add_vkd3d_reg_dim).
--
v5: vkd3d-shader/d3dbc: Initialize register dimension for all register types.
vkd3d-shader/tpf: Parse register dimension for all register types.
vkd3d-shader: Turn vkd3d_shader_register.immconst_type into vkd3d_shader_register.dimension.
vkd3d-shader/tpf: Use vsir_register_init() in shader_sm1_parse_dst_param().
vkd3d-shader/tpf: Use vsir_register_init() in shader_sm1_parse_src_param().
vkd3d-shader/tpf: Use vsir_register_init() in shader_sm4_read_param().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_emit_default_control_point_phase().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_emit_resource_declaration().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_emit_sampler_declaration().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_emit_dcl_immediate_constant_buffer().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_emit_cbv_declaration().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_emit_dcl_indexable_temp().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_emit_hull_shader_builtins().
vkd3d-shader/spirv: Use vsir_register_init() in spirv_compiler_get_invocation_id().
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/319
Which I intend to use to support (and rewrite) instrument / wave downloads.
--
v3: dmusic: Implement IDirectMusicPortDownload_GetBuffer.
dmusic: Implement IDirectMusicPortDownload_(Download|Unload).
dmusic: Implement IDirectMusicPortDownload_AllocateBuffer.
dmusic: Implement synth port IDirectMusicPortDownload_GetDLId.
dmusic: Rename IDirectMusicDownloadImpl method prefix to download.
dmusic: Move IDirectMusicDownloadImpl struct to where it is used.
dmusic: Simplify and cleanup IDirectMusicDownload constructor.
dmusic: Always return S_FALSE from DllCanUnloadNow.
dmusic/tests: Test IDirectMusicPort_(Download|Unload)Instrument.
dmusic/tests: Test IDirectMusic(Port)Download interfaces.
include: Fix incorrect IDirectMusicPortDownload_Unload macro.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3722
`posix_spawn()` should be more efficient on all systems, especially macOS. Running `make -j12 install` in an x86_64 emulated shell on a 12-core M2 Pro system, I saw a substantial time improvement (9 minutes vs 13) and much lower system overhead.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3734
This MR replaces `vkd3d_shader_register.immconst_type` with `vkd3d_shader_register.dimension` which is intended for all register types and not just immconsts.
This dimension is parsed in tpf.c, and initialized according to the register type in d3dbc.c.
Having this field in vkd3d_shader_register allows us to avoid hardcoding special cases for the register dimensions when writing sm4 bytecode (e.g. for the sampler src register in gather instructions). Also, it allows for some fixes to d3d_asm.c, which are introduced in part 2 (https://gitlab.winehq.org/fcasas/vkd3d/-/commits/add_vkd3d_reg_dim).
--
v4: vkd3d-shader/d3dbc: Initialize register dimension for all register types.
vkd3d-shader/tpf: Parse register dimension for all register types.
vkd3d-shader: Turn vkd3d_shader_register.immconst_type into vkd3d_shader_register.dimension.
vkd3d-shader/tpf: Use vsir_register_init() in shader_sm1_parse_dst_param().
vkd3d-shader/tpf: Use vsir_register_init() in shader_sm1_parse_src_param().
vkd3d-shader/tpf: Use vsir_register_init() in shader_sm4_read_param().
vkd3d-shader/spirv: Use vsir_register_init() to initialize registers.
vkd3d-shader/ir: Use vsir_register_init() in shader_register_normalise_flat_constants().
vkd3d-shader: Rename shader_register_init() to vsir_register_init().
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/319
The issue can be reproduced with LIBGL_ALWAYS_SOFTWARE=1 on Mesa. The
Gitlab machines are affected.
--
v2: d3d9/tests: Skip big test_query loops if the d3d implementation is too slow.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3680