diff --git a/src/threading/thread.cpp b/src/threading/thread.cpp
index 8688c4cbf0079ab047ace82d18c8d8a2e86b3570..ecf8563f135605b9ee4405bc829e75a1c73a2940 100644
--- a/src/threading/thread.cpp
+++ b/src/threading/thread.cpp
@@ -116,9 +116,7 @@ bool Thread::start()
 #if USE_CPP11_THREADS
 
 	try {
-		m_thread_obj    = new std::thread(threadProc, this);
-		m_thread_id     = m_thread_obj->get_id();
-		m_thread_handle = m_thread_obj->native_handle();
+		m_thread_obj = new std::thread(threadProc, this);
 	} catch (const std::system_error &e) {
 		return false;
 	}
@@ -135,8 +133,6 @@ bool Thread::start()
 	if (status)
 		return false;
 
-	m_thread_id = m_thread_handle;
-
 #endif
 
 	while (!m_running)
@@ -234,12 +230,6 @@ bool Thread::getReturnValue(void **ret)
 }
 
 
-bool Thread::isCurrentThread()
-{
-	return thr_is_current_thread(m_thread_id);
-}
-
-
 #if USE_CPP11_THREADS || USE_POSIX_THREADS
 void *Thread::threadProc(void *param)
 #elif defined(_WIN32_WCE)
diff --git a/src/threading/thread.h b/src/threading/thread.h
index 6a24afffb72ea9b1299c7df3239f7c5cef4caabe..10732c44201ab7171a79d48769fc7db15a25d073 100644
--- a/src/threading/thread.h
+++ b/src/threading/thread.h
@@ -90,12 +90,22 @@ class Thread {
 	/*
 	 * Returns true if the calling thread is this Thread object.
 	 */
-	bool isCurrentThread();
+	bool isCurrentThread() { return thr_is_current_thread(getThreadId()); }
 
 	inline bool isRunning() { return m_running; }
 	inline bool stopRequested() { return m_request_stop; }
+
+#if USE_CPP11_THREADS
+	inline threadid_t getThreadId() { return m_thread_obj->get_id(); }
+	inline threadhandle_t getThreadHandle() { return m_thread_obj->native_handle(); }
+#else
+#  if USE_WIN_THREADS
 	inline threadid_t getThreadId() { return m_thread_id; }
+#  else
+	inline threadid_t getThreadId() { return m_thread_handle; }
+#  endif
 	inline threadhandle_t getThreadHandle() { return m_thread_handle; }
+#endif
 
 	/*
 	 * Gets the thread return value.
@@ -147,8 +157,12 @@ class Thread {
 	Atomic<bool> m_running;
 	Mutex m_mutex;
 
-	threadid_t m_thread_id;
+#if !USE_CPP11_THREADS
 	threadhandle_t m_thread_handle;
+#if _WIN32
+	threadid_t m_thread_id;
+#endif
+#endif
 
 	static ThreadStartFunc threadProc;