Changeset - r18609:09c74871b3e6
[Not reviewed]
master
0 2 0
rubidium - 12 years ago 2011-12-09 22:07:00
rubidium@openttd.org
(svn r23466) -Fix [FS#4871, FS#4874]: assertion triggered when resizing a window during ReInit by an amount that's not a multiple of the resize interval
2 files changed with 13 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/core/math_func.hpp
Show inline comments
 
@@ -330,6 +330,17 @@ static FORCEINLINE uint CeilDiv(uint a, 
 
}
 

	
 
/**
 
 * Computes ceil(a / b) * b for non-negative a and b.
 
 * @param a Numerator
 
 * @param b Denominator
 
 * @return a rounded up to the nearest multiple of b.
 
 */
 
static FORCEINLINE uint Ceil(uint a, uint b)
 
{
 
	return CeilDiv(a, b) * b;
 
}
 

	
 
/**
 
 * Computes round(a / b) for signed a and unsigned b.
 
 * @param a Numerator
 
 * @param b Denominator
src/window.cpp
Show inline comments
 
@@ -1675,8 +1675,8 @@ void ResizeWindow(Window *w, int delta_x
 
		 * the resolution clamp it in such a manner that it stays within the bounts. */
 
		int new_right  = w->left + w->width  + delta_x;
 
		int new_bottom = w->top  + w->height + delta_y;
 
		if (new_right  >= (int)_cur_resolution.width)  delta_x -= new_right  - _cur_resolution.width;
 
		if (new_bottom >= (int)_cur_resolution.height) delta_y -= new_bottom - _cur_resolution.height;
 
		if (new_right  >= (int)_cur_resolution.width)  delta_x -= Ceil(new_right  - _cur_resolution.width,  max(1U, w->nested_root->resize_x));
 
		if (new_bottom >= (int)_cur_resolution.height) delta_y -= Ceil(new_bottom - _cur_resolution.height, max(1U, w->nested_root->resize_y));
 

	
 
		w->SetDirty();
 

	
0 comments (0 inline, 0 general)