The storage event url prop fix is tested after the location.hash tests are added, implicitly. I didn't find a need to add extra tests for no reason there.
The super_navigate changes for fragments is also necessary for the location.hash tests (and its behavior, apparently)…
--
v6: mshtml: Implement document.importNode.
mshtml: Implement HTMLLocation_put_hash.
mshtml: Always use navigate_fragment for fragment-only navigation in navigate_uri.
mshtml: Don't include fragment in storage event's url prop.
mshtml: Return E_ABORT if wine-gecko's OnDataAvailable aborts the binding.
mshtml: Improve locale stub for KeyboardEvent.
mshtml: Implement isContentEditable for HTML elements.
mshtml/tests: Handle broken localStorage on native.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1206
FWIW this MR failed the test-linux-32 pipeline, as it actually fixed and then succeeded a todo_wine in the `comctl32:edit` tests. It got merged nontheless, and now the pipelines of all the MR are failing the same spot.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/231#note_13445
This is wine-7.0.1-rc1, so not ready yet to merge.
--
v7: Release 7.0.1.
tools: Import make_announce changes from the devel tree
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/wine/-/merge_requests/955
A mix of a miscellaneous fixes:
* Fixes to failed asserts I have stumbled upon when implementing other features.
* Checks required for properly supporting object components.
* A couple of code improvements.
--
v7: vkd3d-shader/hlsl: Use reg_size as component count when allocating a single register.
vkd3d-shader/hlsl: Use the base type of the array elements in write_sm1_type().
vkd3d-shader/hlsl: Validate that statics don't contain both resources and numerics.
vkd3d-shader/hlsl: Validate that extern structs don't contain objects SM < 5.
vkd3d-shader/hlsl: Don't allocate object types as constant registers.
vkd3d-shader/hlsl: Properly free new store node memory if init_deref() fails.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/42
A mix of a miscellaneous fixes:
* Fixes to failed asserts I have stumbled upon when implementing other features.
* Checks required for properly supporting object components.
* A couple of code improvements.
--
v6: vkd3d-shader/hlsl: Use reg_size as component count when allocating a single register.
vkd3d-shader/hlsl: Use the base type of the array elements in write_sm1_type().
vkd3d-shader/hlsl: Validate that statics don't contain both resources and numerics.
vkd3d-shader/hlsl: Validate that extern structs don't contain objects SM < 5.
vkd3d-shader/hlsl: Don't allocate object types as constant registers.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/42
A mix of a miscellaneous fixes:
* Fixes to failed asserts I have stumbled upon when implementing other features.
* Checks required for properly supporting object components.
* A couple of code improvements.
--
v5: vkd3d-shader/hlsl: Use reg_size as component count when allocating a single register.
vkd3d-shader/hlsl: Use the base type of the array elements in write_sm1_type().
vkd3d-shader/hlsl: Validate that statics don't contain both resources and numerics.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/42
--
v2: vkd3d-shader/sm4: Use a flat array to store destination types.
vkd3d-shader/sm4: Use a flat array to store source types.
vkd3d-shader/spirv: Avoid using DXBC-specific definitions.
vkd3d-shader/sm4: Use the VKD3D_DXBC_MAX_SOURCE_COUNT macro where possible.
vkd3d-shader/spirv: Rename struct vkd3d_dxbc_compiler to struct spirv_compiler.
vkd3d-common: Always prefix debug output with "vkd3d".
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/45
It is possible that a stream is destroyed while another thread is waiting on
event_empty_cond or event_cond. The waiting thread should have the opportunity
to be rescheduled and exit the critical section before the condition variables
and the mutex are destroyed.
--
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/wine/-/merge_requests/1278
The function is implemented by setting cache file pointer to fill
read_buf. Consequently, when HTTPREQ_ReadFile is called, it will try
reading data from cache after read_buf is depleted, before continuing
reading from http stream.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=26570
--
v3: wininet: Implement InternetSetFilePointer
wininet/tests: Add InternetSetFilePointer tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1268
The storage event url prop fix is tested after the location.hash tests are added, implicitly. I didn't find a need to add extra tests for no reason there.
The super_navigate changes for fragments is also necessary for the location.hash tests (and its behavior, apparently)…
--
v5: mshtml: Implement document.importNode.
mshtml: Implement HTMLLocation_put_hash.
mshtml: Always resort to navigate_fragment when navigating fragments for
mshtml: Don't include fragment in storage event's url prop.
mshtml: Return E_ABORT if wine-gecko's OnDataAvailable aborts the binding.
mshtml: Improve locale stub for KeyboardEvent.
mshtml: Implement isContentEditable for HTML elements.
mshtml/tests: Handle broken localStorage on native.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1206
Block records are not processed; only the bitcode is validated.
--
v3: vkd3d-shader/dxil: Read and validate global abbreviated operands.
vkd3d-shader/dxil: Read and validate local abbreviated operands.
vkd3d-compiler: Introduce a dxil-asm target type.
vkd3d-compiler: Introduce a dxbc-dxil source type.
vkd3d-shader/dxil: Read and validate DXIL bitcode unabbreviated blocks.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/44
The function is implemented by setting cache file pointer to fill
read_buf. Consequently, when HTTPREQ_ReadFile is called, it will try
reading data from cache after read_buf is depleted, before continuing
reading from http stream.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=26570
--
v2: wininet: Implement InternetSetFilePointer
wininet/tests: Add InternetSetFilePointer tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1268
Based on a patch by Mark Jansen.
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
--
v2: user32/edit: Check for control destruction on notification return.
comctl32/edit: Check for control destruction on notification return.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1270
This is slightly different from dlltool but I think it should be compatible. The transition is done by first replacing dlltool with its bugs, and fixing them in separate changes.
I based the ARM / AARCH64 implementation on the existing code around, but I have no idea if it is correct, and dlltool also doesn't include any delay load implementation for ARM.
--
v5: winebuild: Put the delay import descriptor in data section.
winebuild: Fix import hint value for symbols imported by name.
winebuild: Implement delay import lib generation without dlltool.
winebuild: Enable unwind tables by default in PE files.
winebuild: Implement import lib generation without dlltool.
winebuild: Introduce a new --without-dlltool winebuild flag.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1001
This is slightly different from dlltool but I think it should be compatible. The transition is done by first replacing dlltool with its bugs, and fixing them in separate changes.
I based the ARM / AARCH64 implementation on the existing code around, but I have no idea if it is correct, and dlltool also doesn't include any delay load implementation for ARM.
--
v4: winebuild: Put the delay import descriptor in data section.
winebuild: Fix import hint value for symbols imported by name.
winebuild: Implement delay import lib generation without dlltool.
winebuild: Enable unwind tables by default in PE files.
winebuild: Implement import lib generation without dlltool.
winebuild: Introduce a new --without-dlltool winebuild flag.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1001
Patch 1.
The tests on Windows show that when the timer callback is queued behind the clock time it is queued and executed quite soon with 0-15ms delay which corresponds to default timer granularity. The timeout tolerance in the test is quite bigger to avoid a flaky test. Wine currently may execute the callback right away or delay it indefinitely depending on the time difference and current system time.
Patch 2.
It turns out when the session is paused and then restarted and all the samples were delivered to sample grabber before restart, nothing is going to request the samples again when the session is restarted. I am attaching a test in a patch which hopefully confirms how that should work. I am not including that in the patches as the test involves delays (to make sure all the async events settle at certain points) and inherently flaky. Also, _
IMFStreamSink_GetEvent(stream, ...) in the test crashes on Win7 for some unknown reason.
[0001-mf-tests-Add-test-for-pausing-and-restarting-sample-.patch](/uploads/58c1738d48b3392e7ec430a0757210d0/0001-mf-tests-Add-test-for-pausing-and-restarting-sample-.patch)
--
v5: mf/samplegrabber: Handle samples receieved in paused state.
mf/samplegrabber: Process samples in paused state in ignore_clock mode.
mf: Handle timer time behind clock time in present_clock_schedule_timer().
https://gitlab.winehq.org/wine/wine/-/merge_requests/574
Supersedes: https://gitlab.winehq.org/wine/wine/-/merge_requests/789
This MR, with patches from Rémi should fix the no sound issue in media engine and also the black screen issue with MfPlayer.exe.
--
v2: mf: Set media types for output nodes in the media session.
mf: Move D3D awareness logic to branch resolver.
mf/tests: Test for copier node in topology using evr.
mf: Add some topology source node checks in IMFMediaSession_SetTopology.
mf: Always enumerate branch source types for transform nodes.
winegstreamer: Support MFT_SET_TYPE_TEST_ONLY flag in the MF transforms.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1262
Although I couldn't find other uses for `list_manager_create`, it seems that in this case is working just fine.
The list manager should be released once the `IEnumNetworkConnections` is destroyed.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1265
mrac tries to get function pointers for these functions using MmGetSystemRoutineAddress, I haven't seen them being used by it, but might as well implement it since they are very easy to implement.
--
v7: ntoskrnl.exe: Implement KeQueryActiveProcessorCount.
ntoskrnl.exe: implement KeQueryMaximumProcessorCount/Ex.
https://gitlab.winehq.org/wine/wine/-/merge_requests/914
Enforce proper atomic update so that other threads do not read stale
data from IO_STATUS_BLOCK.
Signed-off-by: Jinoh Kang <jinoh.kang.kr(a)gmail.com>
--
v16: ntdll: Fix reading stale Information from IOSB.
https://gitlab.winehq.org/wine/wine/-/merge_requests/155
This makes most vkd3d-shader insufficiencies a lot more obvious when used as an
embedded library.
The obvious disadvantage here is that vkd3d-compiler will basically print every
fixme message twice.
This is a bit of an RFC, since I'm not married to this patch. Other potential
approaches I see (not all mutually exclusive):
* Always print a FIXME if we return VKD3D_ERROR_NOT_IMPLEMENTED from
compile_hlsl(), but don't print messages for individual compilation errors.
Thus we clue in debuggers that a bug is related to HLSL, but let them use
VKD3D_SHADER_DEBUG to find out what the actual bug is. Since the first step is
most of the hard part I think this is a reasonable solution.
* Or do the same thing from d3dcompiler.
* Relegate hlsl_fixme to a separate vkd3d_shader_log_level, and print messages
from that log level in d3dcompiler by default. This isn't quite as simple as
that though, since currently all the messages are stored in a single blob.
* Extra APIs to control whether FIXMES are printed.
I'd also like to propose extending whichever of the above solutions to the
hlsl_error() / VKD3D_ERROR_INVALID_SHADER cases. That way we catch things which
we aren't going to catch via hlsl_fixme(), such as syntax errors from
unrecognized keywords. There's a counterargument that compiling an invalid
shader is valid usage, and that we (wine or vkd3d) shouldn't print any ERR/FIXME
messages when a program does something valid and implemented, but I'd counter
that in practice intentionally compiling an invalid shader should be exceedingly
rare, and especially for something like wine or vkd3d where debugging is
difficult, it's simply not worth insisting on "a correctly functioning program
should print no messages" if it's at the cost of making debugging that much
harder.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/41
xul.dll from Mypal 27.9.4 has a resource entry without any data.
Windows returns this as null-terminated string, instead of pointing past the data.
The first commit adds a test,
the second commit fixes the bugs (and removes the todo_wine).
Original ticket for reference: https://jira.reactos.org/browse/CORE-15781
--
v4: kernelbase: Fix VerQueryValueW with no data
https://gitlab.winehq.org/wine/wine/-/merge_requests/1263
Currently, unwinding the unix libraries (or full ELF builds) requires having libunwind available.
When starting up a wine environment, an exception of type `RPC_S_SERVER_UNAVAILABLE` gets thrown - and if libunwind isn't available, this breaks the startup. Thus, currently on ARM/ARM64, libunwind is essentially mandatory.
Additionally, at least on ARM, libunwind seems brittle (commits in latest git master breaks the unwinding use cases in Wine, see e.g. https://github.com/libunwind/libunwind/pull/203#issuecomment-984126066.
For ARM, libunwind has currently relied on DWARF debug info in the `.debug_frame` section, since Linux on ARM doesn't use DWARF for runtime unwinding. This MR adds ARM EHABI unwind opcodes where necessary, and adds a local reimplementation of an ARM EHABI/EXIDX/EXTBL unwinder, similar to the DWARF one.
With these changes, unwinding on ARM seems to work fine, even without libunwind.
See the individual commit messages for more commentary on the decisions taken so far (I've tried to write up all relevant considerations there - it's a fair amount of commentery).
A couple open questions:
- I wrote the ARM EHABI unwind code mostly with `stdint.h` types like `uint32_t`(as it's in the ntdll/unix directory anyway), but I can rewrite it with `DWORD` or similar if that's preferred.
- The ARM EHABI opcodes are enabled for `defined(__arm__) && defined(__ELF__) && defined(__GNUC__) && !defined(__SEH__) && !defined(__ARM_DWARF_EH__)` - there's no define to check for for knowing it's used and enabled, but it has to be implicitly assumed if no other other unwind mechanism is signaled.
- The `dl_iterate_phdr` function, used for finding the EXIDX section for locating ARM EHABI unwind info, is used within `#ifdef linux`. It might be available on other OSes too (like FreeBSD etc). Or should I go ahead and add a configure check for it?
--
v2: ntdll: Implement ARM EHABI unwinding
ntdll: Add ARM EHABI unwind instructions in assembly functions
https://gitlab.winehq.org/wine/wine/-/merge_requests/1162
xul.dll from Mypal 27.9.4 has a resource entry without any data.
Windows returns this as null-terminated string, instead of pointing past the data.
The first commit adds a test,
the second commit fixes the bugs (and removes the todo_wine).
Original ticket for reference: https://jira.reactos.org/browse/CORE-15781
--
v3: kernelbase: Fix VerQueryValueW with no data
https://gitlab.winehq.org/wine/wine/-/merge_requests/1263
This is slightly different from dlltool but I think it should be compatible. The transition is done by first replacing dlltool with its bugs, and fixing them in separate changes.
I based the ARM / AARCH64 implementation on the existing code around, but I have no idea if it is correct, and dlltool also doesn't include any delay load implementation for ARM.
--
v3: winebuild: Put the delay import descriptor in data section.
winebuild: Fix import hint value for symbols imported by name.
winebuild: Implement delay import lib generation without dlltool.
makedep: Pass DLLFLAGS to winebuild --implib invocations.
winebuild: Implement import lib generation without dlltool.
winebuild: Introduce a new --without-dlltool winebuild flag.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1001
xul.dll from Mypal 27.9.4 has a resource entry without any data.
Windows returns this as null-terminated string, instead of pointing past the data.
The first commit adds a test,
the second commit fixes the bugs (and removes the todo_wine).
Original ticket for reference: https://jira.reactos.org/browse/CORE-15781
--
v2: kernelbase: Fix VerQueryValueW with no data
version/tests: Add a test for an empty value in VerQueryValueW
https://gitlab.winehq.org/wine/wine/-/merge_requests/1263
The storage event url prop fix is tested after the location.hash tests are added, implicitly. I didn't find a need to add extra tests for no reason there.
The super_navigate changes for fragments is also necessary for the location.hash tests (and its behavior, apparently)…
--
v4: mshtml: Implement document.importNode.
mshtml: Implement HTMLLocation_put_hash.
mshtml: Always use super_navigate when navigating fragments.
mshtml: Don't include fragment in storage event's url prop.
mshtml: Return E_ABORT if wine-gecko's OnDataAvailable aborts the binding.
mshtml: Improve locale stub for KeyboardEvent.
mshtml: Implement isContentEditable for HTML elements.
mshtml/tests: Handle broken localStorage on native.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1206
Currently, unwinding the unix libraries (or full ELF builds) requires having libunwind available.
When starting up a wine environment, an exception of type `RPC_S_SERVER_UNAVAILABLE` gets thrown - and if libunwind isn't available, this breaks the startup. Thus, currently on ARM/ARM64, libunwind is essentially mandatory.
Additionally, at least on ARM, libunwind seems brittle (commits in latest git master breaks the unwinding use cases in Wine, see e.g. https://github.com/libunwind/libunwind/pull/203#issuecomment-984126066.
For ARM, libunwind has currently relied on DWARF debug info in the `.debug_frame` section, since Linux on ARM doesn't use DWARF for runtime unwinding. This MR adds ARM EHABI unwind opcodes where necessary, and adds a local reimplementation of an ARM EHABI/EXIDX/EXTBL unwinder, similar to the DWARF one.
With these changes, unwinding on ARM seems to work fine, even without libunwind.
See the individual commit messages for more commentary on the decisions taken so far (I've tried to write up all relevant considerations there - it's a fair amount of commentery).
A couple open questions:
- I wrote the ARM EHABI unwind code mostly with `stdint.h` types like `uint32_t`(as it's in the ntdll/unix directory anyway), but I can rewrite it with `DWORD` or similar if that's preferred.
- The ARM EHABI opcodes are enabled for `defined(__arm__) && defined(__ELF__) && defined(__GNUC__) && !defined(__SEH__) && !defined(__ARM_DWARF_EH__)` - there's no define to check for for knowing it's used and enabled, but it has to be implicitly assumed if no other other unwind mechanism is signaled.
- The `dl_iterate_phdr` function, used for finding the EXIDX section for locating ARM EHABI unwind info, is used within `#ifdef linux`. It might be available on other OSes too (like FreeBSD etc). Or should I go ahead and add a configure check for it?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1162
Enforce proper atomic update so that other threads do not read stale
data from IO_STATUS_BLOCK.
Signed-off-by: Jinoh Kang <jinoh.kang.kr(a)gmail.com>
--
v15: ntdll: Fix reading stale Information from IOSB.
https://gitlab.winehq.org/wine/wine/-/merge_requests/155
Enforce proper atomic update so that other threads do not read stale
data from IO_STATUS_BLOCK.
Signed-off-by: Jinoh Kang <jinoh.kang.kr(a)gmail.com>
--
v14: ntdll: Fix reading stale Information from IOSB.
ws2_32: Access internal fields of WSAOVERLAPPED as IO_STATUS_BLOCK.
kernelbase: Access internal fields of OVERLAPPED as IO_STATUS_BLOCK.
https://gitlab.winehq.org/wine/wine/-/merge_requests/155
In attribute list test:
- current test tries to ensure that a handle, valid in process'
parent, hasn't been inherited
- but nothing guarantees that a valid handle isn't present in
child process with same value
- so harden test to verify that the handle isn't the parent's
pipe handle
Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1260
These patches are meant to fix batch files that are using quoted arguments like this:
start /D "%~dp0" game.exe %*
cmd adds extra quotes around directory path, assuming it's a console title. Later this does not work with start.exe.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1258
This change is adding DWARF (CFI) unwind information to the
hand-written assembly of the `__wine_syscall_dispatcher` function.
This enables unwinding through the dispatcher from the Linux stack
into (and through) the Windows stack.
The general idea is that the `syscall_frame` struct contains the
content of the callee-save registers before the function call
(in particular the stack pointer and the return address). At any
point of the execution, we have a pointer into the `syscall_frame`
in $ebx, $ecx, $ebp, or $esp.
For the CFI codes the general idea is that we are defining the
computations of the callee-save registers based on the
`syscall_frame` using DWARF’s `breg` instruction, rather than
relative to CFA.
cc/ @florian-kuebler
--
v6: ntdll: Add CFI unwind info to __wine_syscall_dispatcher (i386).
ntdll: Move CFI helper macros out of signal_x86_64.c.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1182
Enforce proper atomic update so that other threads do not read stale
data from IO_STATUS_BLOCK.
Signed-off-by: Jinoh Kang <jinoh.kang.kr(a)gmail.com>
--
v13: ntdll: Fix reading stale Information from IOSB.
ws2_32: Access internal fields of WSAOVERLAPPED as IO_STATUS_BLOCK.
kernelbase: Access internal fields of OVERLAPPED as IO_STATUS_BLOCK.
https://gitlab.winehq.org/wine/wine/-/merge_requests/155
Signed-off-by: Jinoh Kang <jinoh.kang.kr(a)gmail.com>
--
v10: server: Don't invalidate the newly exposed child region on the parent if it doesn't clip children.
server: Redraw composited window child when its z-order changes.
server: Correctly expose composited parent window and its child on position change.
https://gitlab.winehq.org/wine/wine/-/merge_requests/231
This splits the full MR test run, with short running tests on a side and now executed for both Win64 and WOW64, roughly 5min each, and the long running tests executed only for Win64, taking roughly 20min. All are executed unconditionally, but we could maybe add some early exit if that feels useful.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1241