[PATCH xserver 15/24] kdrive/ephyr: Use NotifyFd for XCB connection input
Daniel Martin
consume.noise at gmail.com
Sun Sep 20 23:58:16 PDT 2015
On 21 September 2015 at 08:16, Keith Packard <keithp at keithp.com> wrote:
> Eliminates polling every 20ms for device input.
>
> Signed-off-by: Keith Packard <keithp at keithp.com>
> ---
> hw/kdrive/ephyr/ephyr.c | 10 +++++++++-
> hw/kdrive/ephyr/ephyr.h | 3 ---
> hw/kdrive/ephyr/hostx.c | 6 ++++++
> hw/kdrive/ephyr/hostx.h | 2 ++
> hw/kdrive/ephyr/os.c | 1 -
> 5 files changed, 17 insertions(+), 5 deletions(-)
>
> diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
> index e6e72d3..bf921e9 100644
> --- a/hw/kdrive/ephyr/ephyr.c
> +++ b/hw/kdrive/ephyr/ephyr.c
> @@ -1193,7 +1193,7 @@ ephyrProcessConfigureNotify(xcb_generic_event_t *xev)
> #endif /* RANDR */
> }
>
> -void
> +static void
> ephyrPoll(void)
> {
> xcb_connection_t *conn = hostx_get_xcbconn();
> @@ -1341,10 +1341,17 @@ MouseInit(KdPointerInfo * pi)
> return Success;
> }
>
> +static void
> +kdrive_notify_conn(int fd, int ready, void *data)
> +{
> + ephyrPoll();
> +}
ephyrPoll() isn't used anywhere else. You could merge it into
kdrive_notify_conn().
> static Status
> MouseEnable(KdPointerInfo * pi)
> {
> ((EphyrPointerPrivate *) pi->driverPrivate)->enabled = TRUE;
> + SetNotifyFd(hostx_get_fd(), kdrive_notify_conn, X_NOTIFY_READ, NULL);
> return Success;
> }
>
> @@ -1352,6 +1359,7 @@ static void
> MouseDisable(KdPointerInfo * pi)
> {
> ((EphyrPointerPrivate *) pi->driverPrivate)->enabled = FALSE;
> + RemoveNotifyFd(hostx_get_fd());
> return;
> }
>
> diff --git a/hw/kdrive/ephyr/ephyr.h b/hw/kdrive/ephyr/ephyr.h
> index 18bfe11..f5015f6 100644
> --- a/hw/kdrive/ephyr/ephyr.h
> +++ b/hw/kdrive/ephyr/ephyr.h
> @@ -168,9 +168,6 @@ Bool
> Bool
> ephyrCreateColormap(ColormapPtr pmap);
>
> -void
> - ephyrPoll(void);
> -
> #ifdef RANDR
> Bool
> ephyrRandRGetInfo(ScreenPtr pScreen, Rotation * rotations);
> diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
> index dc265d5..09e9333 100644
> --- a/hw/kdrive/ephyr/hostx.c
> +++ b/hw/kdrive/ephyr/hostx.c
> @@ -1103,6 +1103,12 @@ hostx_get_screen(void)
> }
>
> int
> +hostx_get_fd(void)
> +{
> + return xcb_get_file_descriptor(HostX.conn);
> +}
> +
> +int
> hostx_get_window(int a_screen_number)
> {
> EphyrScrPriv *scrpriv;
> diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
> index 93aaa50..65d3ebb 100644
> --- a/hw/kdrive/ephyr/hostx.h
> +++ b/hw/kdrive/ephyr/hostx.h
> @@ -198,4 +198,6 @@ int hostx_has_dri(void);
> int hostx_has_glx(void);
> #endif /* XF86DRI */
>
> +int hostx_get_fd(void);
> +
> #endif /*_XLIBS_STUFF_H_*/
> diff --git a/hw/kdrive/ephyr/os.c b/hw/kdrive/ephyr/os.c
> index 0dbcbb8..b481d0a 100644
> --- a/hw/kdrive/ephyr/os.c
> +++ b/hw/kdrive/ephyr/os.c
> @@ -45,5 +45,4 @@ EphyrInit(void)
>
> KdOsFuncs EphyrOsFuncs = {
> .Init = EphyrInit,
> - .pollEvents = ephyrPoll,
> };
> --
> 2.5.0
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
More information about the xorg-devel
mailing list