discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNUstep app fails on Ubuntu 16 - found workaround


From: Fred Kiefer
Subject: Re: GNUstep app fails on Ubuntu 16 - found workaround
Date: Sat, 9 May 2020 21:31:11 +0200


> Am 09.05.2020 um 20:28 schrieb Andreas Höschler <ahoesch@smartsoft.de>:
> 
> 
>> Thank you Andreas for pinning this down. Sadly your solution cannot be used 
>> directly. That way all text views or text cell would result in a height of 
>> zero. The returned size here has to include at least the height of a new 
>> line. This gets handled in the class GSLayoutManager (around line 2600) by 
>> adding the extra used rectangle to the returned rectangle.
>> 
>> If you still got time to look further it would help to know, how big the 
>> extra_used_rect is in your case and where these values come from. Maybe we 
>> fail to initialise the value correctly? That value should get set by the 
>> class GSHorizontalTypesetter (line 555). If the wrong value comes from there 
>> then the current font is to blame. Could you please inspect that?
>> 
>> Again thank you very much!
> 
> 
> I inserted a bunch of log statements. See below for the modified code:
> 
> 
> And here is the output that is logged when opening the form with the image 
> button. Search for "Got height 10000004.000000. We correct this ..." and 
> examine the lines above. Does this give us a clue? I unfortunately get lost 
> in the usedRectForTextContainer: method. :-)


Thank you Andreas for this huge amount of data. It seems to show that my guess 
was wrong. The problem is not happening in the GSHorizontalTypesetter and all 
the extra rects that are shown look correct. But when ever a wrong height shows 
up it looks like these lines:

> 2020-05-09 20:19:40.720 SOObjectBrowser[4163:4163] cache_lookup hit 1
> 2020-05-09 20:19:40.720 SOObjectBrowser[4163:4163] In attributed string and 
> got result from  c->usedRect {x = 0; y = 0; width = 1; height = 1e+07}

First a cache hit in the string drawing code and then the wrong height, but 
that height never seems to get produced by the NSLayoutManager. This must point 
to an error in the cache itself. I found that we do not clean the „used“ flag 
for the cache when setting it up. Could it be that you are just picking up a 
random cache entry? I am not sure about that but hacked together a fix hat 
initialises the cache entries as unused explicitly. Could you please pull the 
current code from the GNUstep repository and try again with that? This will 
also include my other attempts in fixing this issue. They should at least not 
do any harm.

Cheers,
Fred






reply via email to

[Prev in Thread] Current Thread [Next in Thread]