On 1 March 2017 at 05:42, Alexander Samoylovich <samoylov...@gmail.com>
wrote:

> Thanks everybody for the explanation.
>
> I tried to apply Igor's suggestion. I allocate an offscreen surface 1 row
> larger than needed
> and when converting discard one row.
>
> The code looks more stable now. The test was up for about 30 minutes
> before crashing instead of 1 minute before the fix.
> Is it the right code change or just a coincidence?
>
>
> AthensCairoSurface>>asForm
>
>
> "create a form and copy an image data there"
>
> self checkSession.
>
> self flush.
>
> ^ Form extent: (self width@self height) - (0@1) depth: 32 bits: id
>
>
no, it isn't . This is how it supposed to be there.
But the problem is when you using surfaces for bitmaps in Cairo itself,
you're screwed since AthensCairoSurface purposedly makes it 1 row taller,
while for texture you want it to contain exact height, else you'll
obviously have artifacts. :(

So, the point is: if you creating a surface that will be used by bitblt
(asForm), then you should allocate 1 extra row,
else you shouldn't.. And there's no workaround to match such behavior in
single class,
since it doesn't knows what it will be used for :(


>
> On Mon, Feb 27, 2017 at 2:39 PM, Stephane Ducasse <stepharo.s...@gmail.com
> > wrote:
>
>> Tx igor I added
>>
>> https://pharo.fogbugz.com/f/cases/19764/Improve-comment-of-
>> AthensCairoSurfaceForm
>>
>> On Mon, Feb 27, 2017 at 7:35 PM, Igor Stasenko <siguc...@gmail.com>
>> wrote:
>>
>>> and i was dealing with it by adding 1 extra line to cairo surface,
>>> but reporting 1 less to Form. Like so, bitblt still reads past the
>>> allowed size, but it is safe, because there are unused bit(s).
>>>
>>> On 27 February 2017 at 20:31, Igor Stasenko <siguc...@gmail.com> wrote:
>>>
>>>>
>>>>
>>>> On 27 February 2017 at 12:29, Esteban Lorenzano <esteba...@gmail.com>
>>>> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> the problem wit Ronie’s fix is that (as he says) you are copying
>>>>> another time the surface, before passing it to the VM (who makes
>>>>> yet-another-copy) so this is not optimal… and you can see it when running
>>>>> the Tiger demo: there are a lot of pauses.
>>>>> So I would prefer the other approach he suggests:
>>>>>
>>>>> Form subclass: #AthensCairoSurfaceForm
>>>>>         instanceVariableNames: 'surface'
>>>>>         classVariableNames: ''
>>>>>         package: 'Athens-Cairo'
>>>>>
>>>>> AthensCairoSurfaceForm>>surface
>>>>>         ^ surface
>>>>>
>>>>> AthensCairoSurfaceForm>>surface: anObject
>>>>>         surface := anObject
>>>>>
>>>>> AthensCairoSurface>>asForm
>>>>>         "create a form and copy an image data there"
>>>>>         self checkSession.
>>>>>         self flush.
>>>>>         ^ (AthensCairoSurfaceForm extent: (self width@self height)
>>>>> depth: 32 bits: id)
>>>>>                 surface: self;
>>>>>                 yourself
>>>>>
>>>>> that seems to work. Can you try and see?
>>>>>
>>>>>
>>>> Btw, remember the culprit there , that you must have extra word in
>>>> trailing buffer space,
>>>> this is because bit-blt using read-ahead . Which is OK for objects
>>>> located in object memory,
>>>> since there are always something past the last object (unallocated
>>>> space),
>>>> but not so ok for buffers allocated by malloc (such as cairo surface
>>>> bitmap), and so,
>>>> if you read even a single byte past it, you get protection fault.
>>>>
>>>>
>>>>> Esteban
>>>>>
>>>>> > On 24 Feb 2017, at 15:47, stepharong <stephar...@free.fr> wrote:
>>>>> >
>>>>> > Hi alex
>>>>> >
>>>>> > can you try the fix of ronie and let us know if it makes roassal
>>>>> more stable?
>>>>> >
>>>>> > Stef
>>>>> >
>>>>> >> Dear Alexander,
>>>>> >>
>>>>> >> Sine the new FFI of Pharo, using Athens has become unreliable. This
>>>>> is a pity, but fixing this is not trivial at all (we have been trying for
>>>>> years).
>>>>> >>
>>>>> >> What exactly are you doing with Athens?
>>>>> >>
>>>>> >> Alexandre
>>>>> >>
>>>>> >>
>>>>> >>> On Feb 22, 2017, at 12:55 AM, Alexander Samoylovich <
>>>>> samoylov...@gmail.com> wrote:
>>>>> >>>
>>>>> >>> Hello
>>>>> >>>
>>>>> >>> I am writing graphic demo programs using Athens on Mac Sierra.
>>>>> >>> Time by time Pharo VM crashes. Programs not using Athens work
>>>>> reliably.
>>>>> >>> I believe the behavior is reproducible.
>>>>> >>> How should I report a bug?
>>>>> >>>
>>>>> >>> Alex
>>>>> >>
>>>>> >
>>>>> >
>>>>> > --
>>>>> > Using Opera's mail client: http://www.opera.com/mail/
>>>>> >
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Best regards,
>>>> Igor Stasenko.
>>>>
>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Igor Stasenko.
>>>
>>
>>
>


-- 
Best regards,
Igor Stasenko.

Reply via email to