From: Sven Baars <sbaars(a)codeweavers.com> The wayland driver does this during initialization. --- dlls/win32u/driver.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/dlls/win32u/driver.c b/dlls/win32u/driver.c index 12390c026ce..e2ef78f1818 100644 --- a/dlls/win32u/driver.c +++ b/dlls/win32u/driver.c @@ -1314,8 +1314,16 @@ void __wine_set_user_driver( const struct user_driver_funcs *funcs, UINT version return; } + if (!funcs) + { + prev = InterlockedExchangePointer( (void **)&user_driver, (void *)&lazy_load_driver ); + if (prev != &lazy_load_driver) + free( prev ); + return; + } + driver = malloc( sizeof(*driver) ); - *driver = funcs ? *funcs : null_user_driver; + *driver = *funcs; #define SET_USER_FUNC(name) \ do { if (!driver->p##name) driver->p##name = nulldrv_##name; } while(0) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6908