Op Sun, 16 Aug 2009, schreef Nikolay Nikolov:
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.
I can see the issue with abnormal program exits, but I disabled it
because calling it twice had unintended effects. So we need to verify we
don't break anything.
Daniël
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel