Skip to content

Commit 10573b1

Browse files
committed
xrECore/Props/WindowLog: fixed multithreaded log gathering
Code cleanup Colours changed
1 parent 335dfd1 commit 10573b1

File tree

4 files changed

+27
-14
lines changed

4 files changed

+27
-14
lines changed

src/editors/xrECore/Core/ELog.cpp

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,37 @@ XRECORE_API void ELogCallback(void* context, pcstr message)
1010
{
1111
if (0 == message[0])
1212
return;
13-
bool isDialog = ('#' == message[0]) || ((0 != message[1]) && ('#' == message[1]));
14-
MessageType type = ('!' == message[0]) || ((0 != message[1]) && ('!' == message[1])) ? MessageType::Error : MessageType::Information;
15-
if (('!' == message[0]) || ('#' == message[0]))
13+
14+
bool isDialog = false;
15+
MessageType type = MessageType::Information;
16+
17+
switch (message[0])
18+
{
19+
case '!':
20+
type = MessageType::Error;
1621
message++;
17-
if (('!' == message[0]) || ('#' == message[0]))
22+
break;
23+
24+
case '#':
25+
isDialog = true;
26+
type = MessageType::Confirmation;
1827
message++;
28+
break;
29+
}
1930

2031
auto windowLog = safe_cast<WindowLog^>(Form::FromHandle(IntPtr(context)));
2132

2233
if (windowLog)
2334
{
2435
if (isDialog)
25-
windowLog->AddDialogMessage(type, message);
36+
{
37+
auto d = gcnew WindowLog::AddMessageDelegate(windowLog, &WindowLog::AddDialogMessage);
38+
windowLog->Invoke(d, gcnew array<Object^> { (int)type, gcnew String(message) });
39+
}
2640
else
27-
windowLog->AddMessage(type, message);
41+
{
42+
auto d = gcnew WindowLog::AddMessageDelegate(windowLog, &WindowLog::AddMessage);
43+
windowLog->Invoke(d, gcnew array<Object^> { (int)type, gcnew String(message) });
44+
}
2845
}
2946
}

src/editors/xrECore/Props/WindowIDE.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,5 @@ void WindowIDE::Initialize()
1515

1616
auto cb = LogCallback(ELogCallback, windowLog->Handle.ToPointer());
1717
SetLogCB(cb);
18-
19-
Log("Priviet");
2018
}
2119
} // namespace XRay::ECore::Props

src/editors/xrECore/Props/WindowLog.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ void WindowLog::AddMessage(MessageType type, System::String^ message)
2727
break;
2828

2929
case MessageType::Error:
30-
newMessage->BackColor = Color::Red;
30+
newMessage->BackColor = Color::Crimson;
3131
break;
3232

3333
case MessageType::Confirmation:
34-
newMessage->BackColor = Color::Green;
34+
newMessage->BackColor = Color::LightGreen;
3535
break;
3636

3737
case MessageType::Custom:

src/editors/xrECore/Props/WindowLog.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,13 @@ public ref class WindowLog : public WeifenLuo::WinFormsUI::Docking::DockContent
5555

5656
public:
5757
void AddMessage(MessageType type, System::String^ message);
58-
inline void AddMessage(MessageType type, pcstr message) { AddMessage(type, gcnew System::String(message)); }
59-
inline void AddMessage(pcstr message) { AddMessage(MessageType::Custom, gcnew System::String(message)); }
6058
inline void AddMessage(System::String^ message) { AddMessage(MessageType::Custom, message); }
6159

6260
void AddDialogMessage(MessageType type, System::String^ message);
63-
inline void AddDialogMessage(MessageType type, pcstr message) { AddDialogMessage(type, gcnew System::String(message)); }
64-
inline void AddDialogMessage(pcstr message) { AddDialogMessage(MessageType::Custom, gcnew System::String(message)); }
6561
inline void AddDialogMessage(System::String^ message) { AddDialogMessage(MessageType::Custom, message); }
6662

63+
delegate void AddMessageDelegate(MessageType type, System::String^ text);
64+
6765
private: System::Void buttonClose_Click(System::Object^ sender, System::EventArgs^ e);
6866
private: System::Void buttonFlush_Click(System::Object^ sender, System::EventArgs^ e);
6967
private: System::Void buttonClear_Click(System::Object^ sender, System::EventArgs^ e);

0 commit comments

Comments
 (0)