[PATCH libinput 6/6] doc: put some extra warning in for libinput_event_destroy()
Peter Hutterer
peter.hutterer at who-t.net
Wed Dec 10 15:07:12 PST 2014
On Wed, Dec 10, 2014 at 06:01:13PM +0800, Jonas Ã…dahl wrote:
> Hi,
>
> Comment inline.
>
> On Wed, Dec 10, 2014 at 10:34:04AM +1000, Peter Hutterer wrote:
> > Unlike all other structs, events aren't refcounted and will get destroyed
> > immediately.
> >
> > Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> > ---
> > src/libinput.h | 10 +++++++++-
> > 1 file changed, 9 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/libinput.h b/src/libinput.h
> > index 7e5d93c..f7cb169 100644
> > --- a/src/libinput.h
> > +++ b/src/libinput.h
> > @@ -335,6 +335,9 @@ struct libinput_seat;
> > *
> > * The base event type. Use libinput_event_get_pointer_event() or similar to
> > * get the actual event type.
> > + *
> > + * @warning Unlike other structs events are considered transient and
> > + * <b>not</b> refcounted.
> > */
> > struct libinput_event;
> >
> > @@ -382,7 +385,12 @@ struct libinput_event_touch;
> > /**
> > * @ingroup event
> > *
> > - * Destroy the event.
> > + * Destroy the event, freeing all associated data. Data obtained from this
> > + * event must be considered invalid after this call.
>
> Hmm. Is this really correct? The validity of some data, for example the
> coordnates of an absolute motion event, is not related to the lifetime
> of the event, but should rather be considered invalid after some (very
> short) time, so saying that an event invalidates all data of an event
> doesn't seem to make sense to me. What it does invalidate would be any
> data accessed via a pointer, so maybe that is what should be written
> instead?
right, in this case "data" in the context of the C language, so this
paraphaph was to avoid invalid memory access by callers. How about
"resources" instead of data.
+ * Destroy the event, freeing all associated resources. Resources obtained from this
+ * event must be considered invalid after this call.
That should be enough, the varous devices/seat/etc. structs all have notes
that their lifetime is tied to the event and need to be ref'd to extend the
lifetime.
Cheers,
Peter
> > + *
> > + * @warning Unlike other structs events are considered transient and
> > + * <b>not</b> refcounted. Calling libinput_event_destroy() <b>will</b>
> > + * destroy the event.
> > *
> > * @param event An event retrieved by libinput_get_event().
> > */
> > --
> > 2.1.0
>
> Jonas
More information about the wayland-devel
mailing list