On 04/24/2015 08:51 PM, x414e54 wrote:
On Fri, Apr 24, 2015 at 6:22 PM, Pekka Paalanen <[email protected]> wrote:
Then apps would need to know what the accel paramaters mean, which
requires us to lock down the acceleration logic and mathematical
functions in the protocol specification. I don't think that is
something Wayland wants to specify.

I intended acceleration would just be a bool on/off.

As a practical matter the applications that want a slow scrollbar want
*exactly* the same acceleration as before, just that the resulting position
is scaled down. Forcing them to replicate the code that the compositor is
doing seem mistaken.

Speed would be as a scale/percent and does not effect acceleration.
You could call it whatever, "movement scale", etc, so this should be
acceptable?

I believe we are both questioning the idea that you use the raw device api to "grab" the mouse, as this would apparently bypass the acceleration code. It sounds like you are proposing keeping the acceleration result somehow accessable.

A boolean acceleration on/off will not work because it is asynchronous. Both the accelerated and unaccelerated positions must be available directly as events (though it is ok if you don't get the unaccelerated ones until you turn on grab and it then replays any missing ones since the grabbing event.

On Sat, Apr 25, 2015 at 5:06 AM, Bill Spitzak <[email protected]> wrote:
That is not sufficient as the application may want to put much more complex
rules on how the pointer moves (such as limiting it to a rectangle).

Limiting to a specific rectangle is slightly different as you cannot
do that by warping a cursor.

Sure you can. Clamp the x and y to be inside the rectangle and warp the cursor to that position.

Possibly you are thinking that the warped cursor position somehow effects the events? That may explain why the really simple api I am proposing seems to be confusing people.

What I want when a grab happens is the events continue UNCHANGED. You get exactly the same events including xy and relative motion, no matter how you move the cursor around. The cursor image is completely unrelated to the position being used to produce events.

If you could change the cursor to drag including the scrollbar and
then confine the cursor to an area, also including the speed settings
this should allow the compositor todo everything.

Something like all in one api call:

wl_pointer::start_drag

serial
     uint - serial of the implicit grab on the origin
surface
     wl_surface - image to drag under the cursor
speed
     fixed_t - movement scale
acceleration
     enum - turn acceleration on off for this drag.
confinement_region
     wl_region - cursor movement region within the draggable surface
(allows null)
drag_region
     wl_region - movement region of the draggable surface (allows null)

That is vastly too complicated. In particular it requires the client to draw the scrollbar slider using a subwindow, thus making support of this go deep into the low level drawing routines of the client, which is really painful. Also does not account for any kind of intermittent movement of the scrollbar.

I think you would agree a uniform FPS is more important than in-sync scrollbars?

No, I absolutely 100% disagree.

Synchronized updating so things don't vibrate or shift is more important than FPS. It is even stated as part of Wayland's basic design criteria: "every frame is perfect".
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to