On Tue Sep 3 16:12:27 2024 +0000, Rémi Bernon wrote:
The issue, is that as far as I understand (which may not be correct), this will trigger the display device initialization, which eventually calls the `output_done` handler which calls back into win32u through `wayland_output_done` > `maybe_init_display_devices`. It may look, or actually be, harmless for now, but I think it's asking for trouble later, and drivers shouldn't do anything without their callbacks in place. You will need to better describe how and why this segfaults, and try to find a different solution.
Right now the current `__wine_set_user_driver()` behavior is to not change user driver entrypoints if they've been changed from the lazy load ones (if I'm reading the function code correctly); this means the Wayland driver entrypoints are always being used (even if the driver loading fails) and this causes weird behavior like `planes = 0` FIXME being printed for some bitmap function and libelf segfaulting
Should I change the behavior of `__wine_set_user_driver(NULL)` to always change the entrypoints (even if the entrypoints have been modified from the lazy load ones)? Right now none of the Wine graphics drivers except winewayland use this function in that way