Index: base/win/atl_module.h |
=================================================================== |
--- base/win/atl_module.h (revision 0) |
+++ base/win/atl_module.h (revision 0) |
@@ -0,0 +1,36 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef BASE_WIN_ATL_MODULE_H_ |
+#define BASE_WIN_ATL_MODULE_H_ |
+#pragma once |
+ |
+#include <atlbase.h> |
+#include <atlcom.h> |
+ |
+namespace base { |
+namespace win { |
+ |
+// Ensure that we have exactly one ATL module registered. It's safe to |
+// call this more than once. ATL functions will crash if there's no |
+// ATL module registered, or if you try to register two of them, so |
+// dynamically registering one if needed makes it much easier for us |
+// to support different build configurations like multi-dll without |
+// worrying about which side of a module boundary each ATL module object |
+// belongs on. |
+// |
+// This function must be implemented in this header file rather than a |
+// source file so that it's inlined into the module where it's included, |
+// rather than in the "base" module. |
+static void CreateATLModuleIfNeeded() { |
+ if (_pAtlModule == NULL) { |
+ // This creates the module and automatically updates _pAtlModule. |
+ static CComModule module; |
Nico
2011/11/09 18:00:57
This adds an exit time destructor. Use CR_DEFINE_S
dmazzoni
2011/11/09 18:21:04
The destructor needs to be called, or CComModule c
Nico
2011/11/09 18:37:22
I'm currently trying to remove all exit time destr
Nico
2011/11/09 18:47:18
(The error part is actually only true for platform
|
+ } |
+} |
+ |
+} // namespace win |
+} // namespace base |
+ |
+#endif // BASE_WIN_ATL_MODULE_H_ |