(In reply to comment #21)
> (In reply to comment #20)
> > > - don't use 0 as the "no range" marker. there might be touchpads (one day) that
> > > have negative ranges. In the server we use valid ranges instead, i.e. (min >=
> > > max) designates an unset range.
> > >
> > Ok, now if the edges of the area match the physical ones (priv->minx, etc.) the
> > property is unset.
>
> Still not quite sure about this. The reason is that the kernel doesn't
> actually guaranteed a min/max range so it can be confusing during debugging
> whether a value is supposed to be sent now or not.
> I suggest to add another variable to the private rec that contains flags if an
> area is set for a given edge. (Have a look at
> afb60a0b2497c5d08cbd1739fa8ae6585c428881 for an example).
>
> The initial value of the property can be empty (which means the property
> handler must allow a prop->size 0 to unset). Again, this is an explicit signal
> that no edges are set. The question is however how we then signal through the
> property if only one edge is actually set.
>
> Any suggestions?
>
Why don't we just modify what I wrote in the 1st draft?
Let's consider is_inside_active_area():
In the 1st draft I tested priv->synpara.area_left_edge > 0 but I could simply test that priv->synpara.area_left_edge != 0 (etc.) so as to allow negative ranges:
if ((priv->synpara.area_left_edge != 0) && (x < priv->synpara.area_left_edge))
etc.
And of course I would have to modify SetProperty() (properties.c) accordingly:
This way things should work as you suggested and we won't need additional variables in the private rec.
What do you think?
> wouldn't it be easier to only call HandleTapProcessing conditional to
> !inside_active_area? or does that mess with the state?
>
That's the first thing that I tried but it made the touchpad unusable.
> the man page entry is a bit brief, please explain what the options actually
> do (and the property as well).
>
Sure, I wasn't sure about how verbose the man page could be.
(In reply to comment #21) 08cbd1739fa8ae6 585c428881 for an example).
> (In reply to comment #20)
> > > - don't use 0 as the "no range" marker. there might be touchpads (one day) that
> > > have negative ranges. In the server we use valid ranges instead, i.e. (min >=
> > > max) designates an unset range.
> > >
> > Ok, now if the edges of the area match the physical ones (priv->minx, etc.) the
> > property is unset.
>
> Still not quite sure about this. The reason is that the kernel doesn't
> actually guaranteed a min/max range so it can be confusing during debugging
> whether a value is supposed to be sent now or not.
> I suggest to add another variable to the private rec that contains flags if an
> area is set for a given edge. (Have a look at
> afb60a0b2497c5d
>
> The initial value of the property can be empty (which means the property
> handler must allow a prop->size 0 to unset). Again, this is an explicit signal
> that no edges are set. The question is however how we then signal through the
> property if only one edge is actually set.
>
> Any suggestions?
>
Why don't we just modify what I wrote in the 1st draft?
Let's consider is_inside_ active_ area(): area_left_ edge > 0 but I could simply test that priv->synpara. area_left_ edge != 0 (etc.) so as to allow negative ranges:
In the 1st draft I tested priv->synpara.
if ((priv- >synpara. area_left_ edge != 0) && (x < priv->synpara. area_left_ edge))
etc.
And of course I would have to modify SetProperty() (properties.c) accordingly:
if ((((area[0] != 0) && (area[1] != 0)) && (area[0] > area[1]) ) || (((area[2] != 0) && (area[3] != 0)) && (area[2] > area[3])))
This way things should work as you suggested and we won't need additional variables in the private rec.
What do you think?
> wouldn't it be easier to only call HandleTapProcessing conditional to active_ area? or does that mess with the state?
> !inside_
>
That's the first thing that I tried but it made the touchpad unusable.
> the man page entry is a bit brief, please explain what the options actually
> do (and the property as well).
>
Sure, I wasn't sure about how verbose the man page could be.