← Back to team overview

gtg-contributors team mailing list archive

Dethreadization

 

Hello,

I've worked on the dethreadization branch and, so far, it looks
relatively good.

I've worked on the filtered tree to ensure that we have atomic state
change with one state_commit = one signal (it's what gtk is expecting).
__add_node and __delete_node have been rewritten.

There are a few places where I cannot do that and I'm printing a warning
or raising an exception. (they are related to nodes with a parent having
multiple paths).


Error that can arise are fairly easy to spot in the code :

- A commit_state is not immediately followed by a callback
- A callback is not immediately preceded by a commit_state  (well, I
want to refactorize to put the callbacks in the commit_state method)
- After a commit_state, we reuse some values from before the commit
(like the tmp_nodes, the tmp_vr or any local variable)


Doing that work, I broke a bunch of tests in test_liblarch. Still 7
tests are still not passing (so it's low hanging fruit for those wanting
to help). Also, the whole suite is crashing but I think it's not related
to my work.

(Oh, btw, Thread_protection has to be disabled in treemodel.py to be
able to run the tests. I don't know why)

I'm not able to have any issue anymore with -s standard. There are still
some threads race with -s bryce, showing that, somewhere, we might
access the gtk.TreeView with a thread that should not.

The error is :
gtg: Fatal IO error 11 (Ressource temporairement non disponible) on X
server :0.0.


Lionel

PS: as soon as all the tests are passing, I plan to merge that in trunk.
Do you think it's a good idea ?




Follow ups