mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-11-03 09:01:40 -05:00
render/texture: introduce wlr_texture_invalidate
This commit is contained in:
parent
5c699f09cb
commit
a3a85a9aed
3 changed files with 30 additions and 0 deletions
21
include/render/wlr_texture.h
Normal file
21
include/render/wlr_texture.h
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
#ifndef RENDER_WLR_TEXTURE_H
|
||||||
|
#define RENDER_WLR_TEXTURE_H
|
||||||
|
|
||||||
|
#include <wlr/render/wlr_texture.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refresh the texture contents from the underlying buffer storage.
|
||||||
|
*
|
||||||
|
* If the texture refers to external memory (i.e. memory owned by another
|
||||||
|
* process), the renderer may need a wlr_texture_invalidate call to make
|
||||||
|
* external changes visible to the texture.
|
||||||
|
*
|
||||||
|
* This operation must not perform any copy.
|
||||||
|
*
|
||||||
|
* If the texture cannot be invalidated, false is returned. If the texture
|
||||||
|
* doesn't need to be invalidated for external changes to be visible, true is
|
||||||
|
* immediately returned.
|
||||||
|
*/
|
||||||
|
bool wlr_texture_invalidate(struct wlr_texture *texture);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -67,6 +67,7 @@ struct wlr_texture_impl {
|
||||||
uint32_t stride, uint32_t width, uint32_t height,
|
uint32_t stride, uint32_t width, uint32_t height,
|
||||||
uint32_t src_x, uint32_t src_y, uint32_t dst_x, uint32_t dst_y,
|
uint32_t src_x, uint32_t src_y, uint32_t dst_x, uint32_t dst_y,
|
||||||
const void *data);
|
const void *data);
|
||||||
|
bool (*invalidate)(struct wlr_texture *texture);
|
||||||
void (*destroy)(struct wlr_texture *texture);
|
void (*destroy)(struct wlr_texture *texture);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <wlr/render/interface.h>
|
#include <wlr/render/interface.h>
|
||||||
#include <wlr/render/wlr_texture.h>
|
#include <wlr/render/wlr_texture.h>
|
||||||
|
#include "render/wlr_texture.h"
|
||||||
|
|
||||||
void wlr_texture_init(struct wlr_texture *texture,
|
void wlr_texture_init(struct wlr_texture *texture,
|
||||||
const struct wlr_texture_impl *impl, uint32_t width, uint32_t height) {
|
const struct wlr_texture_impl *impl, uint32_t width, uint32_t height) {
|
||||||
|
|
@ -69,3 +70,10 @@ bool wlr_texture_write_pixels(struct wlr_texture *texture,
|
||||||
return texture->impl->write_pixels(texture, stride, width, height,
|
return texture->impl->write_pixels(texture, stride, width, height,
|
||||||
src_x, src_y, dst_x, dst_y, data);
|
src_x, src_y, dst_x, dst_y, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wlr_texture_invalidate(struct wlr_texture *texture) {
|
||||||
|
if (!texture->impl->invalidate) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return texture->impl->invalidate(texture);
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue