aboutsummaryrefslogtreecommitdiff
path: root/examples/shared.c
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2017-08-17 21:11:33 -0400
committerGitHub <noreply@github.com>2017-08-17 21:11:33 -0400
commit1873951f0ef769123a451c9ce694bd9ea3d09a29 (patch)
treed838f8a08ea4cdb333db3c5954ba15eda53579f8 /examples/shared.c
parent18f153810871d4d39d057bd6ceceda91c4353300 (diff)
parent3138c5ddf04441fb7572db8c1a80b3789c4cc563 (diff)
Merge pull request #97 from acrisci/feature/output-layout
Add wlr_output_layout implementation
Diffstat (limited to 'examples/shared.c')
-rw-r--r--examples/shared.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/examples/shared.c b/examples/shared.c
index 58aef21a..5ebb7aa6 100644
--- a/examples/shared.c
+++ b/examples/shared.c
@@ -428,6 +428,15 @@ static void output_frame_notify(struct wl_listener *listener, void *data) {
compositor->last_frame = now;
}
+static void output_resolution_notify(struct wl_listener *listener, void *data) {
+ struct output_state *output = wl_container_of(listener, output, resolution);
+ struct compositor_state *compositor = output->compositor;
+
+ if (compositor->output_resolution_cb) {
+ compositor->output_resolution_cb(compositor, output);
+ }
+}
+
static void output_add_notify(struct wl_listener *listener, void *data) {
struct wlr_output *output = data;
struct compositor_state *state = wl_container_of(listener, state, output_add);
@@ -442,8 +451,10 @@ static void output_add_notify(struct wl_listener *listener, void *data) {
ostate->output = output;
ostate->compositor = state;
ostate->frame.notify = output_frame_notify;
+ ostate->resolution.notify = output_resolution_notify;
wl_list_init(&ostate->frame.link);
wl_signal_add(&output->events.frame, &ostate->frame);
+ wl_signal_add(&output->events.resolution, &ostate->resolution);
wl_list_insert(&state->outputs, &ostate->link);
if (state->output_add_cb) {
state->output_add_cb(ostate);
@@ -468,6 +479,7 @@ static void output_remove_notify(struct wl_listener *listener, void *data) {
}
wl_list_remove(&ostate->link);
wl_list_remove(&ostate->frame.link);
+ wl_list_remove(&ostate->resolution.link);
free(ostate);
}