Commit Graph

693 Commits

Author SHA1 Message Date
Huw Davies fb0af5d9ad winemac: Use ULongToPtr() to cast format ids to void ptrs.
This avoids compiler warnings on 64-bit.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 20:33:43 +02:00
Jacek Caban 0953de5cab user32: Get rid of __wine_set_pixel_format.
Use NtUserSetWindowPixelFormat in drivers instead.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-13 18:13:42 +02:00
Jacek Caban f6524f7a3a win32u: Don't use CDECL for user driver functions.
They are no longer used from PE code.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-07 22:44:39 +02:00
Tim Clem e66c9cadbb winemac.drv: Sort display modes.
Mac driver version of a8b4cf7f2d.

Combined with the previous patch that reordered synthesized modes,
the Mac driver implementation of EnumDisplayModesEx now returns modes
in the same order as the X11 driver.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-23 10:55:16 +01:00
Tim Clem c2936f70e3 winemac.drv: Move synthetic display modes after the real ones.
Also return higher synthesized bitdepths first.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-23 10:55:14 +01:00
Tim Clem 8a8808e98b winemac.drv: Add a flag to filter unsupported modes in copy_display_modes.
Prefer supported display modes over similar unsupported ones.
Centralizes the logic from the ChangeDisplaySettingsEx and
EnumDisplaySettingsEx implementations.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-23 10:55:11 +01:00
Tim Clem 5c09278ab6 winemac.drv: Simplify control flow in copy_display_modes.
Introduce a helper function to determine if a mode is preferred over
another.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-23 10:55:06 +01:00
Jacek Caban 747f7b543c win32u: Don't use CDECL for window surface functions.
They are no longer used from PE code.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-21 16:12:07 +01:00
Paul Gofman e53b68acec win32u: Move wine_get_wgl_driver() from DC driver.
To get rid of get_dc_ptr() and thus not to fail
concurrent __wine_get_wgl_driver().

Signed-off-by: Paul Gofman <pgofman@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 20:17:25 +01:00
Alexandre Julliard f0cd33c69e include: Add support for defining Win32 types as 'long' where possible.
Add -DWINE_NO_LONG_TYPES to modules that still have compilation
warnings with long types.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 20:38:22 +01:00
Dean M Greer 2d784c8548 winemac.drv: Fix compile with pre macOS 10.12 SDKs.
Fixes a regression introduced by e58b1a2b39.

Signed-off-by: Dean M Greer <gcenx83@gmail.com>
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-24 10:19:20 +01:00
Tim Clem 599ecd97a8 winemac.drv: Use -setMouseConfinementRect: for cursor clipping by default.
On macOS 10.13+, use this private NSWindow method for ClipCursor
calls. The old behavior can be restored by setting the per-app Mac
Driver registry key UseConfinementCursorClipping to N.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-21 22:47:13 +01:00
Tim Clem 648fcd1882 winemac.drv: Add a cursor clipping implementation using -setMouseConfinementRect:.
This 10.13+ API is far simpler than the CGEventTap approach, and does
not require Accessibility permissions. It is not currently not enabled.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-21 22:47:11 +01:00
Tim Clem 7bd72959a3 winemac.drv: Factor common cursor clipping methods into functions.
Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-21 22:47:08 +01:00
Tim Clem 2e25ba489a winemac.drv: Create a protocol to represent a cursor clipping handler.
Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-21 22:47:06 +01:00
Tim Clem 1c80eb5e5b winemac.drv: Factor out cursor clipping code to its own class.
Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-21 22:47:04 +01:00
Tim Clem 8dae8ad8d8 winemac.drv: Don't activate the app if its first window is WS_EX_NOACTIVATE.
This matches the behavior on Windows.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 20:37:46 +01:00
Tim Clem e58b1a2b39 winemac.drv: Use Cocoa nonactivating panels for WS_EX_NOACTIVATE windows.
NSWindowStyleMaskNonactivatingPanel is almost exactly the same behavior
as WS_EX_NOACTIVATE on Windows: it prevents the window from activating
the app, but does not prevent it from being focused if the app is
already active.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 20:37:42 +01:00
Tim Clem 4b4ebef412 winemac.drv: Allow foregrounding WS_EX_NOACTIVATE windows.
The previous behavior denies any attempt to focus such windows, which
is not in line with how they behave on Windows.

