[PATCH synaptics 15/17] Add basic framework for unit-testing.

Gaetan Nadon memsize at videotron.ca
Mon Mar 21 14:58:37 PDT 2011


On Mon, 2011-03-21 at 12:08 +1000, Peter Hutterer wrote:

> Also adds a bunch of fake symbols so we can link. Note that any of these
> symbols will return false, 0 or whatever the zero value for the symbol is.
> Care must be taken when writing test that this doesn't screw up the test.
> 
> Tests are always built but only run on make check.

Even when configuring with --disable-unit-tests?
An interesting choice. The default is "auto" so it would always get
build.

> 
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
>  Makefile.am           |    2 +-
>  configure.ac          |    3 +
>  test/Makefile.am      |   14 ++
>  test/eventcomm-test.c |   37 ++++
>  test/fake-symbols.c   |  446 +++++++++++++++++++++++++++++++++++++++++++++++++
>  test/fake-symbols.h   |  177 +++++++++++++++++++
>  6 files changed, 678 insertions(+), 1 deletions(-)
>  create mode 100644 test/Makefile.am
>  create mode 100644 test/eventcomm-test.c
>  create mode 100644 test/fake-symbols.c
>  create mode 100644 test/fake-symbols.h


Missing .gitignore new file with evencomm-test

> 
> diff --git a/Makefile.am b/Makefile.am
> index 538bbc5..edd28a6 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -18,7 +18,7 @@
>  #  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
>  #  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
>  
> -SUBDIRS = include src man tools conf
> +SUBDIRS = include src man tools conf test
>  MAINTAINERCLEANFILES = ChangeLog INSTALL
>  
>  pkgconfigdir = $(libdir)/pkgconfig
> diff --git a/configure.ac b/configure.ac
> index fd2d0c3..dc47c3e 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -61,6 +61,8 @@ AC_SUBST([sdkdir])
>  DRIVER_NAME=synaptics
>  AC_SUBST([DRIVER_NAME])
>  
> +XORG_ENABLE_UNIT_TESTS

I typically put these together following XORG_DEFAULT_OPTIONS.

> +
>  # -----------------------------------------------------------------------------
>  #			Configuration options
>  # -----------------------------------------------------------------------------
> @@ -149,6 +151,7 @@ AC_CONFIG_FILES([Makefile
>                  tools/Makefile
>                  conf/Makefile
>                  include/Makefile
> +                test/Makefile
>                  xorg-synaptics.pc])
>  AC_OUTPUT
>  
> diff --git a/test/Makefile.am b/test/Makefile.am
> new file mode 100644
> index 0000000..aaa160d
> --- /dev/null
> +++ b/test/Makefile.am
> @@ -0,0 +1,14 @@
> +INCLUDES = -I$(top_srcdir)/src

Deprecated. Use AM_CPPFLAGS.


