mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-10 10:41:50 +00:00
wayland: Use preferred_buffer_scale when available
On wl_compositor >= 6 we bind v6 and use preferred_buffer_scale. Otherwise we bind 4 and do as before. No other changes are needed for the version bump as Tracy doesn't use wl_surface_attach() with nonzero coordinates.
This commit is contained in:
parent
16434f116c
commit
fcdc96748e
@ -165,6 +165,7 @@ static RunQueue* s_mainThreadTasks;
|
|||||||
|
|
||||||
static struct wl_display* s_dpy;
|
static struct wl_display* s_dpy;
|
||||||
static struct wl_compositor* s_comp;
|
static struct wl_compositor* s_comp;
|
||||||
|
static uint32_t s_comp_version;
|
||||||
static struct wl_surface* s_surf;
|
static struct wl_surface* s_surf;
|
||||||
static struct wl_egl_window* s_eglWin;
|
static struct wl_egl_window* s_eglWin;
|
||||||
static struct wl_shm* s_shm;
|
static struct wl_shm* s_shm;
|
||||||
@ -211,6 +212,9 @@ static bool s_wheel;
|
|||||||
|
|
||||||
static void RecomputeScale()
|
static void RecomputeScale()
|
||||||
{
|
{
|
||||||
|
// On wl_compositor >= 6 the scale is sent explicitly via wl_surface.preferred_buffer_scale.
|
||||||
|
if ( s_comp_version >= 6 ) return;
|
||||||
|
|
||||||
int max = 1;
|
int max = 1;
|
||||||
for( auto& out : s_output )
|
for( auto& out : s_output )
|
||||||
{
|
{
|
||||||
@ -513,7 +517,8 @@ static void RegistryGlobal( void*, struct wl_registry* reg, uint32_t name, const
|
|||||||
{
|
{
|
||||||
if( strcmp( interface, wl_compositor_interface.name ) == 0 )
|
if( strcmp( interface, wl_compositor_interface.name ) == 0 )
|
||||||
{
|
{
|
||||||
s_comp = (wl_compositor*)wl_registry_bind( reg, name, &wl_compositor_interface, 4 );
|
s_comp_version = version;
|
||||||
|
s_comp = (wl_compositor*)wl_registry_bind( reg, name, &wl_compositor_interface, version >= 6 ? 6 : 4 );
|
||||||
}
|
}
|
||||||
else if( strcmp( interface, wl_shm_interface.name ) == 0 )
|
else if( strcmp( interface, wl_shm_interface.name ) == 0 )
|
||||||
{
|
{
|
||||||
@ -637,9 +642,15 @@ static void SurfaceLeave( void*, struct wl_surface* surface, struct wl_output* o
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void SurfacePreferredBufferScale( void*, struct wl_surface* surface, int32_t scale )
|
||||||
|
{
|
||||||
|
s_maxScale = scale;
|
||||||
|
}
|
||||||
|
|
||||||
constexpr struct wl_surface_listener surfaceListener = {
|
constexpr struct wl_surface_listener surfaceListener = {
|
||||||
.enter = SurfaceEnter,
|
.enter = SurfaceEnter,
|
||||||
.leave = SurfaceLeave,
|
.leave = SurfaceLeave,
|
||||||
|
.preferred_buffer_scale = SurfacePreferredBufferScale,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void SetupCursor()
|
static void SetupCursor()
|
||||||
|
Loading…
Reference in New Issue
Block a user