Rename the macdrv_window_state no_activate field to no_foreground
so it more accurately reflects its meaning.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 20:31:33 +01:00
Keno Fischer 1f17015cea winemac: Unconditionally link to QuartzCore.
This fixes non-Metal builds.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52216
Signed-off-by: Keno Fischer <keno@juliacomputing.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-06 16:01:28 +01:00
Huw Davies 6bb537c8b0 winemac: Don't try to update when the window is closing.
This can happen after the window surface has been destroyed.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52231
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-04 18:35:07 +01:00
Jacek Caban 9596e7f2a4 win32u: Use user driver for wine_get_vulkan_driver.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-08 09:57:56 +01:00
Huw Davies 3016a34f3e winemac: Include missing dlfcn.h.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-02 20:20:39 +01:00
Jacek Caban 95a106bc93 winemac.drv: Use UpdateDisplayDevices driver entry point for registering devices.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-01 19:47:34 +01:00
Alexandre Julliard 8d6c33c3bf include: Remove wine/port.h.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-01 18:13:54 +01:00
Huw Davies 6bc1e9f445 winemac: Remove unused variable.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-30 22:07:21 +01:00
Alexandre Julliard 60bece33a4 winemac.drv: Fix RegQueryValueExW size handling.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-29 23:25:46 +01:00
Brendan Shanks 32fb017d4a winemac.drv: Remove workarounds for Mac OS X 10.6 and earlier.
Signed-off-by: Brendan Shanks <bshanks@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-18 22:37:18 +01:00
Jacek Caban 73bf140c01 win32u: Use user_driver_funcs to pass driver to __wine_set_display_driver.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-11 18:39:48 +01:00
Jacek Caban fd675485be user32: Use user_driver_funcs to expose user driver function from drivers.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-11 18:39:48 +01:00
Jacek Caban d1290b6ec7 user32: Introduce user_driver_funcs struct.
And use it instead of USER_DRIVER.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-11 18:39:48 +01:00
Tim Clem 9913f27862 winemac.drv: Remove extraneous CGEventTapIsEnabled check.
We no longer enable or disable the event tap manually, and it re-enables
itself on kCGEventTapDisabledByTimeout, so this check is not needed.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-20 20:12:10 +02:00
Tim Clem 5e543fee7a winemac.drv: Stop cursor clipping when all windows are minimized.
There's no analogous state on Windows, where an app is focused but has no
visible windows, but this seems like the best behavior.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-20 20:12:08 +02:00
Tim Clem 184048042e winemac.drv: Stop cursor clipping when a window is resized by dragging.
Testing on Windows confirms this behavior.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-20 20:12:06 +02:00
Tim Clem 2407f9b84e winemac.drv: Stop cursor clipping when the app deactivates.
Testing on Windows confirms this behavior.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-20 20:12:04 +02:00
Tim Clem 325cc98d7d winemac.drv: Simplify cursor clipping code paths.
Centralizes all clipping behavior into -startClippingCursor: and
-stopClippingCursor.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-20 20:12:01 +02:00
Zhiyi Zhang bb5b1d7554 winemac.drv: Pass size in bytes to RegQueryValueExW().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-20 11:22:19 +02:00
Zhiyi Zhang 5b7397bb27 winemac.drv: Set hkey to NULL after RegCloseKey() in macdrv_init_gpu().
Although it's unlikely, RegCloseKey() may close an already closed key if
the following SetupDiGetDeviceRegistryPropertyW() failed.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-19 11:33:05 +02:00
Zhiyi Zhang d275e68dc6 winemac.drv: Add GPU hardware information values to the registry.
Based on a patch by Dmitry Timoshkov.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-19 11:33:05 +02:00
Piotr Caban 30c6ab463f winemac.drv: Silence ImeSetActiveContext fixme.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-15 21:06:27 +02:00
Jacek Caban 6342e9217d gdi32: Remove unused argument from CreateDC driver entry point.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-29 21:38:12 +02:00
Alexandre Julliard 6ba7773121 makefiles: Add a -mcygwin flag to specify the inverse of -mno-cygwin.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-20 22:45:48 +02:00
Zhiyi Zhang 0ed105fb00 winemac.drv: Register GUID_DEVINTERFACE_MONITOR interface for monitors.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-16 22:22:44 +02:00
Zhiyi Zhang 5a804af79b winemac.drv: Register GUID_DISPLAY_DEVICE_ARRIVAL interface for GPUs.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-16 22:22:44 +02:00
Zhiyi Zhang 9a370223ab winemac.drv: Register GUID_DEVINTERFACE_DISPLAY_ADAPTER interface for GPUs.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-16 22:22:44 +02:00
Tim Clem a45bb014e8 winemac.drv: Remove now-unnecessary drag stop event on mouse up.
This approach was added by 5cf64084fb to work around changes to
event behavior in macOS Catalina, 10.15. However, more reliable
notification center messages for dragging are available on 10.12+,
making this path unnecessary.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-15 09:44:25 +02:00
Tim Clem bb28d54d08 winemac.drv: Use window drag notifications when available.
When running on macOS 10.12+, there are private notification center
messages we can use to reliably detect when a window is being
dragged by its titlebar. These are less finicky than the current
combination of an undocumented event subtype and a left mouse up.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-15 09:44:22 +02:00
Jacek Caban 01fdc50fa2 gdi32: Remove no longer used printer config driver entry points.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-13 19:57:29 +02:00
Tim Clem b5deeff860 winemac.drv: Allow cycling of windows with Cmd+`.
We already set up the Window menu and set the relevant bits in
collectionBehavior, but windows must respond YES to
-canBecomeKeyWindow in order to actually be activated by Cmd+`
window cycling.

Signed-off-by: Tim Clem <tclem@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-10 09:00:21 +02:00
Jacek Caban 6403e88140 gdi32: Use GetICMProfile driver entry point for EnumICMProfilesW.
When display ICM is not explicitly configured on Windows, GetICMProfile
returns the default profile, but EnumICMProfiles does not enumerate
anything. For non-default configuration, EnumICMProfiles returns
configured profiles.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-09 19:31:22 +02:00