Add dynamic output resizing for Wayland backend

This allows outputs to:
- Not support modesetting
- Resize themselves
This commit is contained in:
Drew DeVault 2017-06-20 17:51:45 -04:00
parent c9d5a0b2fb
commit b9d36c8149
10 changed files with 75 additions and 90 deletions

View file

@ -110,15 +110,14 @@ int main(int argc, char *argv[]) {
.default_color = { 0.25f, 0.25f, 0.25f, 1 },
.clear_color = { 0.25f, 0.25f, 0.25f, 1 }
};
struct compositor_state compositor = { 0,
.data = &state,
.output_add_cb = handle_output_add,
.output_frame_cb = handle_output_frame,
.keyboard_key_cb = handle_keyboard_key,
.pointer_motion_cb = handle_pointer_motion,
.pointer_button_cb = handle_pointer_button,
.pointer_axis_cb = handle_pointer_axis,
};
struct compositor_state compositor = { 0 };
compositor.data = &state;
compositor.output_add_cb = handle_output_add;
compositor.output_frame_cb = handle_output_frame;
compositor.keyboard_key_cb = handle_keyboard_key;
compositor.pointer_motion_cb = handle_pointer_motion;
compositor.pointer_button_cb = handle_pointer_button;
compositor.pointer_axis_cb = handle_pointer_axis;
compositor_init(&compositor);
state.renderer = wlr_gles3_renderer_init();

View file

@ -197,13 +197,12 @@ int main(int argc, char *argv[]) {
wl_list_init(&state.config);
parse_args(argc, argv, &state.config);
struct compositor_state compositor = { 0,
.data = &state,
.output_add_cb = handle_output_add,
.output_remove_cb = handle_output_remove,
.output_frame_cb = handle_output_frame,
.keyboard_key_cb = handle_keyboard_key,
};
struct compositor_state compositor = { 0 };
compositor.data = &state;
compositor.output_add_cb = handle_output_add;
compositor.output_remove_cb = handle_output_remove;
compositor.output_frame_cb = handle_output_frame;
compositor.keyboard_key_cb = handle_keyboard_key;
compositor_init(&compositor);
state.renderer = wlr_gles3_renderer_init();

View file

@ -383,7 +383,9 @@ static void output_add_notify(struct wl_listener *listener, void *data) {
fprintf(stderr, "Output '%s' added\n", output->name);
fprintf(stderr, "%s %s %"PRId32"mm x %"PRId32"mm\n", output->make, output->model,
output->phys_width, output->phys_height);
wlr_output_set_mode(output, output->modes->items[0]);
if (output->modes->length > 0) {
wlr_output_set_mode(output, output->modes->items[0]);
}
struct output_state *ostate = calloc(1, sizeof(struct output_state));
clock_gettime(CLOCK_MONOTONIC, &ostate->last_frame);
ostate->output = output;