Merge pull request #1166 from emersion/cleanup-example-simple

examples: cleanup simple
This commit is contained in:
Drew DeVault 2018-07-29 10:46:41 -04:00 committed by GitHub
commit f572bc065e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 21 additions and 14 deletions

View File

@ -37,8 +37,8 @@ struct sample_keyboard {
}; };
void output_frame_notify(struct wl_listener *listener, void *data) { void output_frame_notify(struct wl_listener *listener, void *data) {
wlr_log(WLR_DEBUG, "Output removed"); struct sample_output *sample_output =
struct sample_output *sample_output = wl_container_of(listener, sample_output, frame); wl_container_of(listener, sample_output, frame);
struct sample_state *sample = sample_output->sample; struct sample_state *sample = sample_output->sample;
struct timespec now; struct timespec now;
clock_gettime(CLOCK_MONOTONIC, &now); clock_gettime(CLOCK_MONOTONIC, &now);
@ -66,7 +66,9 @@ void output_frame_notify(struct wl_listener *listener, void *data) {
} }
void output_remove_notify(struct wl_listener *listener, void *data) { void output_remove_notify(struct wl_listener *listener, void *data) {
struct sample_output *sample_output = wl_container_of(listener, sample_output, destroy); struct sample_output *sample_output =
wl_container_of(listener, sample_output, destroy);
wlr_log(WLR_DEBUG, "Output removed");
wl_list_remove(&sample_output->frame.link); wl_list_remove(&sample_output->frame.link);
wl_list_remove(&sample_output->destroy.link); wl_list_remove(&sample_output->destroy.link);
free(sample_output); free(sample_output);
@ -74,10 +76,13 @@ void output_remove_notify(struct wl_listener *listener, void *data) {
void new_output_notify(struct wl_listener *listener, void *data) { void new_output_notify(struct wl_listener *listener, void *data) {
struct wlr_output *output = data; struct wlr_output *output = data;
struct sample_state *sample = wl_container_of(listener, sample, new_output); struct sample_state *sample =
struct sample_output *sample_output = calloc(1, sizeof(struct sample_output)); wl_container_of(listener, sample, new_output);
struct sample_output *sample_output =
calloc(1, sizeof(struct sample_output));
if (!wl_list_empty(&output->modes)) { if (!wl_list_empty(&output->modes)) {
struct wlr_output_mode *mode = wl_container_of(output->modes.prev, mode, link); struct wlr_output_mode *mode =
wl_container_of(output->modes.prev, mode, link);
wlr_output_set_mode(output, mode); wlr_output_set_mode(output, mode);
} }
sample_output->output = output; sample_output->output = output;
@ -105,7 +110,8 @@ void keyboard_key_notify(struct wl_listener *listener, void *data) {
} }
void keyboard_destroy_notify(struct wl_listener *listener, void *data) { void keyboard_destroy_notify(struct wl_listener *listener, void *data) {
struct sample_keyboard *keyboard = wl_container_of(listener, keyboard, destroy); struct sample_keyboard *keyboard =
wl_container_of(listener, keyboard, destroy);
wl_list_remove(&keyboard->destroy.link); wl_list_remove(&keyboard->destroy.link);
wl_list_remove(&keyboard->key.link); wl_list_remove(&keyboard->key.link);
free(keyboard); free(keyboard);
@ -116,7 +122,8 @@ void new_input_notify(struct wl_listener *listener, void *data) {
struct sample_state *sample = wl_container_of(listener, sample, new_input); struct sample_state *sample = wl_container_of(listener, sample, new_input);
switch (device->type) { switch (device->type) {
case WLR_INPUT_DEVICE_KEYBOARD:; case WLR_INPUT_DEVICE_KEYBOARD:;
struct sample_keyboard *keyboard = calloc(1, sizeof(struct sample_keyboard)); struct sample_keyboard *keyboard =
calloc(1, sizeof(struct sample_keyboard));
keyboard->device = device; keyboard->device = device;
keyboard->sample = sample; keyboard->sample = sample;
wl_signal_add(&device->events.destroy, &keyboard->destroy); wl_signal_add(&device->events.destroy, &keyboard->destroy);
@ -152,19 +159,19 @@ int main(void) {
.last_frame = { 0 }, .last_frame = { 0 },
.display = display .display = display
}; };
struct wlr_backend *wlr = wlr_backend_autocreate(display, NULL); struct wlr_backend *backend = wlr_backend_autocreate(display, NULL);
if (!wlr) { if (!backend) {
exit(1); exit(1);
} }
wl_signal_add(&wlr->events.new_output, &state.new_output); wl_signal_add(&backend->events.new_output, &state.new_output);
state.new_output.notify = new_output_notify; state.new_output.notify = new_output_notify;
wl_signal_add(&wlr->events.new_input, &state.new_input); wl_signal_add(&backend->events.new_input, &state.new_input);
state.new_input.notify = new_input_notify; state.new_input.notify = new_input_notify;
clock_gettime(CLOCK_MONOTONIC, &state.last_frame); clock_gettime(CLOCK_MONOTONIC, &state.last_frame);
if (!wlr_backend_start(wlr)) { if (!wlr_backend_start(backend)) {
wlr_log(WLR_ERROR, "Failed to start backend"); wlr_log(WLR_ERROR, "Failed to start backend");
wlr_backend_destroy(wlr); wlr_backend_destroy(backend);
exit(1); exit(1);
} }
wl_display_run(display); wl_display_run(display);