1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
Index: /trunk/libffado/src/debugmodule/debugmodule.h
===================================================================
--- /trunk/libffado/src/debugmodule/debugmodule.h (revision 1763)
+++ /trunk/libffado/src/debugmodule/debugmodule.h (revision 1999)
@@ -283,6 +283,10 @@
void hexDumpQuadlets( quadlet_t *data_start, unsigned int length );
+class DebugModuleManager;
+
class DebugModule {
public:
+ friend class DebugModuleManager;
+
enum {
eDL_Message = DEBUG_LEVEL_MESSAGE,
@@ -333,4 +337,5 @@
std::string m_name;
debug_level_t m_level;
+ DebugModuleManager* m_manager;
};
Index: /trunk/libffado/src/debugmodule/debugmodule.cpp
===================================================================
--- /trunk/libffado/src/debugmodule/debugmodule.cpp (revision 1763)
+++ /trunk/libffado/src/debugmodule/debugmodule.cpp (revision 1999)
@@ -84,5 +84,6 @@
// << endl;
// }
- if ( !DebugModuleManager::instance()->unregisterModule( *this ) ) {
+
+ if (m_manager && !m_manager->unregisterModule( *this ) ) {
cerr << "Could not unregister DebugModule at DebugModuleManager"
<< endl;
@@ -263,12 +264,9 @@
DebugModuleManager::~DebugModuleManager()
{
- // cleanin up leftover modules
- for ( DebugModuleVectorIterator it = m_debugModules.begin();
- it != m_debugModules.end();
- ++it )
+ // cleaning up leftover modules
+ while (!m_debugModules.empty())
{
- fprintf(stderr,"Cleaning up leftover debug module: %s\n",(*it)->getName().c_str());
- m_debugModules.erase( it );
- delete *it;
+ DebugModule *mod = m_debugModules.back();
+ unregisterModule(*mod);
}
@@ -455,4 +453,6 @@
} else {
m_debugModules.push_back( &debugModule );
+ if (debugModule.m_manager == NULL)
+ debugModule.m_manager = this;
}
return true;
@@ -469,4 +469,6 @@
if ( *it == &debugModule ) {
m_debugModules.erase( it );
+ if (debugModule.m_manager == this)
+ debugModule.m_manager = NULL;
return true;
}
|