[PATCH v2 weston 2/4] zoom: Call weston_output_activate_zoom() appropriately

Derek Foreman derekf at osg.samsung.com
Thu Jul 23 12:55:13 PDT 2015


No longer call weston_output_update_zoom() when trying to zoom out
on an unzoomed output.

Add an assert() to make sure update_zoom is never called without an
active zoom.

Signed-off-by: Derek Foreman <derekf at osg.samsung.com>
---
 desktop-shell/shell.c | 5 ++++-
 src/zoom.c            | 3 +++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 0137ca3..8f90710 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -4804,7 +4804,10 @@ do_zoom(struct weston_seat *seat, uint32_t time, uint32_t key, uint32_t axis,
 				output->zoom.level = 0.0;
 			else if (output->zoom.level > output->zoom.max_level)
 				output->zoom.level = output->zoom.max_level;
-			else if (!output->zoom.active) {
+
+			if (!output->zoom.active) {
+				if (output->zoom.level <= 0.0)
+					continue;
 				weston_output_activate_zoom(output);
 			}
 
diff --git a/src/zoom.c b/src/zoom.c
index 878ecc2..39515d4 100644
--- a/src/zoom.c
+++ b/src/zoom.c
@@ -25,6 +25,7 @@
 
 #include "config.h"
 
+#include <assert.h>
 #include <stdlib.h>
 #include <stdbool.h>
 
@@ -135,6 +136,8 @@ weston_output_update_zoom(struct weston_output *output)
 {
 	struct weston_seat *seat = weston_zoom_pick_seat(output->compositor);
 
+	assert(output->zoom.active);
+
 	output->zoom.current.x = seat->pointer->x;
 	output->zoom.current.y = seat->pointer->y;
 
-- 
2.1.4



More information about the wayland-devel mailing list