variable_watch: Allow specifying the data to match in RemoveWatch
Now that watches are dependent on their client_data when adding, it also makes sense to allow matching the data for removal.
This commit is contained in:
parent
e43e207c7b
commit
34b397e8de
|
@ -77,13 +77,17 @@ bool cmVariableWatch::AddWatch(const std::string& variable,
|
|||
}
|
||||
|
||||
void cmVariableWatch::RemoveWatch(const std::string& variable,
|
||||
WatchMethod method)
|
||||
WatchMethod method,
|
||||
void* client_data /*=0*/)
|
||||
{
|
||||
cmVariableWatch::VectorOfPairs* vp = &this->WatchMap[variable];
|
||||
cmVariableWatch::VectorOfPairs::iterator it;
|
||||
for ( it = vp->begin(); it != vp->end(); ++it )
|
||||
{
|
||||
if ( (*it)->Method == method )
|
||||
if ( (*it)->Method == method &&
|
||||
// If client_data is NULL, we want to disconnect all watches against
|
||||
// the given method; otherwise match ClientData as well.
|
||||
(!client_data || (client_data == (*it)->ClientData)))
|
||||
{
|
||||
delete *it;
|
||||
vp->erase(it);
|
||||
|
|
|
@ -36,7 +36,8 @@ public:
|
|||
*/
|
||||
bool AddWatch(const std::string& variable, WatchMethod method,
|
||||
void* client_data=0, DeleteData delete_data=0);
|
||||
void RemoveWatch(const std::string& variable, WatchMethod method);
|
||||
void RemoveWatch(const std::string& variable, WatchMethod method,
|
||||
void* client_data=0);
|
||||
|
||||
/**
|
||||
* This method is called when variable is accessed
|
||||
|
|
Loading…
Reference in New Issue