[PATCH weston 1/2] compositor-x11: stop using input_loop

Pekka Paalanen ppaalanen at gmail.com
Wed Mar 30 09:13:15 UTC 2016


On Thu, 24 Mar 2016 11:16:54 -0500
Derek Foreman <derekf at osg.samsung.com> wrote:

> On 24/03/16 10:10 AM, Pekka Paalanen wrote:
> > From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> > 
> > X11 is the only backend that still used the input event loop.
> > 
> > This patch is an identical rewrite of
> > 6deb09ef8a72164947cdfa5f2414e292c7672c9c which was then reverted in
> > 3bebe6461a9de5d8c5c7da0261c70cd250fa1fde for reasons unrecorded. This
> > patch is also the revert of 22ba60e514e074e4bdee1529aa8d22600712f001.  
> 
> I couldn't remember why 6deb09ef8a was reverted, so I dug through the
> mailing list archives and found a rather amusing thread between you and
> I. :)
> 
> Reviewed-by: Derek Foreman <derekf at osg.samsung.com>
> 
> For both patches.

Cool, pushed:
   94cb06a..87953b7  master -> master

> (Now, is it worthwhile to revert d540f4bb to remove the unneeded
> complexity?)

I probably wouldn't. It shouldn't cause harm, but I'd lean on not
changing it.


Thanks,
pq


> > Originally input devices were moved into their own event loop in
> > 7ea10864c2fc7370f5ada88a3fc91ab5f188da00 and the reason for that is
> > explained in 7dbf5e2ea744bde56b65ba45b935b77df4a783e1.
> > 
> > The idea behind the input event loop was that it would be beneficial to
> > process and relay input events to clients just once during an output
> > repaint cycle, because clients cannot update the image on screen any
> > faster anyway. All input events also carry a timestamp, so we didn't
> > lose any timing information. This was supposed to save power by reducing
> > the process wake-ups and context switches. There was also a mention of
> > reducing lag.
> > 
> > However, the concept of an output repaint loop does not really work out
> > when you have several outputs, but the input devices are not exclusive
> > to a certain output.
> > 
> > The logic for driving the input event loop in Weston core was written to
> > assume a single output. When you have multiple outputs with independent
> > repaint cycles, the input event loop handling becomes fairly random, one
> > output freezes input while another output thaws it, etc.
> > 
> > The DRM backend stopped using the input event loop when it started using
> > the libinput input backend, which became the default in
> > 3f5e906268448f2d84b115c5f3d22165ce0021b1, and the old code was finally
> > ripped out in 823ad33ef34fa32b14b300d987fb9d2e2a42e9c4.
> > 
> > Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> > ---
> >  src/compositor-x11.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/compositor-x11.c b/src/compositor-x11.c
> > index f1cb71b..91a7c2e 100644
> > --- a/src/compositor-x11.c
> > +++ b/src/compositor-x11.c
> > @@ -1576,6 +1576,7 @@ x11_backend_create(struct weston_compositor *compositor,
> >  {
> >  	struct x11_backend *b;
> >  	struct x11_output *output;
> > +	struct wl_event_loop *loop;
> >  	struct weston_config_section *section;
> >  	int i, x = 0, output_count = 0;
> >  	int width, height, scale, count;
> > @@ -1705,8 +1706,9 @@ x11_backend_create(struct weston_compositor *compositor,
> >  		x = pixman_region32_extents(&output->base.region)->x2;
> >  	}
> >  
> > +	loop = wl_display_get_event_loop(compositor->wl_display);
> >  	b->xcb_source =
> > -		wl_event_loop_add_fd(compositor->input_loop,
> > +		wl_event_loop_add_fd(loop,
> >  				     xcb_get_file_descriptor(b->conn),
> >  				     WL_EVENT_READABLE,
> >  				     x11_backend_handle_event, b);
> >   
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 811 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20160330/4fb4bba4/attachment.sig>


More information about the wayland-devel mailing list