Revision: 2444
http://rigsofrods.svn.sourceforge.net/rigsofrods/?rev=2444&view=rev
Author: rorthomas
Date: 2012-02-04 13:59:21 +0000 (Sat, 04 Feb 2012)
Log Message:
-----------
new sleep function
Modified Paths:
--------------
trunk/source/main/framework/AppStateManager.cpp
trunk/source/main/network/IRCWrapper.cpp
trunk/source/main/network/network.cpp
trunk/source/main/physics/BeamFactory.cpp
trunk/source/main/utils/utils.cpp
trunk/source/main/utils/utils.h
Modified: trunk/source/main/framework/AppStateManager.cpp
===================================================================
--- trunk/source/main/framework/AppStateManager.cpp 2012-02-04 13:58:18 UTC
(rev 2443)
+++ trunk/source/main/framework/AppStateManager.cpp 2012-02-04 13:59:21 UTC
(rev 2444)
@@ -8,6 +8,7 @@
#include <OgreLogManager.h>
#include "Settings.h"
+#include "utils.h"
using namespace Ogre;
@@ -120,12 +121,8 @@
// no more actual rendering?
if(m_bNoRendering)
{
-#ifdef WIN32
- Sleep(100);
-#else
- sleep(100);
+ sleepMilliSeconds(100);
continue;
-#endif // WIN32
}
update(timeSinceLastFrame);
@@ -133,11 +130,7 @@
if (maxFPS && timeSinceLastFrame < minTimePerFrame)
{
// Sleep twice as long as we were too fast.
-#ifdef WIN32
- Sleep((minTimePerFrame - timeSinceLastFrame) << 1);
-#else
- sleep((minTimePerFrame - timeSinceLastFrame) << 1);
-#endif // WIN32
+ sleepMilliSeconds((minTimePerFrame -
timeSinceLastFrame) << 1);
}
Modified: trunk/source/main/network/IRCWrapper.cpp
===================================================================
--- trunk/source/main/network/IRCWrapper.cpp 2012-02-04 13:58:18 UTC (rev
2443)
+++ trunk/source/main/network/IRCWrapper.cpp 2012-02-04 13:59:21 UTC (rev
2444)
@@ -37,6 +37,7 @@
#include "Settings.h"
#include "errorutils.h"
#include "ImprovedConfigFile.h"
+#include "utils.h"
#include "RoRVersion.h"
using namespace std; // primary for string
@@ -589,21 +590,16 @@
if(eventNum == 433)
{
// 433 = uername already used, try to take another one
-#ifdef WIN32
- Sleep(500);
-#else
- sleep(500);
-#endif // WIN32 irc_ctx_t * ctx = (irc_ctx_t *) irc_get_ctx
(session);
+ sleepMilliSeconds(500);
+
+
+ //irc_ctx_t * ctx = (irc_ctx_t *) irc_get_ctx (session);
//ctx->retryCounter++;
ctx->nick += "_";
// now change the nick
irc_cmd_nick(session, ctx->nick.c_str());
-#ifdef WIN32
- Sleep(500);
-#else
- sleep(500);
-#endif // WIN32
+ sleepMilliSeconds(500);
// and rejoin the channels
irc_cmd_join (session, ctx->channel.c_str(), 0);
@@ -728,11 +724,7 @@
{
// sleep longer the more often we try to connect - security
measure
// gives the old connection the chance to time-out
-#ifdef WIN32
- Sleep(2000*ctx->retryCounter);
-#else
- sleep(2000*ctx->retryCounter);
-#endif // WIN32
+ sleepMilliSeconds(2000*ctx->retryCounter);
}
irc_set_ctx (ctx->irc_session, ctx);
Modified: trunk/source/main/network/network.cpp
===================================================================
--- trunk/source/main/network/network.cpp 2012-02-04 13:58:18 UTC (rev
2443)
+++ trunk/source/main/network/network.cpp 2012-02-04 13:59:21 UTC (rev
2444)
@@ -508,11 +508,7 @@
// otherwise you can get runtime conditions
while(!BeamFactory::getSingletonPtr())
{
-#ifndef WIN32
- sleep(1);
-#else
- Sleep(1000);
-#endif
+ sleepMilliSeconds(1000);
};
Modified: trunk/source/main/physics/BeamFactory.cpp
===================================================================
--- trunk/source/main/physics/BeamFactory.cpp 2012-02-04 13:58:18 UTC (rev
2443)
+++ trunk/source/main/physics/BeamFactory.cpp 2012-02-04 13:59:21 UTC (rev
2444)
@@ -80,9 +80,14 @@
tdr = new TwoDReplay();
- // TEST for Beamworker, add two instances
- //new BeamWorker();
- //new BeamWorker();
+ // TEST for Beamworker, add example instances
+ /*
+ for(int i=0; i < 60; i++)
+ {
+ new BeamWorker();
+ //new BeamWorker();
+ }
+ */
}
BeamFactory::~BeamFactory()
@@ -828,4 +833,4 @@
ffhydro=affhydro/steps;
if (free_hydro) ffhydro=ffhydro/free_hydro;
}
-#endif // 0
\ No newline at end of file
+#endif // 0
Modified: trunk/source/main/utils/utils.cpp
===================================================================
--- trunk/source/main/utils/utils.cpp 2012-02-04 13:58:18 UTC (rev 2443)
+++ trunk/source/main/utils/utils.cpp 2012-02-04 13:59:21 UTC (rev 2444)
@@ -328,3 +328,30 @@
if(left)
str.erase(0, str.find_first_not_of(delims)); // trim left
}
+
+pthread_key_t ThreadID::key;
+pthread_once_t ThreadID::key_once = PTHREAD_ONCE_INIT;
+unsigned int ThreadID::tuid = 1;
+
+unsigned int ThreadID::getID()
+{
+ ThreadID *ptr = NULL;
+ pthread_once(&key_once, ThreadID::make_key);
+ ptr = (ThreadID*)pthread_getspecific(key);
+
+ if( !ptr ) {
+ ptr = new ThreadID();
+ pthread_setspecific(key, (void*)ptr);
+ }
+
+ return ptr->thread_id;
+}
+
+ThreadID::ThreadID() : thread_id( tuid )
+{
+ tuid++;
+}
+void ThreadID::make_key()
+{
+ pthread_key_create(&key, NULL);
+}
Modified: trunk/source/main/utils/utils.h
===================================================================
--- trunk/source/main/utils/utils.h 2012-02-04 13:58:18 UTC (rev 2443)
+++ trunk/source/main/utils/utils.h 2012-02-04 13:59:21 UTC (rev 2444)
@@ -101,4 +101,31 @@
}
}
+inline void sleepMilliSeconds(unsigned int ms)
+{
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+ // accepts milliseconds
+ Sleep(ms);
+#else
+ // accepts microseconds
+ usleep(ms * 1000);
+#endif
+}
+
+class ThreadID
+{
+
+public:
+ static unsigned int getID();
+
+private:
+ ThreadID();
+ static void make_key();
+
+ unsigned int thread_id;
+ static pthread_key_t key;
+ static pthread_once_t key_once;
+ static unsigned int tuid;
+};
+
#endif //UTILS_H_
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
Rigsofrods-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rigsofrods-devel