1 #include "logbuffer.h"
2 
Instance()3 Logbuffer* Logbuffer::Instance ()
4 {
5 	static Logbuffer t;
6 	return &t; // _instance isn't needed in this case
7 }
8 
Logbuffer()9 Logbuffer::Logbuffer()
10 {
11 	maxMessages = 5;
12 	msgLifetime = 3000;
13 }
14 
add(const stringstream & streamptr)15 void Logbuffer::add(const stringstream& streamptr)
16 {
17 	msg *Msg = new msg;
18 	Msg->str = streamptr.str();
19 	Msg->appeartime = Timer::Instance()->sdl_lasttime;
20 	Msg->len = Textprinter::Instance()->getWidth(Msg->str);
21 	messages.push_back(Msg);
22 
23 	// to prevent overfilling:
24 	deleteExpiredMsg();
25 	getLongest();
26 }
27 
deleteExpiredMsg()28 void Logbuffer::deleteExpiredMsg()
29 {
30 	if ( !messages.empty() )
31 	{
32 		if (
33 			messages.size() > maxMessages
34 			|| ( msgLifetime > 0.0f && (Timer::Instance()->sdl_lasttime - messages[0]->appeartime) > msgLifetime )
35 // 			|| ( msgLifetime > 0.0f && Timer::Instance()->timediff( Timer::Instance()->lasttime, messages[0]->appeartime ) > msgLifetime )
36 		)
37 		{
38 			delete messages[0];
39 			messages.erase(messages.begin()+0);
40 		}
41 	}
42 }
43 
getLongest()44 void Logbuffer::getLongest()
45 {
46 	longestLength = 0;
47 	for ( unsigned int i=0; i < messages.size(); i++ )
48 	{
49 		if ( messages[i]->len > longestLength )
50 			longestLength = messages[i]->len;
51 	}
52 }
53 
54