On Fri, May 30, 2014 at 2:23 PM, Jason Gerecke <killert...@gmail.com> wrote: > Prior to commit 61f6a7c, the value of oldState.proximity > was not set by wcmUpdateOldState. Rather, when a tool > entered proximity, the proximity flag would be explicitly > set only after the call to wcmSend(Non)PadEvents was > complete. This ensured that the condition where the pen > has just entered prox would be properly detected. > > Since the aforementioned commit copies the value of ds > (whose proximity flag is set) to oldState, issues related > to the enter-prox condition have appeared. This is most > noticable in GIMP, which has trouble switching tools. > > To resolve this issue, we remove the explicit setting of > oldState.proximity (which is now implicitly handled by > the call to wcmUpdateOldState after wcmSend(Non)PadEvents > finishes) and add in an explicit clearing of the same > prior to the call. In this way, it acts the same as > oldState.buttons which must also be cleared upon entering > prox to properly detect presses. > > Signed-off-by: Jason Gerecke <killert...@gmail.com> > --- > src/wcmCommon.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/src/wcmCommon.c b/src/wcmCommon.c > index 65b0fe4..6dfcba4 100644 > --- a/src/wcmCommon.c > +++ b/src/wcmCommon.c > @@ -685,10 +685,14 @@ void wcmSendEvents(InputInfoPtr pInfo, const > WacomDeviceState* ds) > x, y, z, v3, v4, v5, v6, id, serial, > is_button ? "true" : "false", ds->buttons); > > - /* update the old records */ > + /* when entering prox, replace the zeroed-out oldState with a copy of > + * the current state to prevent jumps. reset the prox and button state > + * to zero to properly detect changes.
It is sensible to me. For all three patches, Reviewed-by: Ping Cheng <pi...@wacom.com> Cheers, Ping > + */ > if(!priv->oldState.proximity) > { > wcmUpdateOldState(pInfo, ds, x, y); > + priv->oldState.proximity = 0; > priv->oldState.buttons = 0; > } > > @@ -708,7 +712,6 @@ void wcmSendEvents(InputInfoPtr pInfo, const > WacomDeviceState* ds) > wcmSendNonPadEvents(pInfo, ds, 0, priv->naxes, > valuators); > } > > - priv->oldState.proximity = ds->proximity; > if (ds->proximity) > wcmUpdateOldState(pInfo, ds, x, y); > else > -- > 1.9.3 > > > ------------------------------------------------------------------------------ > Time is money. Stop wasting it! Get your web API in 5 minutes. > www.restlet.com/download > http://p.sf.net/sfu/restlet > _______________________________________________ > Linuxwacom-devel mailing list > Linuxwacom-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel ------------------------------------------------------------------------------ Time is money. Stop wasting it! Get your web API in 5 minutes. www.restlet.com/download http://p.sf.net/sfu/restlet _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel