Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 29, 2009, 2:47:54 PM (14 years ago)
Author:
rgrieder
Message:

Performance and robustness improvements for the IOConsole under Windows.
There should only be one way to screw the console now: Change the console properties manually at runtime (right click on the taskbar icon), esp. screen buffer size.
If you can find another bug, please let me know.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/presentation2/src/libraries/core/IOConsole.h

    r6172 r6177  
    4343#elif defined(ORXONOX_PLATFORM_WINDOWS)
    4444#define WIN32_LEAN_AND_MEAN
     45#define NOMINMAX
    4546#include <windows.h>
    4647#endif
     
    6061    private:
    6162        void setTerminalMode();
    62         static void resetTerminalMode();
    6363        void getTerminalSize();
    64         bool willPrintStatusLines();
    6564        int extractLogLevel(std::string* text);
    6665
    67         void printLogText(const std::string& line);
    68         void printInputLine();
    6966        void printStatusLines();
    7067
     
    8582        unsigned int            lastTerminalWidth_;
    8683        unsigned int            lastTerminalHeight_;
     84        const std::string       promptString_;
     85
     86#ifdef ORXONOX_PLATFORM_UNIX
     87        bool willPrintStatusLines();
     88        void printOutputLine(const std::string& line);
     89        void printInputLine();
     90        static void resetTerminalMode();
     91
    8792        bool                    bPrintStatusLine_;
    8893        bool                    bStatusPrinted_;
    8994        std::vector<unsigned>   statusLineWidths_;
    9095        unsigned int            statusLineMaxWidth_;
    91         const std::string       promptString_;
    9296        static const unsigned   minOutputLines_ = 3;
     97        termios*                originalTerminalSettings_;
    9398
    94 #ifdef ORXONOX_PLATFORM_UNIX
    95         termios*         originalTerminalSettings_;
    9699#elif defined(ORXONOX_PLATFORM_WINDOWS)
     100        void resetTerminalMode();
    97101        void moveCursor(int dx, int dy);
    98         void moveCursorYAndHome(int dy);
    99         void clearCurrentLine();
     102        void writeText(const std::string& text, const COORD& pos, WORD attributes = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
     103        void createNewOutputLines(unsigned int lines);
     104        void printOutputLine(const std::string& line, const COORD& pos);
    100105
    101106        DWORD                   originalTerminalSettings_;
    102107        HANDLE                  stdInHandle_;
    103108        HANDLE                  stdOutHandle_;
     109        int                     inputLineRow_;
     110        unsigned int            inputLineHeight_;
     111        const unsigned int      statusLines_;
     112        unsigned int            lastOutputLineHeight_;
     113        uint64_t                lastRefreshTime_;
    104114#endif
    105115
Note: See TracChangeset for help on using the changeset viewer.