[fpc-devel] patch to call DoneKeyboard in the exitproc of the drivers unit

Nikolay Nikolov nickysn at users.sourceforge.net
Sun Aug 16 15:16:59 CEST 2009

On 08/16/2009 03:22 PM, Daniƫl Mantione wrote:
> Op Sun, 16 Aug 2009, schreef Jonas Maebe:
>> On 16 Aug 2009, at 12:15, Nikolay Nikolov wrote:
>>> Does anyone have an idea why the call to DoneKeyboard was previously 
>>> commented? It leaves the keyboard in a bad state if the IDE crashes.
>> It was changed in revision 3443, whose log message says:
>> r3443 | daniel | 2006-05-07 00:57:20 +0200 (Sun, 07 May 2006) | 3 lines
>> Changed paths:
>>  M /trunk/fv/app.pas
>>  M /trunk/fv/drivers.pas
>>  M /trunk/fv/validate.pas
>>  M /trunk/ide/fp.pas
>>  M /trunk/ide/fpide.pas
>> * Video and keyboard initialization spaghetti organized and hopefully 
>> fixed.
>> - Remove useless function from validate.pas
>> Maybe Daniel knows.
> In Turbo Vision, it is the task of Tapplication to initialize drivers 
> and the task of Tprogram to detect how it was initialized. This was 
> totally messed up; i.e. Tprogram.initscreen is supposed to detect the 
> current screen, but people had inserted code into it that did change 
> the screen, so they also invented a donescreen. This caused a lot of 
> bugs inside FV applications.
> With this patch, I brought things back as they should be, all 
> intialization/finalization back to Tapplication and Tprogram just 
> detects how things are initialized.
This is all cool, but IMHO DoneKeyboard should also be called in the 
ExitProc to clean things up in case a runtime error occurs, since then 
the TApplication destructor isn't (usually) called. Is there a reason 
not to do that? Calling DoneKeyboard twice on normal exit should be 
safe, as it checks a flag and does nothing when you call it the second time.

More information about the fpc-devel mailing list