diff options
author | Jørgen Lind <jorgen.lind@nokia.com> | 2012-04-09 23:38:44 +0200 |
---|---|---|
committer | Jørgen Lind <jorgen.lind@nokia.com> | 2012-04-11 09:53:44 +0200 |
commit | 679099bf3ba69f5a1f6143b880aebd5553d5172c (patch) | |
tree | 6ecd2e85e64eccd39ab20ad298ddf7ff3e1f1bdf /src/compositor/global | |
parent | a72e662b4e5c45988bbe06d587e167901b5606da (diff) |
Don't use poor mans inheritance for waylandobject
We'r programming in C++ afterall :)
This will let us use virtual functions in subclasses and multiple
inheritance.
Change-Id: I69647fa3197cbb33fb70e771470d7af07f8011f5
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'src/compositor/global')
-rw-r--r-- | src/compositor/global/waylandobject.h | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/compositor/global/waylandobject.h b/src/compositor/global/waylandobject.h index 4cbe6da71..713de3551 100644 --- a/src/compositor/global/waylandobject.h +++ b/src/compositor/global/waylandobject.h @@ -48,15 +48,15 @@ namespace Wayland { template <typename T> -class Object +class Object : public T { public: typedef T Base; - Object() { memset(&m_waylandObject, 0, sizeof(T)); } + Object() { memset(this, 0, sizeof(T)); } - const T *base() const { return &m_waylandObject; } - T *base() { return &m_waylandObject; } + const T *base() const { return this; } + T *base() { return this; } template <typename Implementation> void addClientResource(wl_client *client, @@ -68,14 +68,11 @@ public: resource->object.id = id; resource->object.interface = interface; resource->object.implementation = (void (**)(void))implementation; - resource->data = &m_waylandObject; + resource->data = this; resource->destroy = destroy; wl_client_add_resource(client, resource); } - -private: - T m_waylandObject; }; template <typename T> |