summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2014-12-07 21:38:28 +0100
committerMattes D <github@xoft.cz>2014-12-07 21:38:28 +0100
commit2bd03ee1f90f90cf99b0c41600511670235bafb2 (patch)
treebdd693ca3b279bd02b9bf01f1909a3cec2ccaaf0
parentFixed integer overflow problems. (diff)
downloadcuberite-2bd03ee1f90f90cf99b0c41600511670235bafb2.tar
cuberite-2bd03ee1f90f90cf99b0c41600511670235bafb2.tar.gz
cuberite-2bd03ee1f90f90cf99b0c41600511670235bafb2.tar.bz2
cuberite-2bd03ee1f90f90cf99b0c41600511670235bafb2.tar.lz
cuberite-2bd03ee1f90f90cf99b0c41600511670235bafb2.tar.xz
cuberite-2bd03ee1f90f90cf99b0c41600511670235bafb2.tar.zst
cuberite-2bd03ee1f90f90cf99b0c41600511670235bafb2.zip
-rw-r--r--src/Protocol/MojangAPI.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/Protocol/MojangAPI.cpp b/src/Protocol/MojangAPI.cpp
index 67f513e44..570754204 100644
--- a/src/Protocol/MojangAPI.cpp
+++ b/src/Protocol/MojangAPI.cpp
@@ -161,26 +161,38 @@ class cMojangAPI::cUpdateThread :
{
typedef cIsThread super;
public:
- cUpdateThread() :
- super("cMojangAPI::cUpdateThread")
+ cUpdateThread(cMojangAPI & a_MojangAPI) :
+ super("cMojangAPI::cUpdateThread"),
+ m_MojangAPI(a_MojangAPI)
{
}
~cUpdateThread()
{
+ // Notify the thread that it should stop:
+ m_ShouldTerminate = true;
m_evtNotify.Set();
+
+ // Wait for the thread to actually finish work:
Stop();
}
protected:
+
+ /** The cMojangAPI instance to update. */
+ cMojangAPI & m_MojangAPI;
+
+ /** The event used for notifying that the thread should terminate, as well as timing. */
cEvent m_evtNotify;
+
+ // cIsThread override:
virtual void Execute(void) override
{
do
{
- cRoot::Get()->GetMojangAPI().Update();
- } while (!m_evtNotify.Wait(60 * 60 * 1000)); // Repeat every 60 minutes
+ m_MojangAPI.Update();
+ } while (!m_ShouldTerminate && !m_evtNotify.Wait(60 * 60 * 1000)); // Repeat every 60 minutes until termination request
}
} ;
@@ -197,7 +209,7 @@ cMojangAPI::cMojangAPI(void) :
m_UUIDToProfileServer(DEFAULT_UUID_TO_PROFILE_SERVER),
m_UUIDToProfileAddress(DEFAULT_UUID_TO_PROFILE_ADDRESS),
m_RankMgr(nullptr),
- m_UpdateThread(new cUpdateThread())
+ m_UpdateThread(new cUpdateThread(*this))
{
}