[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Failed gui test:NSView_autoresize_and_rounding WAS: gnustep compiled
From: |
Sebastian Reitenbach |
Subject: |
Re: Failed gui test:NSView_autoresize_and_rounding WAS: gnustep compiled with clang and gworkspace problem |
Date: |
Mon, 31 Oct 2011 13:50:07 +0100 |
User-agent: |
SOGoMail 1.3.8 |
On Sunday, October 30, 2011 22:28 CET, Fred Kiefer <fredkiefer@gmx.de> wrote:
> On 30.10.2011 14:07, Sebastian Reitenbach wrote:
> > Hi,
> >
> > since -base tests are fine now for me, I'm back to -gui: The following
> > tests are still failing for me on OpenBSD i386 5.0 -current:
> >
> >
> > Testing lazy_copy.m...
> > Running gui/NSPasteboard/lazy_copy.m...
> > which happens to fail randomly.
> >
> > Testing setDelegate_reload.m...
> > Running gui/NSSavePanel/setDelegate_reload.m...
> > Failed test: browser initially contains all files
> > Failed test: browser is reloaded after -setDelegate:
> > Failed test: browser contains all files after resetting delegate
> > Failed test: browser is reloaded after -setDelegate: (2)
> > Completed file: setDelegate_reload.m
>
> The most likely reason for these tests to fail is that the .svn
> directory is missing. We should rewrite the test in a way that does not
> rely on the fact that the code includes the .svn directories. The will
> be gone in a while anyway when everybody switches to svn 1.7.
> And of course the test "browser contains all files after resetting
> delegate" fails on all systems.
>
> > Testing NSView_autoresize_and_rounding.m...
> > Running gui/NSView/NSView_autoresize_and_rounding.m...
> > Failed test: NSView autoresizing works
> > Passed test: NSView autoresizing corner cases work
> > Failed test: NSView autoresize rounding works
> > (1) expected frame (10 10)+(10 10), got (10 10)+(9 10)
> > (1) expected frame (10 10)+(10 10), got (9 9)+(9 9)
> > Completed file: NSView_autoresize_and_rounding.m
>
> These tests should work. Here you could try to add some NSLog statements
> to the code in NSView to find out what is actually going on. I remember
> that when you looked at that code in gdb you got unlikely results.
A couple of hours later, I tracked down the first thing to happen in [NSView
centerScanRect:]
- (NSRect) centerScanRect: (NSRect)aRect
{
NSAffineTransform *matrix;
/*
* Hmm - we assume that the windows coordinate system is centered on the
* pixels of the screen - this may not be correct of course.
* Plus - this is all pretty meaningless if we are not in a window!
*/
matrix = [self _matrixToWindow];
NSLog(@"centerScanRect: matrix: %@", matrix);
aRect.origin = [matrix transformPoint: aRect.origin];
aRect.size = [matrix transformSize: aRect.size];
if (aRect.size.height < 0.0)
{
aRect.size.height = -aRect.size.height;
}
NSLog(@"centerScanRect: aRect before floor: %@", NSStringFromRect(aRect));
aRect.origin.x = floor(aRect.origin.x);
aRect.origin.y = floor(aRect.origin.y);
aRect.size.width = floor(aRect.size.width);
aRect.size.height = floor(aRect.size.height);
NSLog(@"centerScanRect: aRect after floor: %@", NSStringFromRect(aRect));
matrix = [self _matrixFromWindow];
aRect.origin = [matrix transformPoint: aRect.origin];
aRect.size = [matrix transformSize: aRect.size];
if (aRect.size.height < 0.0)
{
aRect.size.height = -aRect.size.height;
}
return aRect;
}
here the output from the tests.log file for that test, most interesting are the
NSLog lines around the floor:
2011-10-30 22:55:24.847 NSView_autoresize_and_rounding[14247] WWW container:
h=--- v=--- <NSView: 0x829ed504> f={x = 0; y = 0; width = 200; height = 100}
b={x = 0; y = 0; width = 200; height = 100} view1: h=-&- v=--- <NSView:
0x829ed904> f={x = 10; y = 10; width =
110; height = 10} b={x = 0; y = 0; width = 110; height = 10}
2011-10-30 22:55:24.847 NSView_autoresize_and_rounding[14247]
_is_rotated_or_scaled_from_base was NULL
2011-10-30 22:55:24.847 NSView_autoresize_and_rounding[14247]
_setFrameAndClearAutoresizingError: Got this NSRect: {x = 0; y = 0; width =
100; height = 100}
2011-10-30 22:55:24.848 NSView_autoresize_and_rounding[14247] coordinates are
valid
2011-10-30 22:55:24.848 NSView_autoresize_and_rounding[14247] resetCursorRects
doing nothing
2011-10-30 22:55:24.848 NSView_autoresize_and_rounding[14247] going to
resizeSubviewsWithOldSize: width: 200.000000, height: 100.000000
2011-10-30 22:55:24.848 NSView_autoresize_and_rounding[14247]
resizeSubviewsWithOldSize: we have subviews: _rFlags.has_subviews
2011-10-30 22:55:24.848 NSView_autoresize_and_rounding[14247]
resizeSubviewsWithOldSize: we did not return: _autoresizes_subviews was no NO
OR _is_rotated_from_base was not YES
2011-10-30 22:55:24.848 NSView_autoresize_and_rounding[14247] subview o before
resizeWithOldSuperviewSize: h=-&- v=--- <NSView: 0x829ed904> f={x = 10; y =
10; width = 110; height = 10} b={x = 0; y = 0; width = 110; height = 10}
2011-10-30 22:55:24.848 NSView_autoresize_and_rounding[14247]
resizeWithOldSuperviewSize: _autoresizingMask != NSViewNotSizable
2011-10-30 22:55:24.849 NSView_autoresize_and_rounding[14247]
resizeWithOldSuperviewSize: before rounding, newFrameRounded: {x = 10; y = 10;
width = 10; height = 10}
2011-10-30 22:55:24.849 NSView_autoresize_and_rounding[14247] centerScanRect:
matrix: NSAffineTransform ((1.000000, 0.000000) (0.000000, 1.000000) (0.000000,
0.000000))
2011-10-30 22:55:24.849 NSView_autoresize_and_rounding[14247] centerScanRect:
aRect before floor: {x = 10; y = 10; width = 10; height = 10}
2011-10-30 22:55:24.849 NSView_autoresize_and_rounding[14247] centerScanRect:
aRect after floor: {x = 10; y = 10; width = 9; height = 10}
2011-10-30 22:55:24.849 NSView_autoresize_and_rounding[14247]
resizeWithOldSuperviewSize: performed rounding, newFrameRounded: {x = 10; y =
10; width = 9; height = 10}
2011-10-30 22:55:24.849 NSView_autoresize_and_rounding[14247]
_setFrameAndClearAutoresizingError: Got this NSRect: {x = 10; y = 10; width =
9; height = 10}
2011-10-30 22:55:24.850 NSView_autoresize_and_rounding[14247] resetCursorRects
doing nothing
2011-10-30 22:55:24.850 NSView_autoresize_and_rounding[14247] subview o after
resizeWithOldSuperviewSize: h=-&- v=--- <NSView: 0x829ed904> f={x = 10; y =
10; width = 9; height = 10} b={x = 0; y = 0; width = 9; height = 10}
2011-10-30 22:55:24.850 NSView_autoresize_and_rounding[14247] XXX container:
h=--- v=--- <NSView: 0x829ed504> f={x = 0; y = 0; width = 100; height = 100}
b={x = 0; y = 0; width = 100; height = 100} view1: h=-&- v=--- <NSView:
0x829ed904> f={x = 10; y = 10; width =
9; height = 10} b={x = 0; y = 0; width = 9; height = 10}
unfortunately, I don't see how the third floor rounds it down to 9????
and also the second failure seems to happen at the same place:
2011-10-30 22:55:24.912 NSView_autoresize_and_rounding[14247]
resizeSubviewsWithOldSize: we did not return: _autoresizes_subviews was no NO
OR _is_rotated_from_base was not YES
2011-10-30 22:55:24.912 NSView_autoresize_and_rounding[14247] subview o before
resizeWithOldSuperviewSize: h=&&& v=&&& <NSView: 0x829ed904> f={x = 3; y = 3;
width = 3; height = 3} b={x = 0; y = 0; width = 3; height = 3}
2011-10-30 22:55:24.912 NSView_autoresize_and_rounding[14247]
resizeWithOldSuperviewSize: _autoresizingMask != NSViewNotSizable
2011-10-30 22:55:24.913 NSView_autoresize_and_rounding[14247]
resizeWithOldSuperviewSize: !NSEqualRects(NSZeroRect, _autoresizingFrameError):
newFrame before _autoresizingFrameError: {x = 3; y = 3; width = 3; height = 3}
2011-10-30 22:55:24.913 NSView_autoresize_and_rounding[14247]
resizeWithOldSuperviewSize: !NSEqualRects(NSZeroRect, _autoresizingFrameError):
newFrame after _autoresizingFrameError: {x = 3.3; y = 3.3; width = 3.3; height
= 3.3}
2011-10-30 22:55:24.913 NSView_autoresize_and_rounding[14247]
resizeWithOldSuperviewSize: before rounding, newFrameRounded: {x = 10; y = 10;
width = 10; height = 10}
2011-10-30 22:55:24.913 NSView_autoresize_and_rounding[14247] centerScanRect:
matrix: NSAffineTransform ((1.000000, 0.000000) (0.000000, 1.000000) (0.000000,
0.000000))
2011-10-30 22:55:24.913 NSView_autoresize_and_rounding[14247] centerScanRect:
aRect before floor: {x = 10; y = 10; width = 10; height = 10}
2011-10-30 22:55:24.913 NSView_autoresize_and_rounding[14247] centerScanRect:
aRect after floor: {x = 9; y = 9; width = 9; height = 9}
2011-10-30 22:55:24.914 NSView_autoresize_and_rounding[14247]
resizeWithOldSuperviewSize: performed rounding, newFrameRounded: {x = 9; y = 9;
width = 9; height = 9}
2011-10-30 22:55:24.914 NSView_autoresize_and_rounding[14247]
_setFrameAndClearAutoresizingError: Got this NSRect: {x = 9; y = 9; width = 9;
height = 9}
2011-10-30 22:55:24.914 NSView_autoresize_and_rounding[14247] resetCursorRects
doing nothing
2011-10-30 22:55:24.914 NSView_autoresize_and_rounding[14247] subview o after
resizeWithOldSuperviewSize: h=&&& v=&&& <NSView: 0x829ed904> f={x = 9; y = 9;
width = 9; height = 9} b={x = 0; y = 0; width = 9; height = 9}
2011-10-30 22:55:24.914 NSView_autoresize_and_rounding[14247] container: h=---
v=--- <NSView: 0x829ed504> f={x = 0; y = 0; width = 100; height = 100} b={x =
0; y = 0; width = 100; height = 100}
2011-10-30 22:55:24.915 NSView_autoresize_and_rounding[14247] counter: 19: got
view: h=&&& v=&&& <NSView: 0x829ed904> f={x = 9; y = 9; width = 9; height = 9}
b={x = 0; y = 0; width = 9; height = 9}, got frame:
2011-10-30 22:55:24.915 NSView_autoresize_and_rounding[14247]
_setFrameAndClearAutoresizingError: Got this NSRect: {x = 1.5; y = 1.5; width =
1.5; height = 1.5}
2011-10-30 22:55:24.915 NSView_autoresize_and_rounding[14247] resetCursorRects
doing nothing
2011-10-30 22:55:24.915 NSView_autoresize_and_rounding[14247] counter: 20: got
view: h=&&& v=&&& <NSView: 0x829ed904> f={x = 1.5; y = 1.5; width = 1.5;
height = 1.5} b={x = 0; y = 0; width = 1.5; height = 1.5}, got frame:
But here, I don't see why floor rounds down to 9. Then I exchanged the %g with
%f in NSStringFromRect, and I got:
2011-10-30 23:24:52.009 NSView_autoresize_and_rounding[16728] going to
resizeSubviewsWithOldSize: width: 200.000000, height: 100.000000
2011-10-30 23:24:52.009 NSView_autoresize_and_rounding[16728]
resizeSubviewsWithOldSize: we have subviews: _rFlags.has_subviews
2011-10-30 23:24:52.009 NSView_autoresize_and_rounding[16728]
resizeSubviewsWithOldSize: we did not return: _autoresizes_subviews was no NO
OR _is_rotated_from_base was not YES
2011-10-30 23:24:52.010 NSView_autoresize_and_rounding[16728] subview o before
resizeWithOldSuperviewSize: h=-&- v=--- <NSView: 0x7c4abe04> f={x = 10.000000;
y = 10.000000; width = 110.000000; height = 10.000000} b={x = 0.000000; y =
0.000000; width = 110.000000; h
eight = 10.000000}
2011-10-30 23:24:52.010 NSView_autoresize_and_rounding[16728]
resizeWithOldSuperviewSize: _autoresizingMask != NSViewNotSizable
2011-10-30 23:24:52.010 NSView_autoresize_and_rounding[16728]
resizeWithOldSuperviewSize: before rounding, newFrameRounded: {x = 10.000000; y
= 10.000000; width = 9.999997; height = 10.000000}
2011-10-30 23:24:52.010 NSView_autoresize_and_rounding[16728] centerScanRect:
matrix: NSAffineTransform ((1.000000, 0.000000) (0.000000, 1.000000) (0.000000,
0.000000))
2011-10-30 23:24:52.010 NSView_autoresize_and_rounding[16728] centerScanRect:
aRect before floor: {x = 10.000000; y = 10.000000; width = 9.999997; height =
10.000000}
2011-10-30 23:24:52.010 NSView_autoresize_and_rounding[16728] centerScanRect:
aRect after floor: {x = 10.000000; y = 10.000000; width = 9.000000; height =
10.000000}
2011-10-30 23:24:52.011 NSView_autoresize_and_rounding[16728]
resizeWithOldSuperviewSize: performed rounding, newFrameRounded: {x =
10.000000; y = 10.000000; width = 9.000000; height = 10.000000}
2011-10-30 23:24:52.011 NSView_autoresize_and_rounding[16728]
_setFrameAndClearAutoresizingError: Got this NSRect: {x = 10.000000; y =
10.000000; width = 9.000000; height = 10.000000}
2011-10-30 23:24:52.011 NSView_autoresize_and_rounding[16728] resetCursorRects
doing nothing
2011-10-30 23:24:52.011 NSView_autoresize_and_rounding[16728] subview o after
resizeWithOldSuperviewSize: h=-&- v=--- <NSView: 0x7c4abe04> f={x = 10.000000;
y = 10.000000; width = 9.000000; height = 10.000000} b={x = 0.000000; y =
0.000000; width = 9.000000; height
= 10.000000}
2011-10-30 23:24:52.011 NSView_autoresize_and_rounding[16728] XXX container:
h=--- v=--- <NSView: 0x7c4ab104> f={x = 0.000000; y = 0.000000; width =
100.000000; height = 100.000000} b={x = 0.000000; y = 0.000000; width =
100.000000; height = 100.000000} view1: h=-
&- v=--- <NSView: 0x7c4abe04> f={x = 10.000000; y = 10.000000; width =
9.000000; height = 10.000000} b={x = 0.000000; y = 0.000000; width = 9.000000;
height = 10.000000}
2011-10-30 23:24:52.012 NSView_autoresize_and_rounding[16728] counter: 7: got
view: h=-&- v=--- <NSView: 0x7c4abe04> f={x = 10.000000; y = 10.000000; width
= 9.000000; height = 10.000000} b={x = 0.000000; y = 0.000000; width =
9.000000; height = 10.000000}, got fra
me:
way more interesting numbers, and they now explain, why things happen.
with attached patch, all three tests in NSView_aotresize_and_rounding.m pass
for me.
But I've no idea, if this is the right fix ;)
cheers,
Sebastian
>
>
> > Testing NSView_bounds_scale.m...
> > Running gui/NSView/NSView_bounds_scale.m...
> > expected bounds rotation 30 got 30.9153
> > (2) expected bounds (39.9801 104.211)+(66.2393 85.2544), got (40.372
> > 105.364)+(66.8473 84.9812)
> > expected bounds matrix (2.93813 0.614059 -1.69633 1.06358 104.31 -131.062)
> > got (2.96586 0.574951 -1.71234 1.07291 104.31 -131.062)
> > (2) expected bounds (39.9801 104.211)+(66.2393 85.2544), got (40.372
> > 105.364)+(66.8473 84.9812)
> > expected bounds rotation 30 got 30.9153
> > Completed file: NSView_bounds_scale.m
>
> These errors are currently to be expected. I spend quite some time on
> that problem this summer and have now given up to reproduce what Apple
> does here. To me it seems wrong what they are doing and inconsistent too.
>
patch-Source_NSView_m
Description: Binary data
- Re: Failed gui test:NSView_autoresize_and_rounding WAS: gnustep compiled with clang and gworkspace problem, (continued)
Re: Failed gui test:NSView_autoresize_and_rounding WAS: gnustep compiled with clang and gworkspace problem, Sebastian Reitenbach, 2011/10/07
- Re: Failed gui test:NSView_autoresize_and_rounding WAS: gnustep compiled with clang and gworkspace problem, Sebastian Reitenbach, 2011/10/30
- Re: Failed gui test:NSView_autoresize_and_rounding WAS: gnustep compiled with clang and gworkspace problem, Sebastian Reitenbach, 2011/10/30
- Re: Failed gui test:NSView_autoresize_and_rounding WAS: gnustep compiled with clang and gworkspace problem, Fred Kiefer, 2011/10/30
- Re: Failed gui test:NSView_autoresize_and_rounding WAS: gnustep compiled with clang and gworkspace problem, Sebastian Reitenbach, 2011/10/31
- Re: Failed gui test:NSView_autoresize_and_rounding WAS: gnustep compiled with clang and gworkspace problem, Fred Kiefer, 2011/10/31
Re: Failed gui test:NSView_autoresize_and_rounding WAS: gnustep compiled with clang and gworkspace problem,
Sebastian Reitenbach <=
Re: Failed gui test:NSView_autoresize_and_rounding WAS: gnustep compiled with clang and gworkspace problem, Fred Kiefer, 2011/10/31
Re: Failed gui test:NSView_autoresize_and_rounding WAS: gnustep compiled with clang and gworkspace problem, Eric Wasylishen, 2011/10/31