# HG changeset patch # User koda # Date 1359224917 -3600 # Node ID 93b647d6a00f932c832f8ca47703e9efaca44f8c # Parent b89aacebb9db89c992a3a00450db20261f4f1fc9 uConsole on a diet diff -r b89aacebb9db -r 93b647d6a00f hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Fri Jan 25 22:33:26 2013 +0400 +++ b/hedgewars/hwengine.pas Sat Jan 26 19:28:37 2013 +0100 @@ -439,7 +439,6 @@ begin uUtils.initModule(complete); // opens the debug file, must be the first uVariables.initModule; // inits all global variables - uConsole.initModule; // opens stdout uCommands.initModule; // helps below uCommandHandlers.initModule; // registers all messages from frontend @@ -510,7 +509,6 @@ uCommandHandlers.freeModule; uCommands.freeModule; - uConsole.freeModule; // closes stdout uVariables.freeModule; uUtils.freeModule; // closes debug file end; diff -r b89aacebb9db -r 93b647d6a00f hedgewars/uConsole.pas --- a/hedgewars/uConsole.pas Fri Jan 25 22:33:26 2013 +0400 +++ b/hedgewars/uConsole.pas Sat Jan 26 19:28:37 2013 +0100 @@ -21,61 +21,26 @@ unit uConsole; interface -procedure initModule; -procedure freeModule; -procedure WriteToConsole(s: shortstring); -procedure WriteLnToConsole(s: shortstring); -function GetLastConsoleLine: shortstring; -function ShortStringAsPChar(s: shortstring): PChar; - -implementation -uses Types, uVariables, uUtils {$IFDEF ANDROID}, log in 'log.pas'{$ENDIF}; - -const cLinesCount = 8; -var cLineWidth: LongInt; - -type - TTextLine = record - s: shortstring - end; - -var ConsoleLines: array[byte] of TTextLine; - CurrLine: LongInt; - -procedure SetLine(var tl: TTextLine; str: shortstring); -begin -with tl do - s:= str; -end; procedure WriteToConsole(s: shortstring); -{$IFNDEF NOCONSOLE} -var Len: LongInt; - done: boolean; -{$ENDIF} +procedure WriteLnToConsole(s: shortstring); +function ShortStringAsPChar(s: shortstring): PChar; + +var lastConsoleline : shortstring; + +implementation +uses Types, uUtils {$IFDEF ANDROID}, log in 'log.pas'{$ENDIF}; + + +procedure WriteToConsole(s: shortstring); begin {$IFNDEF NOCONSOLE} -AddFileLog('[Con] ' + s); + AddFileLog('[Con] ' + s); {$IFDEF ANDROID} + //TODO integrate this function in the uMobile record Log.__android_log_write(Log.Android_LOG_DEBUG, 'HW_Engine', ShortStringAsPChar('[Con]' + s)); {$ELSE} -Write(stderr, s); -done:= false; - -while not done do - begin - Len:= cLineWidth - Length(ConsoleLines[CurrLine].s); - SetLine(ConsoleLines[CurrLine], ConsoleLines[CurrLine].s + copy(s, 1, Len)); - Delete(s, 1, Len); - if byte(ConsoleLines[CurrLine].s[0]) = cLineWidth then - begin - inc(CurrLine); - if CurrLine = cLinesCount then - CurrLine:= 0; - PByte(@ConsoleLines[CurrLine].s)^:= 0 - end; - done:= (Length(s) = 0); - end; + Write(stderr, s); {$ENDIF} {$ENDIF} end; @@ -83,13 +48,10 @@ procedure WriteLnToConsole(s: shortstring); begin {$IFNDEF NOCONSOLE} -WriteToConsole(s); + WriteToConsole(s); + lastConsoleline:= s; {$IFNDEF ANDROID} -WriteLn(stderr, ''); -inc(CurrLine); -if CurrLine = cLinesCount then - CurrLine:= 0; -PByte(@ConsoleLines[CurrLine].s)^:= 0 + WriteLn(stderr, ''); {$ENDIF} {$ENDIF} end; @@ -102,37 +64,5 @@ ShortStringAsPChar:= @s[1]; end; -function GetLastConsoleLine: shortstring; -var valueStr: shortstring; - i: LongWord; -begin -i:= (CurrLine + cLinesCount - 2) mod cLinesCount; -valueStr:= ConsoleLines[i].s; - -valueStr:= valueStr + #10; - -i:= (CurrLine + cLinesCount - 1) mod cLinesCount; -valueStr:= valueStr + ConsoleLines[i].s; - -GetLastConsoleLine:= valueStr; -end; - -procedure initModule; -var i: LongInt; -begin - CurrLine:= 0; - - // initConsole - cLineWidth:= cScreenWidth div 10; - if cLineWidth > 255 then - cLineWidth:= 255; - for i:= 0 to Pred(cLinesCount) do - PByte(@ConsoleLines[i])^:= 0; -end; - -procedure freeModule; -begin - -end; end. diff -r b89aacebb9db -r 93b647d6a00f hedgewars/uDebug.pas --- a/hedgewars/uDebug.pas Fri Jan 25 22:33:26 2013 +0400 +++ b/hedgewars/uDebug.pas Sat Jan 26 19:28:37 2013 +0100 @@ -34,7 +34,7 @@ WriteLnToConsole(Msg); if isFatalError then begin - ParseCommand('fatal ' + GetLastConsoleLine, true); + ParseCommand('fatal ' + lastConsoleline, true); SDL_Quit; halt(1) end