| <refentry id="vidioc-subscribe-event"> |
| <refmeta> |
| <refentrytitle>ioctl VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</refentrytitle> |
| &manvol; |
| </refmeta> |
| |
| <refnamediv> |
| <refname>VIDIOC_SUBSCRIBE_EVENT</refname> |
| <refname>VIDIOC_UNSUBSCRIBE_EVENT</refname> |
| <refpurpose>Subscribe or unsubscribe event</refpurpose> |
| </refnamediv> |
| |
| <refsynopsisdiv> |
| <funcsynopsis> |
| <funcprototype> |
| <funcdef>int <function>ioctl</function></funcdef> |
| <paramdef>int <parameter>fd</parameter></paramdef> |
| <paramdef>int <parameter>request</parameter></paramdef> |
| <paramdef>struct v4l2_event_subscription |
| *<parameter>argp</parameter></paramdef> |
| </funcprototype> |
| </funcsynopsis> |
| </refsynopsisdiv> |
| |
| <refsect1> |
| <title>Arguments</title> |
| |
| <variablelist> |
| <varlistentry> |
| <term><parameter>fd</parameter></term> |
| <listitem> |
| <para>&fd;</para> |
| </listitem> |
| </varlistentry> |
| <varlistentry> |
| <term><parameter>request</parameter></term> |
| <listitem> |
| <para>VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</para> |
| </listitem> |
| </varlistentry> |
| <varlistentry> |
| <term><parameter>argp</parameter></term> |
| <listitem> |
| <para></para> |
| </listitem> |
| </varlistentry> |
| </variablelist> |
| </refsect1> |
| |
| <refsect1> |
| <title>Description</title> |
| |
| <para>Subscribe or unsubscribe V4L2 event. Subscribed events are |
| dequeued by using the &VIDIOC-DQEVENT; ioctl.</para> |
| |
| <table frame="none" pgwide="1" id="v4l2-event-subscription"> |
| <title>struct <structname>v4l2_event_subscription</structname></title> |
| <tgroup cols="3"> |
| &cs-str; |
| <tbody valign="top"> |
| <row> |
| <entry>__u32</entry> |
| <entry><structfield>type</structfield></entry> |
| <entry>Type of the event, see <xref linkend="event-type" />. Note that |
| <constant>V4L2_EVENT_ALL</constant> can be used with VIDIOC_UNSUBSCRIBE_EVENT |
| for unsubscribing all events at once.</entry> |
| </row> |
| <row> |
| <entry>__u32</entry> |
| <entry><structfield>id</structfield></entry> |
| <entry>ID of the event source. If there is no ID associated with |
| the event source, then set this to 0. Whether or not an event |
| needs an ID depends on the event type.</entry> |
| </row> |
| <row> |
| <entry>__u32</entry> |
| <entry><structfield>flags</structfield></entry> |
| <entry>Event flags, see <xref linkend="event-flags" />.</entry> |
| </row> |
| <row> |
| <entry>__u32</entry> |
| <entry><structfield>reserved</structfield>[5]</entry> |
| <entry>Reserved for future extensions. Drivers and applications |
| must set the array to zero.</entry> |
| </row> |
| </tbody> |
| </tgroup> |
| </table> |
| |
| <table pgwide="1" frame="none" id="event-flags"> |
| <title>Event Flags</title> |
| <tgroup cols="3"> |
| &cs-def; |
| <tbody valign="top"> |
| <row> |
| <entry><constant>V4L2_EVENT_SUB_FL_SEND_INITIAL</constant></entry> |
| <entry>0x0001</entry> |
| <entry>When this event is subscribed an initial event will be sent |
| containing the current status. This only makes sense for events |
| that are triggered by a status change such as <constant>V4L2_EVENT_CTRL</constant>. |
| Other events will ignore this flag.</entry> |
| </row> |
| <row> |
| <entry><constant>V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK</constant></entry> |
| <entry>0x0002</entry> |
| <entry><para>If set, then events directly caused by an ioctl will also be sent to |
| the filehandle that called that ioctl. For example, changing a control using |
| &VIDIOC-S-CTRL; will cause a V4L2_EVENT_CTRL to be sent back to that same |
| filehandle. Normally such events are suppressed to prevent feedback loops |
| where an application changes a control to a one value and then another, and |
| then receives an event telling it that that control has changed to the first |
| value.</para> |
| |
| <para>Since it can't tell whether that event was caused by another application |
| or by the &VIDIOC-S-CTRL; call it is hard to decide whether to set the |
| control to the value in the event, or ignore it.</para> |
| |
| <para>Think carefully when you set this flag so you won't get into situations |
| like that.</para> |
| </entry> |
| </row> |
| </tbody> |
| </tgroup> |
| </table> |
| |
| </refsect1> |
| <refsect1> |
| &return-value; |
| </refsect1> |
| </refentry> |