Hi, Is it the line with InterlockedExchange() call? The reason I ask, I'm using FPC 2.4.3 under 64-bit linux and using fpGUI. All other platforms has a clear 'IsMultiThreaded := True' in the RTL code, but not for Unix. It seems CheckSynchronized() is never called in fpGUI/X11 because IsMultiThread is never True, even though I have 'cthreads' unit defined as the first unit in my fpGUI program.
-------------[ rtl/unix/cthreads.pp]------------------ .... { Initialize multithreading if not done } if not IsMultiThread then begin if (InterLockedExchange(longint(IsMultiThread),ord(true)) = 0) then begin { We're still running in single thread mode, setup the TLS } pthread_key_create(@TLSKey,nil); InitThreadVars(@CRelocateThreadvar); end end; .... ------------------------------- In fpGUI, CheckSynchronized is executed as follows in the main event loop. .... if IsMultiThreaded then CheckSynchronized(); ... -- Regards, - Graeme - _______________________________________________ fpGUI - a cross-platform Free Pascal GUI toolkit http://opensoft.homeip.net:8080/fpgui/ _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal