Follow Up of Merge request !693 by Jacek Caban. That pull request changed
properly the static control of user32, but didn't address the comctl32
static control.
Fix an issue of TES4:Oblivion Construction Set, reported by me in the
Wine Bug: https://bugs.winehq.org/show_bug.cgi?id=53581#c5
after the merge request fixed the reported CS crash.
Signed-off-by: Lorenzo Ferrillo [lorenzofersteam@live.it](mailto:lorenzofersteam@live.it)
--
v4: comctl32: Support passing bitmap and icon resource ID as a string when creating static control.
https://gitlab.winehq.org/wine/wine/-/merge_requests/775
Follow Up of Merge request !693 by Jacek Caban. That pull request changed
properly the static control of user32, but didn't address the comctl32
static control.
Fix an issue of TES4:Oblivion Construction Set, reported by me in the
Wine Bug: https://bugs.winehq.org/show_bug.cgi?id=53581#c5
after the merge request fixed the reported CS crash.
Signed-off-by: Lorenzo Ferrillo [lorenzofersteam@live.it](mailto:lorenzofersteam@live.it)
--
v3: comctl32: Support passing bitmap and icon resource ID as a string when creating static control.
https://gitlab.winehq.org/wine/wine/-/merge_requests/775
The current version of the code incorrectly assumes that the lpszClass
member of CREATESTRUCT passed with WM_CREATE will point to the same
memory used for the CreateWindowEx class name parameter, and uses a
pointer comparison to check for class name equality.
As a side effect of commit e41c255be6ba66d1eec7affe674b8cc7699226b8
"win32u: Use send_message_timeout for WM_CREATE and WM_NCCREATE" the
CREATESTRUCT lpszClass member started pointing to different memory,
breaking the current implementation of MCIWND_Create().
This commit fixes the problem by performing a proper, case-insensitive
string comparison to determine class name equality.
Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=53578
--
v4: msvfw32: Use window name to determine if window is created using MCIWndCreate.
msvfw32: Test window creation with filename.
https://gitlab.winehq.org/wine/wine/-/merge_requests/726
The current version of the code incorrectly assumes that the lpszClass
member of CREATESTRUCT passed with WM_CREATE will point to the same
memory used for the CreateWindowEx class name parameter, and uses a
pointer comparison to check for class name equality.
As a side effect of commit e41c255be6ba66d1eec7affe674b8cc7699226b8
"win32u: Use send_message_timeout for WM_CREATE and WM_NCCREATE" the
CREATESTRUCT lpszClass member started pointing to different memory,
breaking the current implementation of MCIWND_Create().
This commit fixes the problem by performing a proper, case-insensitive
string comparison to determine class name equality.
Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=53578
--
v3: msvfw32: Use string comparison to determine class name equality.
https://gitlab.winehq.org/wine/wine/-/merge_requests/726
Follow Up of Merge request !693 by Jacek Caban. That pull request changed
properly the static control of user32, but didn't address the comctl32
static control.
Fix an issue of TES4:Oblivion Construction Set, reported by me in the
Wine Bug: https://bugs.winehq.org/show_bug.cgi?id=53581#c5
after the merge request fixed the reported CS crash.
Signed-off-by: Lorenzo Ferrillo [lorenzofersteam@live.it](mailto:lorenzofersteam@live.it)
--
v2: comctl32: Support passing bitmap and icon resource ID as a string when creating static control.
https://gitlab.winehq.org/wine/wine/-/merge_requests/775
Based on [a patch](https://www.winehq.org/mailman3/hyperkitty/list/wine-devel@winehq.or… by Jinoh Kang (@iamahuman) from February 2022.
I removed the need for the event object and implemented fast paths for Linux.
On Linux 4.14+ `membarrier(MEMBARRIER_CMD_GLOBAL_EXPEDITED, ...)` is used.
On x86 Linux <= 4.13 `madvise(..., MADV_DONTNEED)` is used, which sends IPIs to all cores causing them to do a memory barrier.
On non-x86 Linux 4.3-4.13 `membarrier(MEMBARRIER_CMD_SHARED, ...)` is used.
On non-x86 Linux <= 4.2 and on other platforms the fallback path using APCs is used.
--
v2: ntdll: Add thread_get_register_pointer_values-based fast path for NtFlushProcessWriteBuffers.
ntdll: Add sys_membarrier-based fast path to NtFlushProcessWriteBuffers.
ntdll: Add MADV_DONTNEED-based fast path for NtFlushProcessWriteBuffers.
ntdll: Make server_select a memory barrier.
ntdll: Implement NtFlushProcessWriteBuffers.
https://gitlab.winehq.org/wine/wine/-/merge_requests/741
Follow Up of Merge request !693 by Jacek Caban. That pull request changed
properly the static control of user32, but didn't address the comctl32
static control.
Fix an issue of TES4:Oblivion Construction Set, reported by me in the
Wine Bug: https://bugs.winehq.org/show_bug.cgi?id=53581#c5
after the merge request fixed the reported CS crash.
Signed-off-by: Lorenzo Ferrillo [lorenzofersteam@live.it](mailto:lorenzofersteam@live.it)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/775
On Sat Sep 3 17:53:35 2022 +0000, **** wrote:
> Zebediah Figura replied on the mailing list:
> ```
> On 9/3/22 12:48, Etaash Mathamsetty (@etaash.mathamsetty) wrote:
> > On Sat Sep 3 17:43:11 2022 +0000, **** wrote:
> >> Zebediah Figura replied on the mailing list:
> >> \`\`\`
> >> On 9/3/22 12:22, Etaash Mathamsetty (@etaash.mathamsetty) wrote:
> >>> This instruction only needs to compare 1 byte, since it's imm8 is just
> >> an 8 bit number (unless I am wrong)
> >> The 0x83 family is an arithmetic operation between a sign-extended
> >> immediate byte and a 2/4/8-byte register or memory location. The
> >> equivalent 1-byte comparison is 0x80 or 0x82 (they are duplicates).
> >> \`\`\`
> > the comparison is between a signed byte and a 2/4/8 byte
> register/memory location, how am I supposed to compare more than 1 byte?
> >
> As stated, the immediate byte should be sign-extended to the appropriate
> length.
> ```
Do you have any info on how to set these other flags?
`OF, PF, AF, SF`
I can't find much info about it.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/721#note_7623
--
v4: mf/tests: Test that IMFMediaSession_SetTopology sets output nodes media types.
mf/tests: Test that IMFTopoLoader_Load sets transform nodes media types.
mf/tests: Test that IMFTopoLoader_Load doesn't set output nodes media types.
mf/tests: Test some IMFMediaSession_SetTopology error cases.
mf/tests: Add helpers to wait and check media session events.
mf/tests: Allocate test callbacks dynamically and check refcounts.
mf/tests: Keep a presentation descriptor in the test source.
mf/tests: Move and split some helper code around.
https://gitlab.winehq.org/wine/wine/-/merge_requests/711
This reduces the diff with the Wine bundled version.
It should also make it clearer that these are Wine headers that should
ideally be changed upstream first and then re-imported.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/10
Based on [a patch](https://www.winehq.org/mailman3/hyperkitty/list/wine-devel@winehq.or… by Jinoh Kang (@iamahuman) from February 2022.
I removed the need for the event object and implemented fast paths for Linux.
On Linux 4.16+ `membarrier(MEMBARRIER_CMD_GLOBAL_EXPEDITED, ...)` is used.
On x86 Linux <= 4.15 `madvise(..., MADV_DONTNEED)` is used, which sends IPIs to all cores causing them to do a memory barrier.
On non-x86 Linux 4.3+ `membarrier(MEMBARRIER_CMD_SHARED, ...)` is used.
On Linux <= 4.2 and on other platforms the fallback path using APCs is used.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/741
Huw Davies (@huw) commented about include/wine/test.h:
> va_end(valist);
> }
>
> +void winetest_start_flaky( int is_flaky )
> +{
> + struct tls_data *data = get_tls_data();
> + data->flaky_level = (data->flaky_level << 1) | (is_flaky != 0);
> + data->flaky_do_loop=1;
Could we have spaces on either side of the '=', just like the lines above? I realise this is copied from the 'todo' functions, but still.
Similarly, two instances below.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/772#note_7560
In preparation for nulldrv display modes support.
--
v11: win32u: Move display placement logic out of graphics drivers.
winemac.drv: Remove unnecessary display mode flags checks.
winex11.drv: Remove unnecessary display mode flags checks.
win32u: Move full display mode lookup out of graphics drivers.
win32u: Support interlaced and stretched display modes.
win32u: Sort adapter display modes after reading from the registry.
https://gitlab.winehq.org/wine/wine/-/merge_requests/576
--
v6: mf: Notify quality manager of topology change in session_set_topology.
mf: Use the SESSION_FLAG_PENDING_COMMAND to delay further commands.
mf: Delay media session command processing when presentation is ending.
mf: Use a dedicated interface for sample allocator ready callbacks.
https://gitlab.winehq.org/wine/wine/-/merge_requests/607
--
v3: mf: Initialize output media types when binding session output nodes.
mf/tests: Test that IMFMediaSession_SetTopology should set media types.
mf/tests: Test some IMFMediaSession_SetTopology error cases.
mf/tests: Test that IMFTopoLoader_Load doesn't call SetCurrentMediaType.
mf/tests: Add helpers to wait and check media session events.
mf/tests: Allocate test callbacks dynamically and check refcounts.
mf/tests: Keep a presentation descriptor in the test source.
mf/tests: Move and split some helper code around.
https://gitlab.winehq.org/wine/wine/-/merge_requests/711
--
v5: mf: Remove command from the command list on execution.
mf: Delay media session command processing when presentation is ending.
mf: Use a dedicated interface for sample allocator ready callbacks.
https://gitlab.winehq.org/wine/wine/-/merge_requests/607
This implements props access to the underlying items in the storage, which is supported on native (although quirky). Unlike most normal props, the underlying storage for the props is asynchronous, so it can disappear or appear at any point, so they have to be re-checked as needed. The props themselves just map a name to a DISPID, but other than that, DISP_E_MEMBERNOTFOUND can return even after a successful GetDispID for example, even if GetDispID already checked for the item (which it has to, for e.g. (x in y) check).
It also contains some fixes for enumerating props, which are needed now because these props also have to be enumerated. They are custom props, so it's needed to have GetMemberName work for them. And since they are asynchronous it makes it even more complicated when enumerating.
--
v2: mshtml: Implement props enumeration for Storage.
mshtml: Implement GetMemberName for custom props.
mshtml: Do not enumerate hidden builtin props.
mshtml: Implement deleting props for Storage.
mshtml: Implement props for Storage by forwarding to the underlying storage.
https://gitlab.winehq.org/wine/wine/-/merge_requests/731
Run C++ global/static destructors during DLL_PROCESS_DETACH while other
other dllimport functions they may want to call are still viable. While
windows imposes many restrictions on what may be done in such destructors
(given that the run inside the loader lock), there are lots of legal and
useful kernel32 functions like DestroyCriticalSection, DeleteAtom, TlsFree,
etc that are both useful and legal. Currently this does not work for builtin
modules because all the Win32 structures are discarded well before
NtUnmapViewOfSection finally does the dlllose.
Even for a winelib .dll.so module, it would be preferable for destructors
to execute during process_detach (before wine tears down the MODREF
and detaches dependant dlls), rather than be left until after the last
NtUnmapViewOfSection (when we finally reach dlclose)
Therefore, winegcc now always uses the DllMainCRTStartup entry point
unless you specify your own --entry=func. Previously it did this only for
PE modules using msvcrt. Making this default consistent matches cl.exe,
which also always defaults to _DllMainCRTStartup unless overridden by /entry:foo
https://docs.microsoft.com/en-us/cpp/build/reference/entry-entry-point-symb…
The ELF version of winecrt0.a now provides a DllMainCRTStartup which,
per the Itanium ABI that is in practice what is used by gcc and clang,
performs this this destruction by calling __cxa_finalize(&__dso_handle)..
This libc function is required to be idempotent, so it's OK that dlclose
still calls it again later (there will just be no further work to do).
Multiple calls to __cxa_finalize shall not result in calling termination
function entries multiple times; the implementation may either remove
entries or mark them finished.
https://itanium-cxx-abi.github.io/cxx-abi/abi.html#dso-dtor-runtime-api
This has two main effects; it moves ELF destructors earlier (before imports
are unmapped), and it moves them inside the Nt loader lock. Being earlier
was the intended goal, and moving them inside the lock seems fine. Any Win32
API calls in destructors are just being subjected to the same lock hierarchy
rules as usual on windows (MSVC also runs destructors from DllMainCrtStartup)
https://docs.microsoft.com/en-us/cpp/build/run-time-library-behavior?view=m…
And any purely-ELF destructors that happen to also run earlier should never
call functions exported from wine (and thus don't care about ntdll's locks).
--
v2: winecrt0: run C++ object destructors in DLL_PROCESS_DETACH.
https://gitlab.winehq.org/wine/wine/-/merge_requests/752
Initial implementation for registry application hives, this is a step forward to get Visual Studio to run.
:-)
--
v7: server: save app hive into it's file when closing handle.
server/registry: pass file name instead of file handle to server.
kernelbase: Implement RegLoadAppKey.
ntdll: Initial implementation for application hives.
ntdll: Move NtLoadKey implementation to NtLoadKeyEx.
https://gitlab.winehq.org/wine/wine/-/merge_requests/717
Fonts loaded with GGO_BITMAP may report different font metrics than that with GGO_METRICS. If the
font metrics from GGO_BITMAP are used and later getting font metrics with GGO_METRICS or vice versa,
the font metric difference may cause UI glitchs.
Fix Steam installer next button text moving to the left for 1 pixel when hovered on Mac and Wine is
built with FreeType > 2.8.0.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/756
In preparation for nulldrv display modes support.
--
v10: win32u: Move display placement logic out of graphics drivers.
winemac.drv: Remove unnecessary display mode flags checks.
win32u: Support interlaced and stretched display modes.
winex11.drv: Remove unnecessary display mode flags checks.
win32u: Move full display mode lookup out of graphics drivers.
win32u: Sort adapter display modes after reading from the registry.
https://gitlab.winehq.org/wine/wine/-/merge_requests/576
Some Wine tests are multi-threaded or start child processes which can
result in traces and failure messages being garbled which prevents them
from being recognized by continuous integration tools.
So printing the tests messages is now serialized. Note that if a process
crashes while holding the mutex, that mutex will be abandonned and not
cause a deadlock.
--
v5: tests: Make sure only one thread prints traces at a time.
https://gitlab.winehq.org/wine/wine/-/merge_requests/734
This lets WINETEST_COLOR works under Windows console (at least, on recent
versions where ANSI support is available).
(Keeping logic:
+ "auto": emit ANSI sequences only when output is capable of
+ "1": always use ANSI sequences
)
Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/759
This is confirmed by the tests in test_scrollbar() and manual tests on XP. Even though scrollbar
arrows and thumb are in fact transparent, DrawThemeParentBackground() is not called to paint the
parent background, leaving the transparent area untouched. On Windows, even if the scrollbar arrows
are reported to be transparent, the bitmaps for arrow parts in the stock themes are in fact opaque.
Fix Ice Cream Calculator slow scrolling after 4cb229a because the WM_PRINTCLIENT handling in the
application is slow.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53337
--
v2: comctl32/datetime: Do not paint parent background when painting arrows.
uxtheme: Do not draw parent background even if scrollbar arrows and thumb are transparent.
uxtheme: Use the brush from WM_CTLCOLORSCROLLBAR to paint SB_CTL scrollbar tracks if present.
comctl32/tests: Add themed scrollbar background tests.
uxtheme/tests: Add theme tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/755
On Sat Aug 27 11:18:20 2022 +0000, Matteo Bruni wrote:
> Nah, let's just keep this as it is now, no reason to make everything
> more complicated.
> I guess this is just something peculiar to fx_4_0 effects, surprised
> that I never encountered it before. I'll do some further digging locally.
I found that in d3d10/tests/effect.c: create_effect():
> /*
> * Don't use sizeof(data), use data[6] as size,
> * because the DWORD data[] has only complete DWORDs and
> * so it could happen that there are padded bytes at the end.
> *
> * The fx size (data[6]) could be up to 3 BYTEs smaller
> * than the sizeof(data).
> */
Maybe we could do something like this? Use DWORDs to store shader code. And pass data[6] to size argument.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/697#note_7431
This is confirmed by the tests in test_scrollbar() and manual tests on XP. Even though scrollbar
arrows and thumb are in fact transparent, DrawThemeParentBackground() is not called to paint the
parent background, leaving the transparent area untouched. On Windows, even if the scrollbar arrows
are reported to be transparent, the bitmaps for arrow parts in the stock themes are in fact opaque.
Fix Ice Cream Calculator slow scrolling after 4cb229a because the WM_PRINTCLIENT handling in the
application is slow.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53337
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/755
Made changes to comdlg32/itemdlg.c to add missing controls, which are the address bar and the up button.
Updated bitmaps in comctl32 and SVG files for history icons.
My changes help to resolve this bug: https://bugs.winehq.org/show_bug.cgi?id=50338.
--
v13: comdlg32: Add missing controls to the common item dialog, only affecting the implementation
comdlg32: Add missing controls and their functionality to IFileDialog, or the common item dialog.
https://gitlab.winehq.org/wine/wine/-/merge_requests/672
--
v2: windows.media.speech: Implement a worker thread for the recognition session.
windows.media.speech/tests: Test the recognizer state.
windows.media.speech: Return IAsyncAction from session_PauseAsync.
windows.media.speech: Return IAsyncAction from session_StopAsync.
https://gitlab.winehq.org/wine/wine/-/merge_requests/729
Initial implementation for registry application hives, this is a step forward to get Visual Studio to run.
:-)
--
v6: server: save app hive into it's file when closing handle.
server/registry: pass file name instead of file handle to server.
kernelbase: Implement RegLoadAppKey.
ntdll: Initial implementation for application hives.
ntdll: Move NtLoadKey implementation to NtLoadKeyEx.
https://gitlab.winehq.org/wine/wine/-/merge_requests/717