Implemented vfsLocalDir & vfsDirBase.

Improved ThreadBase.
Minor fixes.
This commit is contained in:
DH 2014-02-02 21:42:32 +02:00
parent 16c284214f
commit beb19633e9
16 changed files with 187 additions and 53 deletions

View file

@ -34,12 +34,12 @@ public:
struct ID
{
wxString m_name;
std::string m_name;
u8 m_attr;
IDData* m_data;
template<typename T>
ID(const wxString& name, T* data, const u8 attr)
ID(const std::string& name, T* data, const u8 attr)
: m_name(name)
, m_attr(attr)
{
@ -58,8 +58,6 @@ struct ID
class IdManager
{
ArrayF<ID> IDs;
static const ID_TYPE s_first_id = 1;
static const ID_TYPE s_max_id = -1;
@ -99,7 +97,7 @@ public:
}
template<typename T>
ID_TYPE GetNewID(const wxString& name = wxEmptyString, T* data = nullptr, const u8 attr = 0)
ID_TYPE GetNewID(const std::string& name = "", T* data = nullptr, const u8 attr = 0)
{
std::lock_guard<std::mutex> lock(m_mtx_main);

View file

@ -1,29 +1,11 @@
#include "stdafx.h"
#include "Thread.h"
static DWORD g_tls_this_thread = 0xFFFFFFFF;
struct __init_tls
{
//NamedThreadBase m_main_thr;
__init_tls()
{
g_tls_this_thread = ::TlsAlloc();
//m_main_thr.SetThreadName("Main Thread");
//::TlsSetValue(g_tls_this_thread, &m_main_thr);
::TlsSetValue(g_tls_this_thread, nullptr);
}
~__init_tls()
{
::TlsFree(g_tls_this_thread);
}
} _init_tls;
__declspec(thread) NamedThreadBase* g_tls_this_thread = nullptr;
NamedThreadBase* GetCurrentNamedThread()
{
return (NamedThreadBase*)::TlsGetValue(g_tls_this_thread);
return g_tls_this_thread;
}
std::string NamedThreadBase::GetThreadName() const
@ -62,7 +44,7 @@ void ThreadBase::Start()
m_executor = new std::thread(
[this]()
{
::TlsSetValue(g_tls_this_thread, this);
g_tls_this_thread = this;
Task();
@ -130,7 +112,7 @@ thread::thread()
void thread::start(std::function<void()> func)
{
m_thr = std::thread([this, func]() { NamedThreadBase info(m_name); ::TlsSetValue(g_tls_this_thread, &info); func(); });
m_thr = std::thread([this, func]() { NamedThreadBase info(m_name); g_tls_this_thread = &info; func(); });
}
void thread::detach()