aboutsummaryrefslogtreecommitdiffstats
path: root/src/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/client')
-rw-r--r--src/client/ClientModel.cpp9
-rw-r--r--src/client/ClientObject.cpp2
-rw-r--r--src/client/ClientObject.hpp16
3 files changed, 15 insertions, 12 deletions
diff --git a/src/client/ClientModel.cpp b/src/client/ClientModel.cpp
index 099d997..e033509 100644
--- a/src/client/ClientModel.cpp
+++ b/src/client/ClientModel.cpp
@@ -35,8 +35,11 @@ ClientModel::find(uint64_t id)
void
ClientModel::new_object(SPtr<ClientObject> object)
{
- _objects.insert(object);
- signal_new_object.emit(object);
+ Objects::iterator i = _objects.find(object);
+ if (i == _objects.end()) {
+ _objects.insert(object);
+ signal_new_object.emit(object);
+ }
}
void
@@ -49,7 +52,7 @@ ClientModel::erase_object(uint64_t id)
}
signal_erase_object.emit(*i);
- (*i)->set_view(SPtr<ClientObject::View>());
+ (*i)->set_view(NULL);
_objects.erase(i);
}
diff --git a/src/client/ClientObject.cpp b/src/client/ClientObject.cpp
index 9b7c319..199cf90 100644
--- a/src/client/ClientObject.cpp
+++ b/src/client/ClientObject.cpp
@@ -24,10 +24,12 @@ namespace client {
ClientObject::ClientObject(uint64_t id)
: _id(id)
+ , _view(NULL)
{}
ClientObject::ClientObject(const ClientObject& copy, uint64_t id)
: _id(id)
+ , _view(NULL)
, _properties(copy._properties)
{}
diff --git a/src/client/ClientObject.hpp b/src/client/ClientObject.hpp
index c9469ed..e823a64 100644
--- a/src/client/ClientObject.hpp
+++ b/src/client/ClientObject.hpp
@@ -51,22 +51,20 @@ public:
typedef std::map<URIInt, Raul::Atom> Properties;
const Properties& properties() { return _properties; }
- SPtr<View> view() const { return _view; }
- void set_view(SPtr<View> view) { _view = view; }
+ View* view() const { return _view; }
+ void set_view(View* view) { _view = view; }
private:
- uint64_t _id;
- SPtr<View> _view;
+ uint64_t _id;
+ View* _view;
Properties _properties;
};
-class ClientObjectKey
- : public ClientObject
+/** Stub client object to use as a search key. */
+struct ClientObjectKey : public ClientObject
{
-public:
- ClientObjectKey(uint64_t id)
- : ClientObject(id) {}
+ ClientObjectKey(uint64_t id) : ClientObject(id) {}
};
}