[Mesa-dev] [PATCH] xserver/glx/dri2: use new GLX/DRI2 swap event types
Michel Dänzer
michel at daenzer.net
Tue May 10 01:46:17 PDT 2011
On Fre, 2011-05-06 at 14:01 -0700, Jesse Barnes wrote:
> On Fri, 6 May 2011 13:00:19 -0700
> Jeremy Huddleston <jeremyhu at apple.com> wrote:
>
> > Yeah, that looks about right.
> >
> > This in combination with the latest version of "xserver/glx/dri2: use new GLX/DRI2 swap event types"
> >
> > Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>
>
> Ok here's a more complete patch. It touches GLX and involves drawable
> lifetimes, which I'm not that familiar with, so careful review
> appreciated. Note the X vs GLX drawable ID switching in the DRI2 event
> handler (DRI2 just deals with X IDs).
>
> Kristian and Jeremy, is this a good basis for moving the Apple stuff
> over to a client GLX drawable type?
>
> --
> Jesse Barnes, Intel Open Source Technology Center
>
> From fae63609dd4fd20ccd84d2211787136bb9a1da05 Mon Sep 17 00:00:00 2001
> From: Jesse Barnes <jbarnes at virtuousgeek.org>
> Date: Fri, 6 May 2011 10:31:24 -0700
> Subject: [PATCH] GLX/DRI2: handle swap event swap count wrapping
>
> Create a new GLX drawable struct to track client related info, and add a
> wrap counter to it drawable and track it as we receive events. This
> allows us to support the full 64 bits of the event structure we pass to
> the client even though the server only gives us a 32 bit count.
>
> Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
[...]
> @@ -582,6 +584,14 @@ struct glx_display
> #endif
> };
>
> +struct glx_drawable {
> + XID xDrawable;
> + XID drawable;
> +
> + uint32_t lastEventSbc;
> + int64_t eventSbcWrap;
Shouldn't eventSbcWrap be unsigned?
> diff --git a/src/glx/glxext.c b/src/glx/glxext.c
> index 02652cb..03c05a3 100644
> --- a/src/glx/glxext.c
> +++ b/src/glx/glxext.c
> @@ -106,7 +106,7 @@ XEXT_GENERATE_ERROR_STRING(__glXErrorString, __glXExtensionName,
> static Bool
> __glXWireToEvent(Display *dpy, XEvent *event, xEvent *wire)
> {
> - struct glx_display *glx_dpy = __glXInitialize(dpy);
> + struct glx_display *glx_dpy = __glXInitialize(dpy);
>
> if (glx_dpy == NULL)
> return False;
Superfluous whitespace-only change.
Looks good to me otherwise, but I'm not really familiar with the
client-side GLX drawable lifetime either.
--
Earthling Michel Dänzer | http://www.vmware.com
Libre software enthusiast | Debian, X and DRI developer
More information about the xorg-devel
mailing list