X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fmain.cpp;h=b66728a5a3de951bdf392cb590ab20bbd4705326;hb=31af7f484e9712b141c72360e4c295585b1e9276;hp=7668fb4d6d3bb82dc280b79fa947c1f5b5de690b;hpb=12b372f89ce109a4db9d510884fbe7d05af79870;p=xonotic%2Fnetradiant.git diff --git a/radiant/main.cpp b/radiant/main.cpp index 7668fb4d..b66728a5 100644 --- a/radiant/main.cpp +++ b/radiant/main.cpp @@ -232,6 +232,41 @@ public: } }; +class LineLimitedTextOutputStream : public TextOutputStream +{ + TextOutputStream& outputStream; + std::size_t count; +public: + LineLimitedTextOutputStream(TextOutputStream& outputStream, std::size_t count) + : outputStream(outputStream), count(count) + { + } + std::size_t write(const char* buffer, std::size_t length) + { + if(count != 0) + { + const char* p = buffer; + const char* end = buffer+length; + for(;;) + { + p = std::find(p, end, '\n'); + if(p == end) + { + break; + } + ++p; + if(--count == 0) + { + length = p - buffer; + break; + } + } + outputStream.write(buffer, length); + } + return length; + } +}; + class PopupDebugMessageHandler : public DebugMessageHandler { StringOutputStream m_buffer; @@ -248,7 +283,8 @@ public: bool handleMessage() { getOutputStream() << "----------------\n"; - write_stack_trace(getOutputStream()); + LineLimitedTextOutputStream outputStream(getOutputStream(), 24); + write_stack_trace(outputStream); getOutputStream() << "----------------\n"; if(!m_lock.locked()) { @@ -550,9 +586,9 @@ int main (int argc, char* argv[]) remove_global_pid(); - create_local_pid(); + g_Preferences.Init(); // must occur before create_local_pid() to allow preferences to be reset - g_Preferences.Init(); + create_local_pid(); // in a very particular post-.pid startup // we may have the console turned on and want to keep it that way @@ -619,3 +655,4 @@ int main (int argc, char* argv[]) return EXIT_SUCCESS; } +