On Fri Jun 14 00:42:35 2024 +0000, Danyil Blyschak wrote:
> Should I change them? I did it this way since that's what
> `dlls/cabinet/fci.c` does (it similarly provides these functions to zlib).
No, that's fine.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5845#note_73146
If a DSN is System wide, we need to write to the HKEY_LOCAL_MACHINE
part of the registry not HKEY_CURRENT_USER which it's currently doing.
--
v4: odbccp32: SQLWritePrivateProfileStringW check for existing DSN first
odbccp32: Support System wide ODBC DSN keys
https://gitlab.winehq.org/wine/wine/-/merge_requests/5812
Provide memory allocator functions to zlib so that it is able to allocate memory and then deflate later.
Also, some minor error-handling things.
--
v2: opcservices: Check for memory allocation failure before deflating.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5845
Instead of accessing the surface with macdrv_get_surface_display_image.
--
v3: winemac: Remove now unnecessary cocoa window surface pointer.
winemac: Push window surface image updates to the main thread.
winemac: Create window surface CGImageRef on surface flush.
winemac: Create a provider for the surface and a HBITMAP wrapping it.
winemac: Remove unused macdrv_get_surface_display_image copy_data parameter.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5798
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56698
--
v7: quartz/tests: Test that avi_decompressor_source_qc_Notify does not deadlock if called from a foreign thread during IMemInput_Receive.
quartz: Allow concurrent calls to AVI decoder qc_Notify and Receive.
msvfw32/tests: Test that Cinepak rejects unsupported output types.
iccvid: Reject unsupported output types.
quartz/tests: Add Cinepak test to avi splitter.
winegstreamer: Make AVI splitter use end of previous frame if the current frame doesn't have a timestamp.
winegstreamer: Implement AM_MEDIA_TYPE to wg_format converter for Cinepak video.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5744
Alex Henrie (@alexhenrie) commented about dlls/ntdll/unix/env.c:
> STARTS_WITH( var, "TEMP=" ) ||
> STARTS_WITH( var, "TMP=" ) ||
> STARTS_WITH( var, "QT_" ) ||
> - STARTS_WITH( var, "VK_" ));
> + STARTS_WITH( var, "VK_" ) ||
> + STARTS_WITH( var, "XDG_SESSION_TYPE=" ));
I suspect we should treat any variable that starts with `XDG_` specially, not just `XDG_SESSION_TYPE`.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5839#note_73092
A game creates a vmr7 filter, inserts it in a IFilterGraph2 and
calls put_FullScreenMode(OAFALSE) on the graph's IVideoWindow.
This currently returns E_NOTIMPL in Wine and the game quits
on that error code.
A full solution would likely require to implement IFullScreenVideoEx
filter, and other bits, but this simpler approach let the game move
forward.
Also tested & fixed calling put_FullScreenMode on the current mode
returns S_FALSE instead of S_OK.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5823
This is the first step in moving the various D3DXCreateTextureFromFileInMemory functions over to using shared code.
--
v4: d3dx9: Add support for specifying which mip level to get pixel data from to d3dx_image_get_pixels().
https://gitlab.winehq.org/wine/wine/-/merge_requests/5801
This MR adds support for creating file mapping objects backed by large pages on Linux, by making the following changes:
## wineserver
* On Linux, `create_temp_file` will first attempt to use memfds as the backing fd. If it fails, it'll return to the current codepath, creating a temporary file in either the server or config directory.
* The created memfd will be sealed against writes, if the caller requesting the appropriate page protection flags.
* This removes the requirement that FDs be only created on filesystems/directories that aren't `noexec`.
* In the server method `create_mapping` , if large pages have been requested by the caller, hold that the calling thread's token holds `SeLockMemoryPrivilege` .
* Additionally, add `SeLockMemoryPrivilege` to the list of privileges enabled for the Administrator.
## `ntdll`
* Add `virtual_get_min_large_page_size` and its exported wrapper `wine_unix_get_min_large_page_size`.
* On Linux, the minimum page size is determined by going through `/sys/kernel/mm/hugepages`. If hugepage support was not detected, `STATUS_NOT_SUPPORTED` is returned instead. On other platforms, the older hard-coded value of 2\*1024\*1024 is returned instead.
* `NtCreateSection` will validate certain parameters if large pages are requested. Specifically, it will return STATUS_INVALID_PARAMETER if the requested mapping is not anonymous/unnamed, or the size is not a multiple of the minimum supported page size.
## `kernelbase`
* `GetLargePageMinimum` will use `wine_unix_get_min_large_page_size`.
## `kernel32/tests`
* Add new test test_large_page_file_mapping, which validates privilege enforcements and parameter validation while creating large pages backed file mapping obejcts. The tests are skipped if `GetLargePageMinimum` returns 0.
--
v16: kernel32: Add tests for large page mapping support.
ntdll: Validate parameters to NtCreateSection if large pages are requested.
server: Use memfd to back anonymous mappings on Linux.
kernelbase: Implement GetLargePageMinimum by returning the value of LargePageMinimum in _KUSER_SHARED_DATA.
server: Set LargePageMinimum in _KUSER_SHARED_DATA on Linux.
server: Require SeLockMemoryPrivilege to create large page mappings.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5769
This is the first step in moving the various D3DXCreateTextureFromFileInMemory functions over to using shared code.
--
v3: d3dx9: Add support for specifying which mip level to get pixel data from to d3dx_image_get_pixels().
d3dx9: Cleanup texture value argument handling in D3DXCreateTextureFromFileInMemoryEx().
d3dx9: Add support for specifying a starting mip level when initializing a d3dx_image structure.
d3dx9: Use struct volume inside of struct d3dx_image for storing dimensions.
d3dx9: Use d3dx_image structure inside of D3DXCreateTextureFromFileInMemoryEx().
d3dx9: Refactor texture creation and cleanup in D3DXCreateTextureFromFileInMemoryEx().
d3dx9/tests: Add more tests for loading files with multiple mip levels into textures.
d3dx9/tests: Add tests for the source info argument of D3DXCreateTextureFromFileInMemoryEx().
https://gitlab.winehq.org/wine/wine/-/merge_requests/5801
--
v5: win32u: Avoid changing thread DPI context in process_hardware_message.
win32u: Factor hardware message point DPI mapping together.
win32u: Use map_window_points with explicit DPI over screen_to_client.
win32u: Split hardware message window lookup to a separate helper.
win32u: Use per-monitor DPI window_from_point in process_mouse_message.
win32u: Parameterize window_from_point dpi.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5819
If the malloc(3) has failed to allocate the memory in the
init_xdg_dirs(), the latter returns nonzero value, but the 'file' handle
is kept open. This closes the handle before return from the
init_xdg_dirs() if the malloc(3) has failed.
--
v4: shell32: Fix possible handle leak
https://gitlab.winehq.org/wine/wine/-/merge_requests/5827
These patches fix painting in an application that draws outside of a CS_PARENTDC child
client area in its WM_PAINT handler.
Comments and suggestions are welcome.
--
v3: win32u: Use parent rectangle for visible region calculations of a CS_PARENTDC child.
win32u: Don't clip update region to the window client rectangle.
win32u: GetUpdateRect() should clip update rectangle to the window client area.
win32u: GetUpdateRgn() should clip update region to the window client area.
win32u: Clip PAINTSTRUCT.rcPaint to the window client area.
server: For a CS_PARENTDC child use parent for visible region calculations.
server: If the being validated region covers whole window then validate everything.
user32/tests: Add a message test for listbox redrawing after LB_SETCOUNT.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5665
--
v3: d3d11/tests: Teste UpdateSubresource() for NV12 textures.
d3d11/tests: Test without render target.
tests/d3d11: Do not check pitches.
d3d11/tests: Check for NV12 texture support before testing them.
d3d11/tests: Check the result of compiling HLSL shaders.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5818
This is the first step in moving the various D3DXCreateTextureFromFileInMemory functions over to using shared code.
--
v2: d3dx9: Add support for specifying which mip level to get pixel data from to d3dx_image_get_pixels().
d3dx9: Cleanup texture value argument handling in D3DXCreateTextureFromFileInMemoryEx().
d3dx9: Add support for specifying a starting mip level when initializing a d3dx_image structure.
d3dx9: Use struct volume inside of struct d3dx_image for storing dimensions.
d3dx9: Use d3dx_image structure inside of D3DXCreateTextureFromFileInMemoryEx().
d3dx9: Refactor texture creation and cleanup in D3DXCreateTextureFromFileInMemoryEx().
d3dx9/tests: Add more tests for loading files with multiple mip levels into textures.
d3dx9/tests: Add tests for the source info argument of D3DXCreateTextureFromFileInMemoryEx().
https://gitlab.winehq.org/wine/wine/-/merge_requests/5801
UCRT's FILE struct and fd struct have different layouts, and their locks are different.
Implementation in Wine does not match UCRT in Windows, causing ABI issues.
see:
https://bugs.winehq.org/show_bug.cgi?id=53960
--
v39: ucrtbase: Fix FILE _flag values.
ucrtbase: Always use CRITICAL_SECTION for FILE locking.
msvcrt: Don't use custom standard streams definition.
ucrtbase: Add FILE structure tests.
ucrtbase: Fix _iobuf struct layout.
msvcp140: Use _get_stream_buffer_pointers() to access FILE internal buffers.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5752
--
v2: d3d11/tests: Teste UpdateSubresource() for NV12 textures.
d3d11/tests: Test without render target.
tests/d3d11: Do not check pitches.
d3d11/tests: Mark NV12 textures as broken on Windows 7.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5818
If the malloc(3) had failed to allocate the memory, it returned nonzero
value, but the 'file' handle was kept open. This closes the handle
before return from the `init_xdg_dirs()` if the malloc(3) has failed.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5827
First part of Proton shared memory series. The full branch can be seen at https://gitlab.winehq.org/rbernon/wine/-/commits/mr/shared-memories.
--
v41: win32u: Use the desktop shared data for GetCursorPos.
server: Move the last cursor time to the desktop session object.
server: Move the cursor position to the desktop session object.
win32u: Open the desktop shared object in NtUserSetThreadDesktop.
server: Return the desktop object locator in (get|set)_thread_desktop.
server: Allocate shared session object for desktops.
include: Add ReadNoFence64 inline helpers.
server: Create a global session shared mapping.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3103
If a DSN is System wide, we need to write to the HKEY_LOCAL_MACHINE
part of the registry not HKEY_CURRENT_USER which it's currently doing.
--
v2: odbccp32: SQLWritePrivateProfileStringW check for existing DSN first
odbccp32: Support System wide ODBC DSN keys
https://gitlab.winehq.org/wine/wine/-/merge_requests/5812
This should reflect what we actually support, while still being a superset
of what native drivers actually support.
Native driver support varies, but, as the comments document, native drivers
(at least as of windows 10) support only RGB -> RGB, YUV -> RGB, and BC -> RGB
conversions. The actual formats supported are a more limited subset than exposed
(despite that the video cards should be perfectly capable of supporting more
conversions) but erring on the side of overreporting seems safer.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5816