NtUserGetWindowLongW() gets win32u user_lock (for getting window data).
I am only reproducing the real deadlock with some tentative patches and not sure if that can happen without those. Yet it seems to me it is best to avoid nested locking between winex11's win data mutex and win32u's user lock, at least with winex11 locks taken first. In this place nesting the locks looks easily avoidable.