mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-26 14:45:58 +01:00
compositor: add wlr_surface_set_preferred_buffer_scale()
References: https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/220
This commit is contained in:
parent
0bb574239d
commit
42edd36785
2 changed files with 29 additions and 1 deletions
|
@ -163,6 +163,8 @@ struct wlr_surface {
|
||||||
} previous;
|
} previous;
|
||||||
|
|
||||||
bool opaque;
|
bool opaque;
|
||||||
|
|
||||||
|
int32_t preferred_buffer_scale;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct wlr_renderer;
|
struct wlr_renderer;
|
||||||
|
@ -319,6 +321,15 @@ uint32_t wlr_surface_lock_pending(struct wlr_surface *surface);
|
||||||
*/
|
*/
|
||||||
void wlr_surface_unlock_cached(struct wlr_surface *surface, uint32_t seq);
|
void wlr_surface_unlock_cached(struct wlr_surface *surface, uint32_t seq);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the preferred buffer scale for the surface.
|
||||||
|
*
|
||||||
|
* This sends an event to the client indicating the preferred scale to use for
|
||||||
|
* buffers attached to this surface.
|
||||||
|
*/
|
||||||
|
void wlr_surface_set_preferred_buffer_scale(struct wlr_surface *surface,
|
||||||
|
int32_t scale);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create the wl_compositor global, which can be used by clients to create
|
* Create the wl_compositor global, which can be used by clients to create
|
||||||
* surfaces and regions.
|
* surfaces and regions.
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
#include "types/wlr_subcompositor.h"
|
#include "types/wlr_subcompositor.h"
|
||||||
#include "util/time.h"
|
#include "util/time.h"
|
||||||
|
|
||||||
#define COMPOSITOR_VERSION 5
|
#define COMPOSITOR_VERSION 6
|
||||||
#define CALLBACK_VERSION 1
|
#define CALLBACK_VERSION 1
|
||||||
|
|
||||||
static int min(int fst, int snd) {
|
static int min(int fst, int snd) {
|
||||||
|
@ -1089,6 +1089,23 @@ void wlr_surface_get_buffer_source_box(struct wlr_surface *surface,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wlr_surface_set_preferred_buffer_scale(struct wlr_surface *surface,
|
||||||
|
int32_t scale) {
|
||||||
|
assert(scale > 0);
|
||||||
|
|
||||||
|
if (wl_resource_get_version(surface->resource) <
|
||||||
|
WL_SURFACE_PREFERRED_BUFFER_SCALE_SINCE_VERSION) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (surface->preferred_buffer_scale == scale) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wl_surface_send_preferred_buffer_scale(surface->resource, scale);
|
||||||
|
surface->preferred_buffer_scale = scale;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct wl_compositor_interface compositor_impl;
|
static const struct wl_compositor_interface compositor_impl;
|
||||||
|
|
||||||
static struct wlr_compositor *compositor_from_resource(
|
static struct wlr_compositor *compositor_from_resource(
|
||||||
|
|
Loading…
Reference in a new issue