summaryrefslogtreecommitdiffstats
path: root/src/compositor/global
diff options
context:
space:
mode:
authorJørgen Lind <jorgen.lind@nokia.com>2012-04-09 23:38:44 +0200
committerJørgen Lind <jorgen.lind@nokia.com>2012-04-11 09:53:44 +0200
commit679099bf3ba69f5a1f6143b880aebd5553d5172c (patch)
tree6ecd2e85e64eccd39ab20ad298ddf7ff3e1f1bdf /src/compositor/global
parenta72e662b4e5c45988bbe06d587e167901b5606da (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.h13
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>