diff --git a/src/multitouch.c b/src/multitouch.c index c55d742..4a8192d 100644 --- a/src/multitouch.c +++ b/src/multitouch.c @@ -114,7 +114,7 @@ static int init_properties(DeviceIntPtr dev) return Success; } -static int device_init(DeviceIntPtr dev, LocalDevicePtr local) +static int device_init(DeviceIntPtr dev, InputInfoPtr local) { struct mtev_mtouch *mt = local->private; Atom atom; @@ -222,7 +222,7 @@ static int device_init(DeviceIntPtr dev, LocalDevicePtr local) xf86InitValuatorAxisStruct(dev, val, axes_labels[val], min, max, - 1, 0, 1); + 1, 0, 1,Absolute); xf86InitValuatorDefaults(dev, val); } } @@ -232,7 +232,7 @@ static int device_init(DeviceIntPtr dev, LocalDevicePtr local) return Success; } -static int device_on(LocalDevicePtr local) +static int device_on(InputInfoPtr local) { struct mtev_mtouch *mt = local->private; local->fd = xf86OpenSerial(local->options); @@ -248,7 +248,7 @@ static int device_on(LocalDevicePtr local) return Success; } -static int device_off(LocalDevicePtr local) +static int device_off(InputInfoPtr local) { struct mtev_mtouch *mt = local->private; xf86RemoveEnabledDevice(local); @@ -259,12 +259,12 @@ static int device_off(LocalDevicePtr local) return Success; } -static int device_close(LocalDevicePtr local) +static int device_close(InputInfoPtr local) { return Success; } -static void process_state(LocalDevicePtr local, +static void process_state(InputInfoPtr local, const struct mtev_mtouch *mt) { @@ -321,22 +321,22 @@ static void process_state(LocalDevicePtr local, } /* Some x-clients assume they get motion events before button down */ + xf86Msg(X_INFO,"down %d|pdown %d\n", down, pdown); if (down) xf86PostMotionEventP(local->dev, TRUE, 0, down * MT_AXIS_PER_FINGER, valuators); - if(down && pdown == 0) xf86PostButtonEventP(local->dev, TRUE, 1, 1, 0, down * MT_AXIS_PER_FINGER, valuators); - else if (down == 0 && pdown) - xf86PostButtonEvent(local->dev, TRUE, 1, 0, 0, 0); - + else if (down == 0 && pdown){ + xf86PostButtonEvent(local->dev, TRUE, 1, 1, 0, 0); + } pdown = !!down; } /* called for each full received packet from the touchpad */ -static void read_input(LocalDevicePtr local) +static void read_input(InputInfoPtr local) { struct mtev_mtouch *mt = local->private; while (mtouch_read_synchronized_event(mt, local->fd)) { @@ -346,7 +346,7 @@ static void read_input(LocalDevicePtr local) static Bool device_control(DeviceIntPtr dev, int mode) { - LocalDevicePtr local = dev->public.devicePrivate; + InputInfoPtr local = dev->public.devicePrivate; switch (mode) { case DEVICE_INIT: xf86Msg(X_INFO, "device control: init\n"); @@ -366,39 +366,29 @@ static Bool device_control(DeviceIntPtr dev, int mode) } } -static InputInfoPtr preinit(InputDriverPtr drv, IDevPtr dev, int flags) +static InputInfoPtr preinit(InputDriverPtr drv, InputInfoPtr pInfo, int flags) { struct mtev_mtouch *mt; - InputInfoPtr local = xf86AllocateInput(drv, 0); - if (!local) - goto error; + int rc; + mt = calloc(1, sizeof(struct mtev_mtouch)); + if (!mt) goto error; - local->name = dev->identifier; - local->type_name = XI_TOUCHSCREEN; - local->device_control = device_control; - local->read_input = read_input; - local->private = mt; - local->flags = XI86_POINTER_CAPABLE | - XI86_SEND_DRAG_EVENTS; - - local->conf_idev = dev; - - xf86CollectInputOptions(local, NULL, NULL); - //xf86OptionListReport(local->options); - xf86ProcessCommonOptions(local, local->options); + pInfo->private = mt; + pInfo->type_name = "UNKNOWN"; + pInfo->device_control = device_control; + pInfo->read_input = read_input; + mt->swap_xy = xf86SetBoolOption(pInfo->options, "SwapAxes", FALSE); + mt->invert_x = xf86SetBoolOption(pInfo->options, "InvertX", FALSE); + mt->invert_y = xf86SetBoolOption(pInfo->options, "InvertY", FALSE); - mt->swap_xy = xf86SetBoolOption(local->options, "SwapAxes", FALSE); - mt->invert_x = xf86SetBoolOption(local->options, "InvertX", FALSE); - mt->invert_y = xf86SetBoolOption(local->options, "InvertY", FALSE); - - local->flags |= XI86_CONFIGURED; + return Success; error: - return local; + return !Success; } static void uninit(InputDriverPtr drv, InputInfoPtr local, int flags) @@ -415,7 +405,6 @@ static InputDriverRec MTEV = { .PreInit = preinit, .UnInit = uninit, .module = NULL, - .refCount = 0 }; static XF86ModuleVersionInfo VERSION = {