Bug 913847 - split NS_IsMainThread and NS_GetMainThread into a new MainThreadUtils.h header - r=ehsan
authorBenoit Jacob <bjacob@mozilla.com>
Thu, 19 Sep 2013 09:54:41 -0400
changeset 147932 8cd6137f030a98ebedad4ed29ca1957a78a55384
parent 147931 f50b9bd02eaec7730d57db5beacb55deca914bf6
child 147933 e4d37facef0bfb397bb7ea423476fa987164a832
push id25321
push useremorley@mozilla.com
push dateFri, 20 Sep 2013 09:19:10 +0000
treeherdermozilla-central@d923570ed720 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersehsan
bugs913847
milestone27.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 913847 - split NS_IsMainThread and NS_GetMainThread into a new MainThreadUtils.h header - r=ehsan
xpcom/glue/MainThreadUtils.h
xpcom/glue/moz.build
xpcom/glue/nsThreadUtils.h
new file mode 100644
--- /dev/null
+++ b/xpcom/glue/MainThreadUtils.h
@@ -0,0 +1,50 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim:set ts=2 sw=2 sts=2 et cindent: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef MainThreadUtils_h_
+#define MainThreadUtils_h_
+
+#include "nscore.h"
+#include "mozilla/threads/nsThreadIDs.h"
+
+class nsIThread;
+
+/**
+ * Get a reference to the main thread.
+ *
+ * @param result
+ *   The resulting nsIThread object.
+ */
+extern NS_COM_GLUE NS_METHOD
+NS_GetMainThread(nsIThread **result);
+
+#if defined(MOZILLA_INTERNAL_API) && defined(XP_WIN)
+bool NS_IsMainThread();
+#elif defined(MOZILLA_INTERNAL_API) && defined(NS_TLS)
+// This is defined in nsThreadManager.cpp and initialized to `Main` for the
+// main thread by nsThreadManager::Init.
+extern NS_TLS mozilla::threads::ID gTLSThreadID;
+#ifdef MOZ_ASAN
+// Temporary workaround, see bug 895845
+MOZ_ASAN_BLACKLIST static
+#else
+inline
+#endif
+bool NS_IsMainThread()
+{
+  return gTLSThreadID == mozilla::threads::Main;
+}
+#else
+/**
+ * Test to see if the current thread is the main thread.
+ *
+ * @returns true if the current thread is the main thread, and false
+ * otherwise.
+ */
+extern NS_COM_GLUE bool NS_IsMainThread();
+#endif
+
+#endif // MainThreadUtils_h_
--- a/xpcom/glue/moz.build
+++ b/xpcom/glue/moz.build
@@ -9,16 +9,17 @@ DIRS += ['standalone', 'nomozalloc']
 # On win we build two glue libs - glue linked to crt dlls here and in staticruntime we build
 # a statically linked glue lib.
 if CONFIG['OS_ARCH'] == 'WINNT':
     DIRS += ['staticruntime']
 
 MODULE = 'xpcom'
 
 EXPORTS += [
+    'MainThreadUtils.h',
     'nsArrayEnumerator.h',
     'nsArrayUtils.h',
     'nsBaseHashtable.h',
     'nsCOMArray.h',
     'nsCOMPtr.h',
     'nsCRTGlue.h',
     'nsCategoryCache.h',
     'nsClassHashtable.h',
--- a/xpcom/glue/nsThreadUtils.h
+++ b/xpcom/glue/nsThreadUtils.h
@@ -4,25 +4,24 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef nsThreadUtils_h__
 #define nsThreadUtils_h__
 
 #include "prthread.h"
 #include "prinrval.h"
-#include "nscore.h"
+#include "MainThreadUtils.h"
 #include "nsIThreadManager.h"
 #include "nsIThread.h"
 #include "nsIRunnable.h"
 #include "nsICancelableRunnable.h"
 #include "nsStringGlue.h"
 #include "nsCOMPtr.h"
 #include "nsAutoPtr.h"
-#include "mozilla/threads/nsThreadIDs.h"
 #include "mozilla/Likely.h"
 
 //-----------------------------------------------------------------------------
 // These methods are alternatives to the methods on nsIThreadManager, provided
 // for convenience.
 
 /**
  * Set name of the target thread.  This operation is asynchronous.
@@ -87,51 +86,16 @@ NS_NewNamedThread(const char (&name)[LEN
  *
  * @param result
  *   The resulting nsIThread object.
  */
 extern NS_COM_GLUE NS_METHOD
 NS_GetCurrentThread(nsIThread **result);
 
 /**
- * Get a reference to the main thread.
- *
- * @param result
- *   The resulting nsIThread object.
- */
-extern NS_COM_GLUE NS_METHOD
-NS_GetMainThread(nsIThread **result);
-
-#if defined(MOZILLA_INTERNAL_API) && defined(XP_WIN)
-bool NS_IsMainThread();
-#elif defined(MOZILLA_INTERNAL_API) && defined(NS_TLS)
-// This is defined in nsThreadManager.cpp and initialized to `Main` for the
-// main thread by nsThreadManager::Init.
-extern NS_TLS mozilla::threads::ID gTLSThreadID;
-#ifdef MOZ_ASAN
-// Temporary workaround, see bug 895845
-MOZ_ASAN_BLACKLIST static
-#else
-inline
-#endif
-bool NS_IsMainThread()
-{
-  return gTLSThreadID == mozilla::threads::Main;
-}
-#else
-/**
- * Test to see if the current thread is the main thread.
- *
- * @returns true if the current thread is the main thread, and false
- * otherwise.
- */
-extern NS_COM_GLUE bool NS_IsMainThread();
-#endif
-
-/**
  * Dispatch the given event to the current thread.
  *
  * @param event
  *   The event to dispatch.
  *
  * @returns NS_ERROR_INVALID_ARG
  *   If event is null.
  */