Make the SharedClosure implementation a bit less horrible.

This commit is contained in:
John Maguire 2012-03-19 21:17:57 +01:00
parent 627ae372d4
commit c4d3062459
1 changed files with 5 additions and 3 deletions

View File

@ -84,7 +84,7 @@ class Closure : public QObject, boost::noncopyable {
class SharedPointerWrapper { class SharedPointerWrapper {
public: public:
virtual ~SharedPointerWrapper() {} virtual ~SharedPointerWrapper() {}
virtual void* data() const = 0; virtual QObject* data() const = 0;
}; };
template<typename T> template<typename T>
@ -93,9 +93,11 @@ class SharedPointer : public SharedPointerWrapper {
SharedPointer(QSharedPointer<T> ptr) SharedPointer(QSharedPointer<T> ptr)
: ptr_(ptr) { : ptr_(ptr) {
} }
void* data() const {
QObject* data() const {
return ptr_.data(); return ptr_.data();
} }
private: private:
QSharedPointer<T> ptr_; QSharedPointer<T> ptr_;
}; };
@ -111,7 +113,7 @@ class SharedClosure : public Closure {
const ClosureArgumentWrapper* val1 = 0, const ClosureArgumentWrapper* val1 = 0,
const ClosureArgumentWrapper* val2 = 0, const ClosureArgumentWrapper* val2 = 0,
const ClosureArgumentWrapper* val3 = 0) const ClosureArgumentWrapper* val3 = 0)
: Closure(reinterpret_cast<QObject*>(sender->data()), signal, : Closure(sender->data(), signal,
receiver, slot, receiver, slot,
val0, val1, val2, val3), val0, val1, val2, val3),
shared_sender_(sender) { shared_sender_(sender) {