output: add wlr_output_state_init()

This changes the semantics of wlr_output_state. Instead of having
fields with uninitialized memory when missing from the committed
bitflag, all fields are always initialized (and maybe NULL/empty),
just like we do in wlr_surface_state. This reduces the chances of
footguns when reading a field, and removes the need to check for
the committed bitfield everywhere.

A new wlr_output_state_init() function takes care of initializing
the Pixman region.
This commit is contained in:
Simon Ser 2023-06-22 15:48:35 +02:00 committed by Alexander Orzechowski
parent 8a5b5e6f28
commit be05097968
19 changed files with 103 additions and 103 deletions

View file

@ -87,7 +87,8 @@ static void output_frame_notify(struct wl_listener *listener, void *data) {
int32_t width, height;
wlr_output_effective_resolution(wlr_output, &width, &height);
struct wlr_output_state output_state = {0};
struct wlr_output_state output_state;
wlr_output_state_init(&output_state);
struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL, NULL);
wlr_render_pass_add_rect(pass, &(struct wlr_render_rect_options){
@ -285,7 +286,8 @@ static void new_output_notify(struct wl_listener *listener, void *data) {
struct wlr_output_mode *mode = wlr_output_preferred_mode(output);
if (mode != NULL) {
struct wlr_output_state state = {0};
struct wlr_output_state state;
wlr_output_state_init(&state);
wlr_output_state_set_mode(&state, mode);
wlr_output_commit_state(output, &state);
wlr_output_state_finish(&state);