diff options
author | Stewart Miles <smiles@google.com> | 2014-05-01 09:03:27 -0700 |
---|---|---|
committer | Stewart Miles <smiles@google.com> | 2014-05-12 12:35:37 -0700 |
commit | 84d35492b145cebc000f8fd72818eb25b8e65c04 (patch) | |
tree | 0a7adfd3f93de27984377aa1e210685540891ff8 /include/hardware/fb.h | |
parent | 4c847f2b79d99b1fecf487b167dd5bbe3ea7da06 (diff) | |
download | hardware_libhardware-84d35492b145cebc000f8fd72818eb25b8e65c04.zip hardware_libhardware-84d35492b145cebc000f8fd72818eb25b8e65c04.tar.gz hardware_libhardware-84d35492b145cebc000f8fd72818eb25b8e65c04.tar.bz2 |
Described restrictions for common HAL object methods.
Inheritance of HAL object is performed by composing a child structure of a
single parent structure located at offset 0 followed by new data members
and function pointers in the child structure.
For example,
struct child {
struct parent common;
int a_data_member;
void (*a_method)(struct child *c, int v);
};
HAL code assumes this layout when accessing child structures given a pointer
to a parent structure such that users write code like the following...
void child_method(struct *parent, int v) {
struct child * c = (struct child*)parent;
// do stuff with c
}
Code above will break if a member is added before "common" in "struct child".
This change adds comments that describe the restriction on the location of
parent HAL objects within a derived HAL object. HAL objects that already
have comments that describe the required location of parent objects are not
modified.
Change-Id: Ibe4300275286ef275b2097534c84f1029d761d87
Diffstat (limited to 'include/hardware/fb.h')
-rw-r--r-- | include/hardware/fb.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/hardware/fb.h b/include/hardware/fb.h index 135e4aa..9df9416 100644 --- a/include/hardware/fb.h +++ b/include/hardware/fb.h @@ -36,6 +36,12 @@ __BEGIN_DECLS /*****************************************************************************/ typedef struct framebuffer_device_t { + /** + * Common methods of the framebuffer device. This *must* be the first member of + * framebuffer_device_t as users of this structure will cast a hw_device_t to + * framebuffer_device_t pointer in contexts where it's known the hw_device_t references a + * framebuffer_device_t. + */ struct hw_device_t common; /* flags describing some attributes of the framebuffer */ |