void Log::clear(UINT32 channel) { RecursiveLock lock(mMutex); Vector<LogEntry> newEntries; for(auto& entry : mEntries) { if (entry.getChannel() == channel) continue; newEntries.push_back(entry); } mEntries = newEntries; Queue<LogEntry> newUnreadEntries; while (!mUnreadEntries.empty()) { LogEntry entry = mUnreadEntries.front(); mUnreadEntries.pop(); if (entry.getChannel() == channel) continue; newUnreadEntries.push(entry); } mUnreadEntries = newUnreadEntries; mHash++; }
void GUIStatusBar::logModified() { LogEntry entry; if(!gDebug().getLog().getLastEntry(entry)) { GUIContent messageContent(HString(L"")); mMessage->setContent(messageContent); return; } HSpriteTexture iconTexture; Color textColor = COLOR_INFO; UINT32 logChannel = entry.getChannel(); switch (logChannel) { case (UINT32)DebugChannel::Debug: iconTexture = BuiltinEditorResources::instance().getLogMessageIcon(LogMessageIcon::Info, 16, false); break; case (UINT32)DebugChannel::Warning: case (UINT32)DebugChannel::CompilerWarning: iconTexture = BuiltinEditorResources::instance().getLogMessageIcon(LogMessageIcon::Warning, 16, false); textColor = COLOR_WARNING; break; case (UINT32)DebugChannel::Error: case (UINT32)DebugChannel::CompilerError: iconTexture = BuiltinEditorResources::instance().getLogMessageIcon(LogMessageIcon::Error, 16, false); textColor = COLOR_ERROR; break; } WString message = toWString(entry.getMessage()); size_t lfPos = message.find_first_of('\n'); size_t crPos = message.find_first_of('\r'); size_t newlinePos; if (lfPos != WString::npos) { if (crPos != WString::npos) newlinePos = std::min(lfPos, crPos); else newlinePos = lfPos; } else if (crPos != WString::npos) newlinePos = crPos; else newlinePos = -1; if (newlinePos == -1) { GUIContent messageContent(HString(message), iconTexture); mMessage->setContent(messageContent); mMessage->setTint(textColor); } else { WString firstLine = message.substr(0, newlinePos); GUIContent messageContent(HString(firstLine), iconTexture); mMessage->setContent(messageContent); mMessage->setTint(textColor); } }
void ScriptDebug::onLogEntryAdded(const LogEntry& entry) { MonoString* message = MonoUtil::stringToMono(entry.getMessage()); MonoUtil::invokeThunk(onAddedThunk, entry.getChannel(), message); }