|
|
@@ -52,7 +52,7 @@ cmVariableWatch::~cmVariableWatch()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void cmVariableWatch::AddWatch(const std::string& variable,
|
|
|
+bool cmVariableWatch::AddWatch(const std::string& variable,
|
|
|
WatchMethod method, void* client_data /*=0*/,
|
|
|
DeleteData delete_data /*=0*/)
|
|
|
{
|
|
|
@@ -65,14 +65,15 @@ void cmVariableWatch::AddWatch(const std::string& variable,
|
|
|
for ( cc = 0; cc < vp->size(); cc ++ )
|
|
|
{
|
|
|
cmVariableWatch::Pair* pair = (*vp)[cc];
|
|
|
- if ( pair->Method == method )
|
|
|
+ if ( pair->Method == method &&
|
|
|
+ client_data && client_data == pair->ClientData)
|
|
|
{
|
|
|
- delete pair;
|
|
|
- (*vp)[cc] = p;
|
|
|
- return;
|
|
|
+ // Callback already exists
|
|
|
+ return false;
|
|
|
}
|
|
|
}
|
|
|
vp->push_back(p);
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
void cmVariableWatch::RemoveWatch(const std::string& variable,
|