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 <[email protected]>
---
 desktop-shell/shell.c | 5 ++++-
 src/zoom.c            | 2 ++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index a7514f7..a55eb7f 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -4693,7 +4693,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 2e1f9fa..2728fbe 100644
--- a/src/zoom.c
+++ b/src/zoom.c
@@ -22,6 +22,7 @@
 
 #include "config.h"
 
+#include <assert.h>
 #include <stdlib.h>
 #include <stdbool.h>
 
@@ -177,6 +178,7 @@ weston_output_update_zoom(struct weston_output *output)
        wl_fixed_t x = seat->pointer->x;
        wl_fixed_t y = seat->pointer->y;
 
+       assert(output->zoom.active);
        zoom_area_center_from_pointer(output, &x, &y);
 
        if (wl_list_empty(&output->zoom.animation_xy.link)) {
-- 
2.1.4

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to