Add docs and comments

This commit is contained in:
emersion 2018-01-21 11:11:25 +01:00
parent 0365b587f0
commit c6aab6f56c
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
3 changed files with 32 additions and 16 deletions

View file

@ -5,6 +5,11 @@
#include <pixman.h>
#include <wayland-server.h>
/**
* Damage tracking requires to keep track of previous frames' damage. To allow
* damage tracking to work with triple buffering, an history of two frames is
* required.
*/
#define ROOTS_OUTPUT_PREVIOUS_DAMAGE_LEN 2
struct roots_desktop;
@ -20,6 +25,7 @@ struct roots_output {
pixman_region32_t damage;
bool frame_pending;
// circular queue for previous damage
pixman_region32_t previous_damage[ROOTS_OUTPUT_PREVIOUS_DAMAGE_LEN];
size_t previous_damage_idx;

View file

@ -33,8 +33,6 @@ struct wlr_output_cursor {
struct wl_listener surface_destroy;
};
#define WLR_OUTPUT_PREVIOUS_DAMAGE_COUNT 2
struct wlr_output_impl;
struct wlr_output {
@ -51,21 +49,21 @@ struct wlr_output {
char serial[16];
int32_t phys_width, phys_height; // mm
// Note: some backends may have zero modes
struct wl_list modes;
struct wlr_output_mode *current_mode;
int32_t width, height;
int32_t refresh; // mHz, may be zero
bool enabled;
float scale;
enum wl_output_subpixel subpixel;
enum wl_output_transform transform;
bool needs_swap;
pixman_region32_t damage;
pixman_region32_t damage; // damage for cursors and fullscreen surface
float transform_matrix[16];
// Note: some backends may have zero modes
struct wl_list modes;
struct wlr_output_mode *current_mode;
int32_t width, height;
int32_t refresh; // mHz
struct {
struct wl_signal frame;
struct wl_signal needs_swap;
@ -107,16 +105,18 @@ void wlr_output_destroy(struct wlr_output *output);
void wlr_output_effective_resolution(struct wlr_output *output,
int *width, int *height);
/**
* Makes the output GL context current.
* Makes the output rendering context current.
*
* `buffer_age` is set to the drawing buffer age in number of frames or -1 if
* unknown.
* unknown. This is useful for damage tracking.
*/
bool wlr_output_make_current(struct wlr_output *output, int *buffer_age);
/**
* Swaps the output buffers. If the time of the frame isn't known, set `when` to
* NULL. If the compositor doesn't support damage tracking, set `damage` to
* NULL.
*
* Swapping buffers schedules a `frame` event.
*/
bool wlr_output_swap_buffers(struct wlr_output *output, struct timespec *when,
pixman_region32_t *damage);
@ -126,6 +126,7 @@ uint32_t wlr_output_get_gamma_size(struct wlr_output *output);
void wlr_output_set_fullscreen_surface(struct wlr_output *output,
struct wlr_surface *surface);
struct wlr_output_cursor *wlr_output_cursor_create(struct wlr_output *output);
/**
* Sets the cursor image. The image must be already scaled for the output.