> +AM_CFLAGS = $(XORG_CFLAGS) $(CWARNFLAGS)
> +fake_syms = fake-symbols.c fake-symbols.h
> +
> +if BUILD_EVENTCOMM
> +noinst_PROGRAMS = eventcomm-test
> +
> +eventcomm_test_SOURCES = eventcomm-test.c\
> +			 $(fake_syms)
> +endif
> +
> +if ENABLE_UNIT_TESTS
> +TESTS = $(noinst_PROGRAMS)
> +endif
> diff --git a/test/eventcomm-test.c b/test/eventcomm-test.c
> new file mode 100644
> index 0000000..ac24640
> --- /dev/null
> +++ b/test/eventcomm-test.c
> @@ -0,0 +1,37 @@
> +/*
> + * Copyright © 2011 Red Hat, Inc.
> + *
> + * Permission to use, copy, modify, distribute, and sell this software
> + * and its documentation for any purpose is hereby granted without
> + * fee, provided that the above copyright notice appear in all copies
> + * and that both that copyright notice and this permission notice
> + * appear in supporting documentation, and that the name of Red Hat
> + * not be used in advertising or publicity pertaining to distribution
> + * of the software without specific, written prior permission.  Red
> + * Hat makes no representations about the suitability of this software
> + * for any purpose.  It is provided "as is" without express or implied
> + * warranty.
> + *
> + * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
> + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
> + * NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
> + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
> + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
> + * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
> + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> + *
> + * Authors:
> + *      Peter Hutterer
> + */
> +
> +#if HAVE_CONFIG_H
> +#include <config.h>
> +#endif
> +
> +#include <stdio.h>
> +#include <assert.h>
> +
> +int main (int argc, char **argv)
> +{
> +    return 0;
> +}
> diff --git a/test/fake-symbols.c b/test/fake-symbols.c
> new file mode 100644
> index 0000000..9657bab
> --- /dev/null
> +++ b/test/fake-symbols.c
> @@ -0,0 +1,446 @@
> +#include "fake-symbols.h"
> +
> +_X_EXPORT
> +int xf86ReadSerial (int fd, void *buf, int count)
> +{
> +    return 0;
> +}
> +
> +
> +_X_EXPORT int
> +xf86WriteSerial (int fd, const void *buf, int count)
> +{
> +    return 0;
> +}
> +
> +_X_EXPORT int
> +xf86CloseSerial (int fd)
> +{
> +    return 0;
> +}
> +
> +_X_EXPORT int
> +xf86WaitForInput (int fd, int timeout)
> +{
> +    return 0;
> +}
> +
> +_X_EXPORT int
> +xf86OpenSerial (pointer options)
> +{
> +    return 0;
> +}
> +
> +_X_EXPORT int
> +xf86SetSerialSpeed (int fd, int speed)
> +{
> +    return 0;
> +}
> +
> +_X_EXPORT pointer
> +xf86ReplaceIntOption(pointer optlist, const char *name, const int val)
> +{
> +    return NULL;
> +}
> +
> +_X_EXPORT char *
> +xf86SetStrOption(pointer optlist, const char *name, char *deflt)
> +{
> +    return NULL;
> +}
> +
> +_X_EXPORT int
> +xf86SetBoolOption(pointer optlist, const char *name, int deflt)
> +{
> +    return 0;
> +}
> +
> +_X_EXPORT pointer
> +xf86AddNewOption(pointer head, const char *name, const char *val)
> +{
> +    return NULL;
> +}
> +_X_EXPORT char *
> +xf86FindOptionValue(pointer options, const char *name)
> +{
> +    return NULL;
> +}
> +
> +_X_EXPORT char *
> +xf86OptionName(pointer opt)
> +{
> +    return NULL;
> +}
> +
> +_X_EXPORT char *
> +xf86OptionValue(pointer opt)
> +{
> +    return NULL;
> +}
> +
> +_X_EXPORT int
> +xf86NameCmp(const char *s1, const char *s2)
> +{
> +    return 0;
> +}
> +
> +_X_EXPORT char *
> +xf86CheckStrOption(pointer optlist, const char *name, char *deflt)
> +{
> +    return NULL;
> +}
> +
> +_X_EXPORT void
> +xf86AddEnabledDevice(InputInfoPtr pInfo)
> +{
> +    return;
> +}
> +
> +_X_EXPORT void
> +xf86RemoveEnabledDevice(InputInfoPtr pInfo)
> +{
> +    return;
> +}
> +
> +_X_EXPORT Atom
> +XIGetKnownProperty(char *name)
> +{
> +    return None;
> +}
> +
> +_X_EXPORT void
> +xf86AddInputDriver(InputDriverPtr driver, pointer module, int flags)
> +{
> +    return;
> +}
> +
> +_X_EXPORT int
> +xf86ScaleAxis(int	Cx,
> +              int	to_max,
> +              int	to_min,
> +              int	from_max,
> +              int	from_min )
> +{
> +    int X;
> +    int64_t to_width = to_max - to_min;
> +    int64_t from_width = from_max - from_min;
> +
> +    if (from_width) {
> +	X = (int)(((to_width * (Cx - from_min)) / from_width) + to_min);
> +    }
> +    else {
> +	X = 0;
> +        /*ErrorF ("Divide by Zero in xf86ScaleAxis\n");*/
> +    }
> +
> +    if (X > to_max)
> +	X = to_max;
> +    if (X < to_min)
> +	X = to_min;
> +
> +    return X;
> +}
> +
> +
> +_X_EXPORT void
> +DeleteInputDeviceRequest(DeviceIntPtr pDev)
> +{
> +    return;
> +}
> +
> +
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
> +_X_EXPORT void
> +FreeInputAttributes(InputAttributes *attrs)
> +{
> +    return;
> +}
> +#endif
> +
> +_X_EXPORT void
> +xf86PostButtonEvent(DeviceIntPtr	device,
> +                    int			is_absolute,
> +                    int			button,
> +                    int			is_down,
> +                    int			first_valuator,
> +                    int			num_valuators,
> +                    ...)
> +{
> +    return;
> +}
> +
> +_X_EXPORT int
> +Xasprintf(char ** ret, const char * format, ...)
> +{
> +    return 0;
> +}
> +
> +
> +_X_EXPORT int
> +XISetDevicePropertyDeletable(DeviceIntPtr dev, Atom property, Bool deletable)
> +{
> +    return 0;
> +}
> +
> +
> +_X_EXPORT InputInfoPtr
> +xf86FirstLocalDevice(void)
> +{
> +    return NULL;
> +}
> +
> +
> +_X_EXPORT void
> +xf86DeleteInput(InputInfoPtr pInp, int flags)
> +{
> +    return;
> +}
> +
> +_X_EXPORT pointer
> +xf86OptionListDuplicate(pointer options)
> +{
> +    return NULL;
> +}
> +
> +_X_EXPORT Bool
> +InitButtonClassDeviceStruct(DeviceIntPtr dev, int numButtons, Atom* labels,
> +                            CARD8 *map)
> +{
> +    return FALSE;
> +}
> +
> +_X_EXPORT void
> +InitValuatorAxisStruct(DeviceIntPtr dev, int axnum, Atom label, int minval, int maxval,
> +		       int resolution, int min_res, int max_res, int mode)
> +{
> +    return;
> +}
> +
> +_X_EXPORT void
> +xf86PostKeyboardEvent(DeviceIntPtr      device,
> +                      unsigned int      key_code,
> +                      int               is_down)
> +{
> +    return;
> +}
> +
> +_X_EXPORT int
> +xf86SetIntOption(pointer optlist, const char *name, int deflt)
> +{
> +    return 0;
> +}
> +
> +_X_EXPORT void
> +xf86PostButtonEventP(DeviceIntPtr	device,
> +                     int		is_absolute,
> +                     int		button,
> +                     int		is_down,
> +                     int		first_valuator,
> +                     int		num_valuators,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> +                     const
> +#endif
> +                           int		*valuators)
> +{
> +    return;
> +}
> +
> +_X_EXPORT Bool
> +InitPtrFeedbackClassDeviceStruct(DeviceIntPtr dev, PtrCtrlProcPtr controlProc)
> +{
> +    return FALSE;
> +}
> +
> +_X_EXPORT int
> +XIChangeDeviceProperty (DeviceIntPtr dev, Atom property, Atom type,
> +                        int format, int mode, unsigned long len,
> +                        pointer value, Bool sendevent)
> +{
> +    return 0;
> +}
> +
> +_X_EXPORT CARD32
> +GetTimeInMillis (void)
> +{
> +    return 0;
> +}
> +
> +
> +_X_EXPORT int
> +NewInputDeviceRequest (InputOption *options,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
> +                       InputAttributes *attrs,
> +#endif
> +                       DeviceIntPtr *pdev)
> +{
> +    return 0;
> +}
> +
> +
> +_X_EXPORT Bool
> +InitLedFeedbackClassDeviceStruct (DeviceIntPtr dev, LedCtrlProcPtr controlProc)
> +{
> +    return FALSE;
> +}
> +
> +
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
> +_X_EXPORT InputAttributes*
> +DuplicateInputAttributes(InputAttributes *attrs)
> +{
> +    return NULL;
> +}
> +#endif
> +
> +_X_EXPORT int
> +ValidAtom(Atom atom)
> +{
> +    return None;
> +}
> +
> +_X_EXPORT Bool
> +InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet *rmlvo,
> +                         BellProcPtr bell_func, KbdCtrlProcPtr ctrl_func)
> +{
> +    return FALSE;
> +}
> +
> +_X_EXPORT long
> +XIRegisterPropertyHandler(DeviceIntPtr         dev,
> +                          int (*SetProperty) (DeviceIntPtr dev,
> +                                              Atom property,
> +                                              XIPropertyValuePtr prop,
> +                                              BOOL checkonly),
> +                          int (*GetProperty) (DeviceIntPtr dev,
> +                                              Atom property),
> +                          int (*DeleteProperty) (DeviceIntPtr dev,
> +                                                 Atom property))
> +{
> +    return 0;
> +}
> +
> +_X_EXPORT int
> +InitProximityClassDeviceStruct(DeviceIntPtr dev)
> +{
> +    return 0;
> +}
> +
> +
> +_X_EXPORT void
> +xf86Msg(MessageType type, const char *format, ...)
> +{
> +    return;
> +}
> +
> +_X_EXPORT void
> +xf86MsgVerb(MessageType type, int verb, const char *format, ...)
> +{
> +    return;
> +}
> +
> +
> +_X_EXPORT void
> +xf86PostMotionEventP(DeviceIntPtr	device,
> +                    int			is_absolute,
> +                    int			first_valuator,
> +                    int			num_valuators,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> +                    const
> +#endif
> +                          int		*valuators)
> +{
> +    return;
> +}
> +
> +
> +_X_EXPORT Bool
> +InitValuatorClassDeviceStruct(DeviceIntPtr dev, int numAxes, Atom *labels,
> +                              int numMotionEvents, int mode)
> +{
> +    return FALSE;
> +}
> +
> +
> +_X_EXPORT pointer
> +xf86ReplaceStrOption(pointer optlist, const char *name, const char* val)
> +{
> +    return NULL;
> +}
> +
> +
> +_X_EXPORT pointer
> +xf86NextOption(pointer list)
> +{
> +    return NULL;
> +}
> +
> +
> +_X_EXPORT int
> +XIGetDeviceProperty (DeviceIntPtr dev, Atom property, XIPropertyValuePtr *value)
> +{
> +    return 0;
> +}
> +
> +
> +_X_EXPORT Atom
> +MakeAtom(const char *string, unsigned len, Bool makeit)
> +{
> +    return None;
> +}
> +
> +
> +_X_EXPORT int
> +GetMotionHistorySize(void)
> +{
> +    return 0;
> +}
> +
> +
> +_X_EXPORT void
> +xf86PostProximityEventP(DeviceIntPtr	device,
> +                        int		is_in,
> +                        int		first_valuator,
> +                        int		num_valuators,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> +                        const
> +#endif
> +                           int		*valuators)
> +{
> +    return;
> +}
> +
> +
> +_X_EXPORT Bool
> +InitFocusClassDeviceStruct(DeviceIntPtr dev)
> +{
> +    return FALSE;
> +}
> +
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
> +void
> +xf86ProcessCommonOptions(InputInfoPtr pInfo, pointer list)
> +{
> +}
> +
> +void
> +xf86CollectInputOptions(InputInfoPtr pInfo,
> +                        const char **defaultOpts,
> +                        pointer extraOpts)
> +{
> +}
> +
> +InputInfoPtr xf86AllocateInput(InputDriverPtr drv, int flags)
> +{
> +    return NULL;
> +}
> +
> +#endif
> +
> +ClientPtr serverClient;
> +
> +Bool QueueWorkProc (
> +    Bool (*function)(ClientPtr /* pClient */, pointer /* closure */),
> +    ClientPtr client, pointer closure)
> +{
> +    return FALSE;
> +}
> diff --git a/test/fake-symbols.h b/test/fake-symbols.h
> new file mode 100644
> index 0000000..cc62679
> --- /dev/null
> +++ b/test/fake-symbols.h
> @@ -0,0 +1,177 @@
> +#include <xorg-server.h>
> +#include <xf86Xinput.h>
> +
> +extern int xf86ReadSerial (int fd, void *buf, int count);
> +extern int xf86WriteSerial (int fd, const void *buf, int count);
> +extern int xf86CloseSerial (int fd);
> +extern int xf86WaitForInput (int fd, int timeout);
> +extern int xf86OpenSerial (pointer options);
> +extern int xf86SetSerialSpeed (int fd, int speed);
> +
> +extern pointer xf86ReplaceIntOption(pointer optlist, const char *name, const int val);
> +extern pointer xf86AddNewOption(pointer head, const char *name, const char *val);
> +extern char* xf86OptionName(pointer opt);
> +extern char* xf86FindOptionValue(pointer options, const char *name);
> +extern int xf86NameCmp(const char *s1, const char *s2);
> +extern char* xf86CheckStrOption(pointer optlist, const char *name, char *deflt);
> +
> +
> +extern char * xf86SetStrOption(pointer optlist, const char *name, char *deflt);
> +extern int xf86SetBoolOption(pointer optlist, const char *name, int deflt);
> +extern pointer xf86AddNewOption(pointer head, const char *name, const char *val);
> +extern char* xf86FindOptionValue(pointer options, const char *name);
> +extern char* xf86OptionName(pointer opt);
> +extern char *xf86OptionValue(pointer opt);
> +extern int xf86NameCmp(const char *s1, const char *s2);
> +extern char * xf86CheckStrOption(pointer optlist, const char *name, char *deflt);
> +extern void xf86AddEnabledDevice(InputInfoPtr pInfo);
> +extern void xf86RemoveEnabledDevice(InputInfoPtr pInfo);
> +extern Atom XIGetKnownProperty(char *name);
> +extern void xf86AddInputDriver(InputDriverPtr driver, pointer module, int flags);
> +extern int
> +xf86ScaleAxis(int	Cx,
> +              int	to_max,
> +              int	to_min,
> +              int	from_max,
> +              int	from_min );
> +
> +extern void DeleteInputDeviceRequest(DeviceIntPtr pDev);
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
> +extern void FreeInputAttributes(InputAttributes *attrs);
> +#endif
> +extern void
> +xf86PostButtonEvent(DeviceIntPtr	device,
> +                    int			is_absolute,
> +                    int			button,
> +                    int			is_down,
> +                    int			first_valuator,
> +                    int			num_valuators,
> +                    ...);
> +extern int Xasprintf(char ** ret, const char *format, ...);
> +extern int
> +XISetDevicePropertyDeletable(DeviceIntPtr dev, Atom property, Bool deletable);
> +
> +extern InputInfoPtr xf86FirstLocalDevice(void);
> +extern void xf86DeleteInput(InputInfoPtr pInp, int flags);
> +extern pointer xf86OptionListDuplicate(pointer options);
> +extern Bool
> +InitButtonClassDeviceStruct(DeviceIntPtr dev, int numButtons, Atom* labels,
> +                            CARD8 *map);
> +extern void
> +InitValuatorAxisStruct(DeviceIntPtr dev, int axnum, Atom label, int minval, int maxval,
> +		       int resolution, int min_res, int max_res, int mode);
> +extern void
> +xf86PostKeyboardEvent(DeviceIntPtr      device,
> +                      unsigned int      key_code,
> +                      int               is_down);
> +extern int
> +xf86SetIntOption(pointer optlist, const char *name, int deflt);
> +extern void
> +xf86PostButtonEventP(DeviceIntPtr	device,
> +                     int		is_absolute,
> +                     int		button,
> +                     int		is_down,
> +                     int		first_valuator,
> +                     int		num_valuators,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> +                     const
> +#endif
> +                           int		*valuators);
> +extern Bool
> +InitPtrFeedbackClassDeviceStruct(DeviceIntPtr dev, PtrCtrlProcPtr controlProc);
> +
> +extern int
> +XIChangeDeviceProperty (DeviceIntPtr dev, Atom property, Atom type,
> +                        int format, int mode, unsigned long len,
> +                        pointer value, Bool sendevent);
> +extern CARD32 GetTimeInMillis (void);
> +
> +extern int
> +NewInputDeviceRequest (InputOption *options,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
> +                       InputAttributes *attrs,
> +#endif
> +                       DeviceIntPtr *pdev);
> +
> +extern Bool
> +InitLedFeedbackClassDeviceStruct (DeviceIntPtr dev, LedCtrlProcPtr controlProc);
> +
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11
> +extern InputAttributes* DuplicateInputAttributes(InputAttributes *attrs);
> +#endif
> +extern int ValidAtom(Atom atom);
> +extern Bool
> +InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet *rmlvo,
> +                         BellProcPtr bell_func, KbdCtrlProcPtr ctrl_func);
> +extern long
> +XIRegisterPropertyHandler(DeviceIntPtr         dev,
> +                          int (*SetProperty) (DeviceIntPtr dev,
> +                                              Atom property,
> +                                              XIPropertyValuePtr prop,
> +                                              BOOL checkonly),
> +                          int (*GetProperty) (DeviceIntPtr dev,
> +                                              Atom property),
> +                          int (*DeleteProperty) (DeviceIntPtr dev,
> +                                                 Atom property));
> +extern int InitProximityClassDeviceStruct(DeviceIntPtr dev);
> +extern void xf86Msg(MessageType type, const char *format, ...);
> +extern void xf86MsgVerb(MessageType type, int verb, const char *format, ...);
> +
> +extern void
> +xf86PostMotionEventP(DeviceIntPtr	device,
> +                    int			is_absolute,
> +                    int			first_valuator,
> +                    int			num_valuators,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> +                    const
> +#endif
> +                          int		*valuators);
> +
> +extern Bool
> +InitValuatorClassDeviceStruct(DeviceIntPtr dev, int numAxes, Atom *labels,
> +                              int numMotionEvents, int mode);
> +
> +extern pointer
> +xf86ReplaceStrOption(pointer optlist, const char *name, const char* val);
> +
> +extern pointer xf86NextOption(pointer list);
> +
> +extern int
> +XIGetDeviceProperty (DeviceIntPtr dev, Atom property, XIPropertyValuePtr *value);
> +
> +extern Atom MakeAtom(const char *string, unsigned len, Bool makeit);
> +
> +extern int GetMotionHistorySize(void);
> +
> +extern void
> +xf86PostProximityEventP(DeviceIntPtr	device,
> +                        int		is_in,
> +                        int		first_valuator,
> +                        int		num_valuators,
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
> +                        const
> +#endif
> +                              int	*valuators);
> +
> +extern Bool InitFocusClassDeviceStruct(DeviceIntPtr dev);
> +
> +
> +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12
> +extern void
> +xf86ProcessCommonOptions(InputInfoPtr pInfo, pointer list);
> +
> +extern void
> +xf86CollectInputOptions(InputInfoPtr pInfo,
> +                        const char **defaultOpts,
> +                        pointer extraOpts);
> +
> +extern InputInfoPtr
> +xf86AllocateInput(InputDriverPtr drv, int flags);
> +
> +
> +extern ClientPtr serverClient;
> +
> +extern Bool QueueWorkProc (
> +    Bool (*function)(ClientPtr /* pClient */, pointer /* closure */),
> +    ClientPtr client, pointer closure);
> +#endif
> -- 
> 1.7.4
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.x.org/archives/xorg-devel/attachments/20110321/77dea55a/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
URL: <http://lists.x.org/archives/xorg-devel/attachments/20110321/77dea55a/attachment-0001.pgp>


More information about the xorg-devel mailing list