10 DLUs is the recommended height for check boxes on Windows. 8 DLUs is not enough and may cause
shrinking in HiDPI settings.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
10 DLUs is the recommended height for check boxes on Windows. 8 DLUs is not enough and may cause
shrinking in HiDPI settings.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
The destination rectangle may be smaller than that of theme parts, in which case, the draw size
returned is adjusted to fit the destination rectangle. Without passing a destination rectangle
to GetThemePartSize(), the function assumes that there is no limit for destination.
This fixes winecfg check boxes missing the upper edge in 192 DPI. You may notice that the check box
bitmap is slightly shrank and so the shape is a bit off. However, this is what happens on Windows as
well when check box height is set to 8 DLUs.
GetThemePartSize() without destination rectangles are also used in other controls, but manual tests
showed that those controls don't shrink their theme background as check boxes do so they are left
unchanged.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
The gitlab scripts operate without access to the wine tree.
Requiring a trailing slash on patterns simplifies the logic
to automatically assign reviewers to MRs.
send_socket does some extra bookkeeping that's currently missing from the
register_async path. Instead of adding it to sock_queue_async(), let's just
centralize all send requests so that they go through send_socket.
recv_socket does some extra bookkeeping that's currently missing from the
register_async path. Instead of adding it to sock_queue_async(), let's just
centralize all recv requests so that they go through recv_socket.
I believe this was a mistake introduced by 831ff10200.
This fixes GL errors with multiple applications, including Ragnarok Online and
Bloodrayne: Terminal Cut.
Vulkan pipelines should be destroyed only after the last command buffer using
the pipeline is done executing. Since we do not track which pipelines are
encoded into which command buffers, defer destruction until the current command
buffer finishes.
Signed-off-by: Jan Sikorski <jsikorski@codeweavers.com>
Sometimes error event serial is zero. For example, NVIDIA driver may send X_GLXCopyContext errors
with the event serial set to zero. When it's zero, previously the error handler passes the error
to the default error handler and cause application crashes.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
If the display is not locked, another thread could take the error event and handle it with the
default error handlers and thus not handled by the current thread with the specified error handlers.
Fix Cladun X2 crash at start.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
glxCopyContext() may throw X errors and cause the current process to exit. For example, Mesa doesn't
support glxCopyContext() for direct rendering contexts and ends up using the code path for indirect
rendering contexts. When Xorg receives such requests, it rejects them because they're for direct
rendering contexts and reports an X error. We also can't use indirect rendering context because
it needs to be explicitly enabled in xorg.conf and has poor performance. So handle this error before
graphics drivers implement the support.
Fix Cladun X2 crash at start.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Bloodrayne: Terminal Cut (and Bloodrayne 2: Terminal Cut, and probably other
games in the series) streams from a SYSTEMMEM index buffer, updating it and
drawing from it every frame. This is currently slow on Wine, since each map
needs to wait for the previous upload (on the CS) to complete.
There are a few ways to avoid waiting, but this patch takes the approach of
effectively uploading from the SYSTEMMEM buffer on the client side, while using
a dynamic buffer to avoid client/CS synchronization. This brings performance
from 20-30 FPS to a (locked) 60, on NVidia GL drivers.