mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2024-11-21 14:42:25 +00:00
drm_format_set: Add wlr_drm_format_set_remove
wlr_drm_format_set_remove lets you remove a modifier from the specified format, useful for filtering implicit modifiers.
This commit is contained in:
parent
014023c14f
commit
70d3635985
@ -69,6 +69,9 @@ void wlr_drm_format_set_finish(struct wlr_drm_format_set *set);
|
||||
const struct wlr_drm_format *wlr_drm_format_set_get(
|
||||
const struct wlr_drm_format_set *set, uint32_t format);
|
||||
|
||||
bool wlr_drm_format_set_remove(struct wlr_drm_format_set *set, uint32_t format,
|
||||
uint64_t modifier);
|
||||
|
||||
bool wlr_drm_format_set_has(const struct wlr_drm_format_set *set,
|
||||
uint32_t format, uint64_t modifier);
|
||||
|
||||
|
@ -86,6 +86,23 @@ bool wlr_drm_format_set_add(struct wlr_drm_format_set *set, uint32_t format,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool wlr_drm_format_set_remove(struct wlr_drm_format_set *set, uint32_t format,
|
||||
uint64_t modifier) {
|
||||
struct wlr_drm_format *fmt = format_set_get(set, format);
|
||||
if (fmt == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (size_t idx = 0; idx < fmt->len; idx++) {
|
||||
if (fmt->modifiers[idx] == modifier) {
|
||||
memmove(&fmt->modifiers[idx], &fmt->modifiers[idx+1], fmt->len - idx - 1);
|
||||
fmt->len--;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void wlr_drm_format_init(struct wlr_drm_format *fmt, uint32_t format) {
|
||||
*fmt = (struct wlr_drm_format){
|
||||
.format = format,
|
||||
|
Loading…
Reference in New Issue
Block a user