diff options
-rw-r--r-- | include/sway/surface.h | 1 | ||||
-rw-r--r-- | sway/desktop/output.c | 7 | ||||
-rw-r--r-- | sway/desktop/surface.c | 2 |
3 files changed, 9 insertions, 1 deletions
diff --git a/include/sway/surface.h b/include/sway/surface.h index 50681897..a7a8ec3f 100644 --- a/include/sway/surface.h +++ b/include/sway/surface.h | |||
@@ -15,6 +15,7 @@ struct sway_surface { | |||
15 | struct wl_event_source *frame_done_timer; | 15 | struct wl_event_source *frame_done_timer; |
16 | }; | 16 | }; |
17 | 17 | ||
18 | void surface_update_outputs(struct wlr_surface *surface); | ||
18 | void surface_enter_output(struct wlr_surface *surface, | 19 | void surface_enter_output(struct wlr_surface *surface, |
19 | struct sway_output *output); | 20 | struct sway_output *output); |
20 | void surface_leave_output(struct wlr_surface *surface, | 21 | void surface_leave_output(struct wlr_surface *surface, |
diff --git a/sway/desktop/output.c b/sway/desktop/output.c index 141edb49..302f9fda 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c | |||
@@ -859,6 +859,12 @@ static void update_textures(struct sway_container *con, void *data) { | |||
859 | container_update_marks_textures(con); | 859 | container_update_marks_textures(con); |
860 | } | 860 | } |
861 | 861 | ||
862 | static void update_output_scale_iterator(struct sway_output *output, | ||
863 | struct sway_view *view, struct wlr_surface *surface, | ||
864 | struct wlr_box *box, void *user_data) { | ||
865 | surface_update_outputs(surface); | ||
866 | } | ||
867 | |||
862 | static void handle_commit(struct wl_listener *listener, void *data) { | 868 | static void handle_commit(struct wl_listener *listener, void *data) { |
863 | struct sway_output *output = wl_container_of(listener, output, commit); | 869 | struct sway_output *output = wl_container_of(listener, output, commit); |
864 | struct wlr_output_event_commit *event = data; | 870 | struct wlr_output_event_commit *event = data; |
@@ -873,6 +879,7 @@ static void handle_commit(struct wl_listener *listener, void *data) { | |||
873 | 879 | ||
874 | if (event->committed & WLR_OUTPUT_STATE_SCALE) { | 880 | if (event->committed & WLR_OUTPUT_STATE_SCALE) { |
875 | output_for_each_container(output, update_textures, NULL); | 881 | output_for_each_container(output, update_textures, NULL); |
882 | output_for_each_surface(output, update_output_scale_iterator, NULL); | ||
876 | } | 883 | } |
877 | 884 | ||
878 | if (event->committed & (WLR_OUTPUT_STATE_TRANSFORM | WLR_OUTPUT_STATE_SCALE)) { | 885 | if (event->committed & (WLR_OUTPUT_STATE_TRANSFORM | WLR_OUTPUT_STATE_SCALE)) { |
diff --git a/sway/desktop/surface.c b/sway/desktop/surface.c index 949cfdc2..68772ee0 100644 --- a/sway/desktop/surface.c +++ b/sway/desktop/surface.c | |||
@@ -47,7 +47,7 @@ void handle_compositor_new_surface(struct wl_listener *listener, void *data) { | |||
47 | } | 47 | } |
48 | } | 48 | } |
49 | 49 | ||
50 | static void surface_update_outputs(struct wlr_surface *surface) { | 50 | void surface_update_outputs(struct wlr_surface *surface) { |
51 | float scale = 1; | 51 | float scale = 1; |
52 | struct wlr_surface_output *surface_output; | 52 | struct wlr_surface_output *surface_output; |
53 | wl_list_for_each(surface_output, &surface->current_outputs, link) { | 53 | wl_list_for_each(surface_output, &surface->current_outputs, link) { |