On Wed, 5 Nov 2008, Rob Kendrick wrote:
NetSurf working with WebJames on the same machine working at all is already a miracle. We spent many hours trying to discover the cause of the deadlock, but to no avail. I seem to recall we pointed the finger of blame at the RISC OS networking stack, as well as the co-operative multi-tasking. There's no reason it /should/ be blocking, but does it. Perhaps now the sources the the IP stack are available, somebody might spend some time making it less dreadful.
It's a timing-based issue. So that NetSurf can do work when busy, it will only poll the Wimp every N centiseconds (wnere N is some number I can't recall ottomh -- see gui_multitask in riscos/gui.c for the "do we poll the Wimp this time" logic). Removing this logic results in the thing working fine. There is utterly no good explanation for this being the case. Therefore, I'm utterly unwilling to remove this logic. Not least as it will make NetSurf significantly less performant in every other situation.
John.