widelands-dev team mailing list archive
-
widelands-dev team
-
Mailing list archive
-
Message #16365
[Merge] lp:~widelands-dev/widelands/vector-float-warnings into lp:widelands
GunChleoc has proposed merging lp:~widelands-dev/widelands/vector-float-warnings into lp:widelands.
Commit message:
Replace equality operator in MapView with near functions for float arithmetic.
Requested reviews:
Widelands Developers (widelands-dev)
Related bugs:
Bug #1818494 in widelands: "Crash on "Reset zoom" bzr9005-201903031251 (Release)"
https://bugs.launchpad.net/widelands/+bug/1818494
For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/vector-float-warnings/+merge/365003
I did not notice the compiler warnings in r9024, and they need to be fixed.
--
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/vector-float-warnings into lp:widelands.
=== modified file 'src/wui/mapview.cc'
--- src/wui/mapview.cc 2019-03-12 08:23:51 +0000
+++ src/wui/mapview.cc 2019-03-24 12:42:06 +0000
@@ -387,7 +387,7 @@
const Transition transition = animate_map_panning_ ? passed_transition : Transition::Jump;
switch (transition) {
case Transition::Jump: {
- if (view_ == target_view) {
+ if (view_.near(target_view)) {
// We're already there
return;
}
@@ -398,7 +398,7 @@
}
case Transition::Smooth: {
- if (!view_plans_.empty() && view_plans_.back().back().view == target_view) {
+ if (!view_plans_.empty() && view_plans_.back().back().view.near(target_view)) {
// We're already there
return;
}
@@ -517,7 +517,7 @@
const TimestampedView current = animation_target_view();
switch (transition) {
case Transition::Jump: {
- if (view_.zoom == new_zoom) {
+ if (view_.zoom_near(new_zoom)) {
// We're already there
return;
}
@@ -530,7 +530,7 @@
}
case Transition::Smooth: {
- if (!view_plans_.empty() && view_plans_.back().back().view.zoom == new_zoom) {
+ if (!view_plans_.empty() && view_plans_.back().back().view.zoom_near(new_zoom)) {
// We're already there
return;
}
=== modified file 'src/wui/mapview.h'
--- src/wui/mapview.h 2019-03-12 08:23:51 +0000
+++ src/wui/mapview.h 2019-03-24 12:42:06 +0000
@@ -75,8 +75,16 @@
View() : View(Vector2f::zero(), 1.0f) {
}
- bool operator==(const View& other) const {
- return (zoom == other.zoom) && (viewpoint == other.viewpoint);
+ bool zoom_near(float other_zoom) const {
+ constexpr float epsilon = 1e-5;
+ return std::abs(zoom - other_zoom) < epsilon;
+ }
+
+ bool near(const View& other) const {
+ constexpr float epsilon = 1e-5;
+ return zoom_near(other.zoom) &&
+ std::abs(viewpoint.x - other.viewpoint.x) < epsilon &&
+ std::abs(viewpoint.y - other.viewpoint.y) < epsilon;
}
// Mappixel of top-left pixel of this MapView.
Follow ups
-
Re: [Merge] lp:~widelands-dev/widelands/vector-float-warnings into lp:widelands
From: hessenfarmer, 2019-03-28
-
Re: [Merge] lp:~widelands-dev/widelands/vector-float-warnings into lp:widelands
From: GunChleoc, 2019-03-25
-
Re: [Merge] lp:~widelands-dev/widelands/vector-float-warnings into lp:widelands
From: Toni Förster, 2019-03-25
-
Re: [Merge] lp:~widelands-dev/widelands/vector-float-warnings into lp:widelands
From: hessenfarmer, 2019-03-25
-
Re: [Merge] lp:~widelands-dev/widelands/vector-float-warnings into lp:widelands
From: GunChleoc, 2019-03-25
-
Re: [Merge] lp:~widelands-dev/widelands/vector-float-warnings into lp:widelands
From: Klaus Halfmann, 2019-03-24
-
Re: [Merge] lp:~widelands-dev/widelands/vector-float-warnings into lp:widelands
From: hessenfarmer, 2019-03-24
-
[Merge] lp:~widelands-dev/widelands/vector-float-warnings into lp:widelands
From: noreply, 2019-03-24
-
[Merge] lp:~widelands-dev/widelands/vector-float-warnings into lp:widelands
From: bunnybot, 2019-03-24
-
Re: [Merge] lp:~widelands-dev/widelands/vector-float-warnings into lp:widelands
From: GunChleoc, 2019-03-24
-
Re: [Merge] lp:~widelands-dev/widelands/vector-float-warnings into lp:widelands
From: Klaus Halfmann, 2019-03-24
-
Re: [Merge] lp:~widelands-dev/widelands/vector-float-warnings into lp:widelands
From: Klaus Halfmann, 2019-03-24