Hello!
This is my weekly ChangeLog, from 27 February 2017 to 5 March 2017.
You can see it in a better format by going here:
http://log.smallworks.eu/web/search?from=27/2/2017&to=5/3/2017
ChangeLog
=========
3 March 2017:
-------------
* And now I made +libssh2.so+ compile on linux too :)
I think Iceberg is fixed now for linux, can someone with linux try
+vmLatest60+.
* I worked on VM for linux, this time fixing dependencies for libgit2: it
was not working because it was trying
to link libssh2 existing in the system instead the one we provide (a
problem with rpath)... I figured out I
need to add some CMAKE options:
----
-DCMAKE_SKIP_BUILD_RPATH=FALSE
-DCMAKE_INSTALL_RPATH="."
----
otherwise +make install+ was ignoring the +-Wl,rpath,.+ configuration. With
this it seems to be working,
but now I have a problem with +libssh2+ compilation.
I'll see this next.
* I took some moments to fix a problem on new UFFI version (0.26): Now,
structures use a class variable to keep
the offset value of a field. So now, instead having an accessor to a field
of the form (for example):
----
MyStructure>>myField
^ handle unsignedLongAt: 42
----
... now you have an accessor of the form:
----
MyStructure>>myField
^ handle unsignedLongAt: OFFSET_MYFIELD
----
this is necesary to allow different platforms to use same structures
(because sizes of fields, and in
consequence of offsets of them inside a stricture are different). This
'offsets' are calculated (as
structure compiled specs) at first access to +#compiledSpec+ of structure,
which usually happens when
you use it first time... but now always, as [case:
19788](https://pharo.fogbugz.com/f/cases/19788) shows.
Well, now I fixed that :)
2 March 2017:
-------------
* I added a Discord link on
[http://pharo.org/community](http://pharo.org/community)... I want to slowly
start moving our community there.
I know Slack is very popular among us this days but Dicords offers some
advantages (like no 10k limit on
messages and a powerful search).
1 March 2017:
-------------
* ... and now I made the
[case:19783](https://pharo.fogbugz.com/f/cases/19783), to make SDL2 work on
64bits (it works!) :)
* Yesterday I spent the full day debugging a VM to see why Athens was not
working for 64bits and I finally
figured out the problem was in image and not in VM :P
As a result of the work, I produced this fixes:
* [case:19781](https://pharo.fogbugz.com/f/cases/19781) to fix a problem
answering pointers on callbacks.
* [case:19782](https://pharo.fogbugz.com/f/cases/19782) to actually prepare
Athens.
With this two cases, Athens works in 64bits (almost) :)
Now there is a problem in 64bits callbacks that makes the +VGTigerDemo
runDemo+ to fail after
some cycles. Since this problem does not happens on 32bits, I assume there
is a problem on how callbacks
work on 64bits. I'm not working on that (I will work also in migrating
SDL2).
27 February 2017:
-----------------
* Well, I spend some time trying to blindly figure out why athens may crash
time to time when drawing surfaces,
basically testing the apprachs [Ronie
proposes](http://forum.world.st/Too-frequent-crashes-td4927143i20.html#a4934027).
First approach consists on copying data to not rely on a surface at all.
Problem with this is that it involves
a whole full copy, that causes a lot of GC that pauses a lot the image...
so smoothness is gone.
Second approach seems a lot more doable, but I still don't know if it works:
----
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
----
this will prevent surfaces to be garbage collected before it's time and
seems to be working fine (at least
in my machine).
cheers!
Esteban