platform/upstream/xorg-server.git
10 years agoos: restrict display names to digits
Peter Hutterer [Mon, 13 Jan 2014 07:00:23 +0000 (17:00 +1000)]
os: restrict display names to digits

We call atoi() on the server's display to get the socket but otherwise use the
unmodified display for log file name, xkb paths, etc. This results in
Xorg :banana being the equivalent of Xorg :0, except for the log files being
in /var/log/Xorg.banana.log. I'm not sure there's a good use-case for this
behaviour.

Check the display for something that looks reasonable, i.e. digits only, but
do allow for :0.0 (i.e. digits, followed by a period, followed by one or two
digits).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
10 years agoephyr: don't allow a shift+ctrl keygrab if mod1 was enabled
Peter Hutterer [Thu, 9 Jan 2014 05:29:23 +0000 (15:29 +1000)]
ephyr: don't allow a shift+ctrl keygrab if mod1 was enabled

Xephyr wants ctrl+shift to grab the window, but that conflicts with
ctrl+alt+shift key combos. Remember the modifier state on key presses and
releases, if mod1 is pressed, we need ctrl, shift and mod1 released
before we allow a shift-ctrl grab activation.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
10 years agoXi: Ensure DeviceChanged is emitted after grabs are deactivated
Carlos Garnacho [Thu, 2 Jan 2014 20:33:30 +0000 (21:33 +0100)]
Xi: Ensure DeviceChanged is emitted after grabs are deactivated

When a grab on a slave device is deactivated, the master device must
be checked, just in case there were events from other devices while
the slave device was stolen away by the passive grab. This may
introduce misbehaviors on mismatching valuators and device features
later on UpdateDeviceState().

Signed-off-by: Carlos Garnacho <carlosg@gnome.org>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
10 years agoCheckPassiveGrabsOnWindow() needs to handle NULL return value from AllocGrab()
Alan Coopersmith [Tue, 7 Jan 2014 01:10:40 +0000 (17:10 -0800)]
CheckPassiveGrabsOnWindow() needs to handle NULL return value from AllocGrab()

CheckPassiveGrabsOnWindow() calls AllocGrab() which can fail and return NULL.
This return value is not checked, and can cause NULL pointer dereferences.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
10 years agoGrabDevice() needs to handle NULL return value from AllocGrab()
Alan Coopersmith [Tue, 7 Jan 2014 01:10:39 +0000 (17:10 -0800)]
GrabDevice() needs to handle NULL return value from AllocGrab()

GrabDevice() calls AllocGrab() which can fail and return NULL.
This return value is not checked, and can cause NULL pointer dereferences.

Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
10 years agoIf AllocGrab() fails to set up grab, don't copy to a NULL grab
Alan Coopersmith [Tue, 7 Jan 2014 01:10:38 +0000 (17:10 -0800)]
If AllocGrab() fails to set up grab, don't copy to a NULL grab

If either the initial calloc or the xi2mask_new fails, grab is NULL,
but if a src grab is passed in, it was always being written to by
CopyGrab (and if that failed, dereferenced again in teardown).

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
10 years agoBump version to 1.15.0 xorg-server-1.15.0
Keith Packard [Fri, 27 Dec 2013 17:50:55 +0000 (09:50 -0800)]
Bump version to 1.15.0

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agopresent: Set complete notify mode to Skip as needed
Keith Packard [Thu, 12 Dec 2013 23:48:08 +0000 (15:48 -0800)]
present: Set complete notify mode to Skip as needed

Skipped present pixmap calls were not setting the mode to
PresentCompleteModeSkip for skipped operations.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agopresent: Don't abandon presents which are already queued for flip
Keith Packard [Thu, 12 Dec 2013 22:52:35 +0000 (14:52 -0800)]
present: Don't abandon presents which are already queued for flip

Presents which are not marked 'queued' and are in the window present
list are waiting for the flip event; discarding those won't work very
well (it'll end up trashing displayed content for the next frame), so
skip over those when looking for duplicate frame presents

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agopresent: Handle PresentOptionAsync for copy mode
Keith Packard [Thu, 12 Dec 2013 22:17:40 +0000 (14:17 -0800)]
present: Handle PresentOptionAsync for copy mode

Check for Async flag and execute immediately if set, otherwise wait
for the next appropriate vblank before copying.

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoBump version to 1.14.99.905 (1.15 RC5) xorg-server-1.14.99.905
Keith Packard [Thu, 19 Dec 2013 22:31:07 +0000 (14:31 -0800)]
Bump version to 1.14.99.905 (1.15 RC5)

Another week, another RC. This should be the last before 1.15 final

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoMerge remote-tracking branch 'whot/for-keith'
Keith Packard [Thu, 19 Dec 2013 22:14:59 +0000 (14:14 -0800)]
Merge remote-tracking branch 'whot/for-keith'

10 years agoMerge remote-tracking branch 'jeremyhu/master'
Keith Packard [Mon, 16 Dec 2013 17:27:57 +0000 (09:27 -0800)]
Merge remote-tracking branch 'jeremyhu/master'

10 years agoconfigure: Fix a typo near dri3/shmfence detection
Adam Jackson [Thu, 12 Dec 2013 15:57:40 +0000 (10:57 -0500)]
configure: Fix a typo near dri3/shmfence detection

" is not the mate of ].

Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agoglx: Add null pointer protection to __glGetProcAddress
Adam Jackson [Fri, 13 Dec 2013 20:07:48 +0000 (15:07 -0500)]
glx: Add null pointer protection to __glGetProcAddress

This can't happen when GLX is the backing window system, but can
elsewhere.  We may as well protect against it at a high level.

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agopresent: Don't use the major/minor version from the protocol headers
Adam Jackson [Fri, 13 Dec 2013 16:39:16 +0000 (11:39 -0500)]
present: Don't use the major/minor version from the protocol headers

We want to advertise the version we implement, not the version the
protocol headers happen to describe.

Reviewed-by: Jasper St. Pierre <<jstpierre@mecheye.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agodri3: Don't use the major/minor version from the protocol headers
Adam Jackson [Fri, 13 Dec 2013 16:36:38 +0000 (11:36 -0500)]
dri3: Don't use the major/minor version from the protocol headers

We want to advertise the version we implement, not the version the
protocol headers happen to describe.

Reviewed-by: Jasper St. Pierre <<jstpierre@mecheye.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agodri3: Guard against buggy clients
Adam Jackson [Fri, 13 Dec 2013 16:28:59 +0000 (11:28 -0500)]
dri3: Guard against buggy clients

There's nothing to stop a client from sending these requests to screens
without DRI3 support, and if they do, we'll crash.  Let's not do that.

Reviewed-by: Jasper St. Pierre <<jstpierre@mecheye.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agoconfigure.ac: Add PRESENT_LIB to XQUARTZ_LIBS
Jeremy Huddleston Sequoia [Fri, 13 Dec 2013 09:39:44 +0000 (01:39 -0800)]
configure.ac: Add PRESENT_LIB to XQUARTZ_LIBS

Undefined symbols for architecture x86_64:
  "_present_extension_init", referenced from:
      _staticExtensions in libXquartz.a(miinitext.o)
  "_present_register_complete_notify", referenced from:
      ___glXregisterPresentCompleteNotify in libglx.a(glxcmds.o)

Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
10 years agoXQuartz: Use asl_log_descriptor to log stdout/stderr of child processes
Jeremy Huddleston Sequoia [Sat, 7 Dec 2013 09:36:33 +0000 (01:36 -0800)]
XQuartz: Use asl_log_descriptor to log stdout/stderr of child processes

Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
10 years agodarwin: Don't leave stdin/stdout closed
Jeremy Huddleston Sequoia [Sat, 7 Dec 2013 09:14:37 +0000 (01:14 -0800)]
darwin: Don't leave stdin/stdout closed

<rdar://problem/15609419>

Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
10 years agodix: fix check for grab type
Peter Hutterer [Tue, 3 Dec 2013 00:14:51 +0000 (10:14 +1000)]
dix: fix check for grab type

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
10 years agoXi: ungrab device when releasing a passive grab without ButtonReleaseMask (#71878)
Peter Hutterer [Mon, 2 Dec 2013 22:36:45 +0000 (08:36 +1000)]
Xi: ungrab device when releasing a passive grab without ButtonReleaseMask (#71878)

If an touch triggers an async button grab and that grab does not have the
ButtonReleaseMask set, the TouchEnd is never delivered, deliveries is 0  and
the grab is never deactivated.

If the grab is pointer async and keyboard sync, the keyboard events are stuck
in EnqueueEvent until some other pointer event terminates the grab.

Change this to check for the number of listeners. If we're about to deliver a
TouchEnd to a passive pointer grab, the number of listeners is already 1 -
pointer grabs always accept so other listeners were removed.

X.Org Bug 71878 <http://bugs.freedesktop.org/show_bug.cgi?id=71878>

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
10 years agoXi: Don't ActivateEarlyAccept POINTER_REGULAR listeners
Ben Gamari [Fri, 22 Nov 2013 02:24:20 +0000 (21:24 -0500)]
Xi: Don't ActivateEarlyAccept POINTER_REGULAR listeners

Bug #71878 describes a bug resulting in the server ceasing to respond to
keyboard input after a touch event. The problem might be the following:

DeliverTouchBeginEvent tries to deliver an event to a listener of type
LISTENER_POINTER_REGULAR, taking the following if branch,

    if (listener->type == LISTENER_POINTER_REGULAR ||
        listener->type == LISTENER_POINTER_GRAB) {
        rc = DeliverTouchEmulatedEvent(dev, ti, ev, listener, client, win,
                                       grab, xi2mask);
        if (rc == Success) {
            listener->state = LISTENER_IS_OWNER;
            /* async grabs cannot replay, so automatically accept this touch */
            if (dev->deviceGrab.grab &&
                dev->deviceGrab.fromPassiveGrab &&
                dev->deviceGrab.grab->pointerMode == GrabModeAsync)
                ActivateEarlyAccept(dev, ti);
        }
        goto out;
    }

DeliverTouchEmulatedEvent succeeds.  The deviceGrab meets all
three of the conditions of the inner if, enters
ActivateEarlyAccept which then fails due to,

    BUG_RETURN(ti->listeners[0].type != LISTENER_GRAB &&
               ti->listeners[0].type != LISTENER_POINTER_GRAB);

That is, despite listener->type == LISTENER_POINTER_REGULAR. With my
non-existent knowledge of XINPUT, it seems like the solution here
might be to only ActivateEarlyAccept when listener->type ==
LISTENER_POINTER_GRAB.

Signed-off-by: Ben Gamari <bgamari.foss@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
10 years agopresent: recursively set window pixmaps on flip
Keith Packard [Tue, 10 Dec 2013 19:27:47 +0000 (11:27 -0800)]
present: recursively set window pixmaps on flip

Newly created windows inherit the pixmap of their parent, similarly,
reparenting a tree inherits the pixmap of the destination tree.

Making present preserve the invariant that unredirected windows always
have the same pixmap as their parent ensures that the above cases work
correctly.

v2: name the recursive function to 'set_tree_pixmap' instead of 'set_window_pixmap'

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agoBump version to 1.14.99.904 (1.15 RC4) xorg-server-1.14.99.904
Keith Packard [Tue, 10 Dec 2013 18:29:11 +0000 (10:29 -0800)]
Bump version to 1.14.99.904 (1.15 RC4)

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agohw/xwin/glx: Rewrite WGL wrappers after Xserver conversion to direct GL dispatch
Jon TURNEY [Thu, 27 Sep 2012 17:59:45 +0000 (18:59 +0100)]
hw/xwin/glx: Rewrite WGL wrappers after Xserver conversion to direct GL dispatch

v1: Rewrite by Marc Haesen of the WGL wrapper function generation script to use
Khronos group XML.

v2: Remove -dispatchheader option, since dispatch.h doesn't exist anymore, use
the private glapi interface to construct the GL dispatch table for the native
WGL thunks.

v3:
Rewrite to generate shims for the OpenGL 1.2.1 (GL 1.2 + GL_ARB_imaging
+GL_ARB_multitexture + GL_ARB_texture_compression(?)) functions the server links
directly with rather than libGL.

These shims dispatch to either the mesa GL DLL, or a thunking DLL containing
cdecl-to-stcall wrapper functions for the native GL DLL.

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agoglx: Consistently use ARB-suffixed names for ARB_multitexture functions
Jon TURNEY [Fri, 6 Dec 2013 14:00:21 +0000 (14:00 +0000)]
glx: Consistently use ARB-suffixed names for ARB_multitexture functions

At the moment we have a mix of ARB and non-ARB suffixed forms for ARB_multitexture functions
e.g. glMultiTexCoord1fvARB and glMultiTexCoord1dv

Consistently use the ARB-suffixed form, assuming that is present in all libGL
which provide the OpenGL 1.2.1 ABI we expect to be able to directly link with.

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agoephyr: Fix compilation when ./configure'd with --enable-debug
Jon TURNEY [Sun, 1 Dec 2013 22:25:46 +0000 (22:25 +0000)]
ephyr: Fix compilation when ./configure'd with --enable-debug

/jhbuild/checkout/xorg/xserver/hw/kdrive/ephyr/ephyr.c: In function ‘ephyrProcessMouseMotion’:
/jhbuild/checkout/xorg/xserver/hw/kdrive/ephyr/ephyr.c:946:188: error: ‘ephyrCurScreen’ undeclared (first use in this function)
/jhbuild/checkout/xorg/xserver/hw/kdrive/ephyr/ephyr.c: In function ‘ephyrProcessButtonPress’:
/jhbuild/checkout/xorg/xserver/hw/kdrive/ephyr/ephyr.c:980:186: error: ‘ephyrCurScreen’ undeclared (first use in this function)
/jhbuild/checkout/xorg/xserver/hw/kdrive/ephyr/ephyr.c: In function ‘ephyrProcessButtonRelease’:
/jhbuild/checkout/xorg/xserver/hw/kdrive/ephyr/ephyr.c:1007:186: error: ‘ephyrCurScreen’ undeclared (first use in this function)

Fix ephyr compilation when ./configure'd with --enable-debug after commit
46cf6bf5692ef751ec9d17ae2292565d4b13f14b, some instances of ephyrCurScreen were
not converted to screen->pScreen->myNum.

v2: Don't use a trivial local variable which will be unused when ./configure'd
with --disable-debug

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agoconfigure.ac: Link XWin with present extension if we are building with it enabled
Jon TURNEY [Fri, 29 Nov 2013 14:29:20 +0000 (14:29 +0000)]
configure.ac: Link XWin with present extension if we are building with it enabled

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agoxquartz/glx: Convert to non-glapi dispatch
Adam Jackson [Tue, 3 Dec 2013 18:45:43 +0000 (13:45 -0500)]
xquartz/glx: Convert to non-glapi dispatch

CGL doesn't have anything like glXGetProcAddress, and the old code just
called down to dlsym in any case.  It's a little mind-warping since
dlopening a framework actually loads multiple dylibs, but that's just
how OSX rolls.

Signed-off-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
10 years agodrisw: Wire up GetProcAddress
Adam Jackson [Tue, 3 Dec 2013 20:03:13 +0000 (15:03 -0500)]
drisw: Wire up GetProcAddress

Signed-off-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
10 years agodri2: wire up GetProcAddress
Adam Jackson [Tue, 3 Dec 2013 20:02:57 +0000 (15:02 -0500)]
dri2: wire up GetProcAddress

Signed-off-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
10 years agoglx: Untangle the prototypes around the GetProcAddress thunk
Adam Jackson [Tue, 3 Dec 2013 20:01:44 +0000 (15:01 -0500)]
glx: Untangle the prototypes around the GetProcAddress thunk

Signed-off-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
Reviewed-by: Jon TURNEY <jon.turney@dronecode.org.uk>
10 years agoglx: Remove function stubs
Adam Jackson [Tue, 3 Dec 2013 18:11:52 +0000 (13:11 -0500)]
glx: Remove function stubs

Now that we're calling non-1.2 ABI things by function pointer this is no
longer needed.

Signed-off-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
Reviewed-by: Jon TURNEY <jon.turney@dronecode.org.uk>
10 years agoglx: Convert non-generated function pointer thunking
Adam Jackson [Tue, 3 Dec 2013 18:11:09 +0000 (13:11 -0500)]
glx: Convert non-generated function pointer thunking

Same concept as the generated code conversion.

Signed-off-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Jon TURNEY <jon.turney@dronecode.org.uk>
10 years agoglx: Convert generated code function pointer thunking
Adam Jackson [Tue, 3 Dec 2013 17:40:24 +0000 (12:40 -0500)]
glx: Convert generated code function pointer thunking

We're meant not to call these by name due to ABI.  Rather than try to
generate a bunch of little stub functions that do the lookup, just
inline it all directly into the calling function.

This does not cache results.  That's fine, this is not a performance
path, and if we're atop WGL then we effectively have to do this every
time anyway because wglGetProcAddress results are context-dependent.

Signed-off-by: Adam Jackson <ajax@redhat.com>
Jon TURNEY <jon.turney@dronecode.org.uk>

10 years agoDepend on latest glproto (1.4.17)
Keith Packard [Tue, 10 Dec 2013 15:09:17 +0000 (07:09 -0800)]
Depend on latest glproto (1.4.17)

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agodamageext: Die if we can't create the Xinerama resource type
Adam Jackson [Mon, 9 Dec 2013 18:16:01 +0000 (13:16 -0500)]
damageext: Die if we can't create the Xinerama resource type

Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agodamageext: Xineramify (v7)
Adam Jackson [Mon, 16 Sep 2013 19:17:26 +0000 (15:17 -0400)]
damageext: Xineramify (v7)

v7: Don't bother making resources for the backing listeners. [keithp]

This is now slightly unlike how other resources are xineramified.  We
create N+1 internal damage listeners, one that's a real resource and
reflects the protocol view, and then one per backend screen where the
report function piles onto the protocol view.  The internal listeners
are not stored in the resource database directly, they just hang off the
xinerama resource. We don't wrap Subtract at the dispatch level, but we
do extend it for the Xinerama case to clip to the root window geometry.

As a result of the N+1 design here, the damage reports we generate are
not quite minimal.  However they are indistinguishable from sequential
rendering events happening before the client hears damage, and we don't
need to add a post-dispatch callback just for this one extension.

Add is probably (still) somewhat broken since it will only hit screen 0,
but Add really only exists for DRI1's sake, and DRI1 disables itself
with Xinerama enabled anyway.  In the absence of a use case, I'm leaving
it unwrapped under Xinerama; if someone wants to define how it ought to
work, be my guest.

Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agofixes: Fix PanoramiXSetWindowShapeRegion for root windows (v2)
Adam Jackson [Mon, 4 Nov 2013 22:49:34 +0000 (17:49 -0500)]
fixes: Fix PanoramiXSetWindowShapeRegion for root windows (v2)

Root windows in Xinerama are in the coordinate space of their root window
pixmap, not in protocol space.

v2: Only translate for root windows, sice the window shape is
drawable-relative.

Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agofixes: Fix PanoramiXSetPictureClipRegion for root windows (v2)
Adam Jackson [Mon, 4 Nov 2013 22:49:33 +0000 (17:49 -0500)]
fixes: Fix PanoramiXSetPictureClipRegion for root windows (v2)

Root windows in Xinerama are in the coordinate space of their root
window pixmap, not in protocol space.  This fixes 'xcompmgr -n' when
Xinerama is active.

v2: Only translate for root windows, since the clip origin is
drawable-relative.

Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agocomposite: Fix COW creation for Xinerama (v2)
Adam Jackson [Thu, 7 Nov 2013 18:59:30 +0000 (13:59 -0500)]
composite: Fix COW creation for Xinerama (v2)

Say you have two 800x600 screens left/right of each other.  A window
that's 200x200 at +700+0 in protocol coordinate space will appear to be
at -100+0 in the coordinate space of the right hand screen.  Put another
way: windows are in the coordinate space of their root window pixmap.

We weren't doing this translation for the COW, so when rendering came in
to it you'd see the top-left chunk of the COW on all screens.  Cool
effect and all, but wrong.

v2: Only translate when Xinerama is active [keithp]

Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agoxinerama: Export the screen region
Adam Jackson [Tue, 29 Oct 2013 14:44:07 +0000 (10:44 -0400)]
xinerama: Export the screen region

damageext wants this so it can intersect subtract requests against the
root window geometry.

Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agoxfree86: Prefer fbdev to vesa
Adam Jackson [Fri, 15 Nov 2013 20:13:31 +0000 (15:13 -0500)]
xfree86: Prefer fbdev to vesa

On UEFI machines you'd prefer fbdev to grab efifb instead of vesa trying
to initialize and failing in a way we can't unwind from.  On BIOS
machines this is harmless: either there is an fbdev driver and it'll
probably be more capable, or there's not and vesa will kick in anyway.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agocomposite: Don't double-redirect if someone asks for backing store twice
Adam Jackson [Tue, 5 Nov 2013 15:12:28 +0000 (10:12 -0500)]
composite: Don't double-redirect if someone asks for backing store twice

v2: Belt-and-suspenders the unredirection path [vsyrjala]

Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agocomposite: Automatically enable backing store support on the screen
Adam Jackson [Tue, 5 Nov 2013 15:08:17 +0000 (10:08 -0500)]
composite: Automatically enable backing store support on the screen

... unless you explicitly disabled it with -bs on the command line, or
with the corresponding thing in xorg.conf.

v2: Drop a bogus hunk from compChangeWindowAttributes [vsyrjala]
v3: s/TRUE/WhenMapped/ [jcristau]

Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agobs: Set the screen's bs support level to WhenMapped
Adam Jackson [Tue, 5 Nov 2013 14:58:17 +0000 (09:58 -0500)]
bs: Set the screen's bs support level to WhenMapped

Since we're using RedirectAutomatic to do this, we don't actually
preserve contents when unmapped.

v2: Don't say WhenMapped if Composite didn't initialize [vsyrjala]

Reviewed-by: Julien Cristau <jcristau@debian.org>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agosmartsched: Tweak the default scheduler intervals
Adam Jackson [Tue, 5 Nov 2013 15:20:04 +0000 (10:20 -0500)]
smartsched: Tweak the default scheduler intervals

A default timeslice of 20ms means a pathological client can ruin up to
two frames per scheduler tick.  And a fifth of a second is just insane.

Pick two different numbers out of the hat.  A 5ms slice means you can
probably keep up with two or three abusive clients, and letting it burst
to 15ms should give you about all the timeslice you need for a
fullscreen game (that's doing server-side rendering for some reason).

If you're running on a system with a 10ms granularity on SIGALRM, then
this effectively changes the intervals to 10ms and 30ms.  Which is still
better, just not as better.

I suspect this is about as good as we can do without actually going
preemptive, which is an entire other nightmare.

Reviewed-by: Julien Cristau <jcristau@debian.org>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agodri3: Disable when Xinerama is active
Adam Jackson [Fri, 8 Nov 2013 14:22:37 +0000 (09:22 -0500)]
dri3: Disable when Xinerama is active

Pretty sure this can't work.

Reviewed-by: Julien Cristau <jcristau@debian.org>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agodri2: Disable when Xinerama is active
Adam Jackson [Fri, 8 Nov 2013 14:20:29 +0000 (09:20 -0500)]
dri2: Disable when Xinerama is active

Would only work on ScreenRec 0, which means it's broken.

Reviewed-by: Julien Cristau <jcristau@debian.org>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agopresent: Disable when Xinerama is active
Adam Jackson [Fri, 8 Nov 2013 14:06:59 +0000 (09:06 -0500)]
present: Disable when Xinerama is active

Among much else Present depends on RANDR types, and RANDR isn't properly
Xinerama-aware yet anyway.

Reviewed-by: Julien Cristau <jcristau@debian.org>
Signed-off-by: Adam Jackson <ajax@redhat.com>
10 years agoglx: Fix incorrect use of dri_interface.h version defines in driver probing.
Eric Anholt [Fri, 15 Nov 2013 01:40:47 +0000 (17:40 -0800)]
glx: Fix incorrect use of dri_interface.h version defines in driver probing.

If we extend __DRI_CORE or __DRI_SWRAST in dri_interface.h to allow a
new version, it shouldn't make old server code retroactively require
the new version from swrast drivers.

Notably, new Mesa defines __DRI_SWRAST version 4, but we still want to
be able to probe version 1 drivers, since we don't use any features
beyond version 1 of the struct.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
10 years agoglx: Fix incorrect use of dri_interface.h version defines in extensions.
Eric Anholt [Fri, 15 Nov 2013 01:40:46 +0000 (17:40 -0800)]
glx: Fix incorrect use of dri_interface.h version defines in extensions.

Those defines are so you can compile-time check "do I have a
dri_interface.h that defines this new field of the struct?"  You don't
want the server to claim it implements the new struct just because you
installed a new copy of Mesa.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
10 years agoconfigure.ac: Fixup for "Require libpciaccess for int10"
Jon TURNEY [Fri, 29 Nov 2013 12:26:43 +0000 (12:26 +0000)]
configure.ac: Fixup for "Require libpciaccess for int10"

On 16/11/2013 01:00, Connor Behan wrote:
> A --disable-pciaccess build will fail with an int10 module other than
> stub.
>
> Signed-off-by: Connor Behan <connor.behan-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> ---
>  configure.ac | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/configure.ac b/configure.ac
> index 5e621e0..a843770 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1822,6 +1822,9 @@ if test "x$XORG" = xyes; then
>   if test "x$CONFIG_UDEV_KMS" = xyes; then
>   AC_MSG_ERROR([Platform device enumeration requires libpciaccess])
>   fi
> + if test "x$INT10" != xstub; then
> + AC_MSG_ERROR([Cannot build int10 without libpciaccess])
> + fi
>   fi
>   AC_MSG_RESULT([$PCI])
>

This causes my build to fail where --disable-int10-module --disable-pciaccess
is the default (as INT10 still has the default value 'x86emu')

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
Tested-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agopresent: Report damage when flipping
Keith Packard [Tue, 26 Nov 2013 20:18:12 +0000 (12:18 -0800)]
present: Report damage when flipping

Limit damage to the 'update' region.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agopresent: Also set the root window pixmap when flipping
Keith Packard [Tue, 26 Nov 2013 20:10:48 +0000 (12:10 -0800)]
present: Also set the root window pixmap when flipping

This makes sure that things like software cursors continue to work
while the screen is flipped.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agopresent: Clear target_crtc if driver lacks Present support
Keith Packard [Tue, 26 Nov 2013 20:06:57 +0000 (12:06 -0800)]
present: Clear target_crtc if driver lacks Present support

If the driver doesn't have the necessary hooks for Present, then the
target_crtc needs to be set to NULL to make sure the extension uses
the present_fake code.

Signed-off-by: Keith Packard <keithp@keithp.com>
Tested-by: Fredrik Höglund <fredrik@kde.org>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agopresent: Send GLX_BufferSwapComplete events from present extension
Keith Packard [Fri, 22 Nov 2013 06:48:31 +0000 (22:48 -0800)]
present: Send GLX_BufferSwapComplete events from present extension

This allows GL to support the GLX_INTEL_swap_event extension.

v2: Return GLX_BLIT_COMPLETE_INTEL for unknown swap types

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agopresent: Set window pixmap to flipped pixmap
Keith Packard [Tue, 26 Nov 2013 07:06:08 +0000 (23:06 -0800)]
present: Set window pixmap to flipped pixmap

This makes other drawing to the window appear on the screen.

Note that no child windows can be affected because only full-screen
windows are eligible for flipping, and so we only need to set pixmap
for the window itself.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agopresent: Leave vblank on window list until flip complete
Keith Packard [Tue, 26 Nov 2013 07:10:17 +0000 (23:10 -0800)]
present: Leave vblank on window list until flip complete

If the window is destroyed, then we've got cleanup work to do, even if
the vblank has already been executed -- we need to clear the window
pointer so that we don't try to deliver events to it.

Leaving it on the window list meant that when walking that list, we
need to know whether the vblank is waiting to be executed or waiting
for the flip to complete, so a new 'queued' flag was added to the
vblank to distinguish between the two states.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agopresent: Add a debug output line when skipping a pending present
Keith Packard [Tue, 26 Nov 2013 11:07:55 +0000 (03:07 -0800)]
present: Add a debug output line when skipping a pending present

When an application provides two pixmaps for the same MSC, the
previous one is skipped. This just dumps out some information at that point

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agomiext/sync: Handle libxshmfence API change
Keith Packard [Fri, 22 Nov 2013 06:45:18 +0000 (22:45 -0800)]
miext/sync: Handle libxshmfence API change

libxshmfence had an unfortunate 'int32_t' type for the mapped fence.
That changed to exposing a 'struct shmfence' instead, which is nice
and opaque and offers fine type checking across the API.

This patch requires the newer version of the library and uses
the new interface type.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Julien Cristau <jcristau@debian.org>
10 years agomiext: Move SyncShm FDs out of the way of clients
Keith Packard [Fri, 22 Nov 2013 06:12:34 +0000 (22:12 -0800)]
miext: Move SyncShm FDs out of the way of clients

Applications may end up allocating a bunch of shmfence objects, each
of which uses a file descriptor, which must be kept open lest some
other client ask for a copy of it later on.

Lacking an API that can turn a memory mapping back into a file
descriptor, about the best we can do is push the file descriptors out
of the way of other X clients so that we don't run out of the ability
to accept new connections.

This uses fcntl F_GETFD to push the FD up above MAXCLIENTS.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Julien Cristau <jcristau@debian.org>
10 years agoXext: Use SHMDIR and O_TMPFILE when creating mapping files
Keith Packard [Wed, 13 Nov 2013 05:16:33 +0000 (14:16 +0900)]
Xext: Use SHMDIR and O_TMPFILE when creating mapping files

ShmCreateSegment asks for a file descriptor for a memory mapped file
created by the X server. This patch uses O_TMPFILE where available,
and also uses the SHMDIR directory to store the files, both for the
O_TMPFILE and mkstemp cases.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Julien Cristau <jcristau@debian.org>
10 years agoSelect directory for MIT-SHM temp files at configure time
Keith Packard [Wed, 13 Nov 2013 03:17:10 +0000 (12:17 +0900)]
Select directory for MIT-SHM temp files at configure time

By default, this looks through a list of directories to find one which
exists, but can be overridden with --with-shared-memory-dir=PATH

This patch doesn't actually do anything with this directory, just
makes it available in the configuration

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Julien Cristau <jcristau@debian.org>
10 years agoXdmx: Initialize DMX extension even if not built with GLX support
Alan Coopersmith [Tue, 26 Nov 2013 06:19:34 +0000 (22:19 -0800)]
Xdmx: Initialize DMX extension even if not built with GLX support

dmxAddExtensions takes an argument to determine if it should just
initialize the DMX extension, or both DMX & GLX, but if GLX wasn't
compiled in, the entire call was #ifdef'ed out, leaving the DMX
extension unavailable.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Julien Cristau <jcristau@debian.org>
Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoconfigure.ac: Require libpciaccess for int10
Connor Behan [Sat, 16 Nov 2013 01:00:40 +0000 (17:00 -0800)]
configure.ac: Require libpciaccess for int10

A --disable-pciaccess build will fail with an int10 module other than
stub.

Signed-off-by: Connor Behan <connor.behan@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoconfigure.ac: Require libpciaccess for platform bus support
Connor Behan [Sat, 16 Nov 2013 01:00:20 +0000 (17:00 -0800)]
configure.ac: Require libpciaccess for platform bus support

There is currently no reason to build with --enable-config-udev-kms and
--disable-pciaccess but anyone who tries this should know that the build
will fail.

Signed-off-by: Connor Behan <connor.behan@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoconfigure.ac: Add whitespace near PCI configuration
Connor Behan [Sat, 16 Nov 2013 01:00:00 +0000 (17:00 -0800)]
configure.ac: Add whitespace near PCI configuration

Signed-off-by: Connor Behan <connor.behan@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoBump release to 1.14.99.903 (1.15 RC3) xorg-server-1.14.99.903
Keith Packard [Sun, 24 Nov 2013 06:22:37 +0000 (22:22 -0800)]
Bump release to 1.14.99.903 (1.15 RC3)

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agomiext: Ensure xshmfence is only called when driver supports it
Keith Packard [Tue, 19 Nov 2013 06:36:17 +0000 (22:36 -0800)]
miext: Ensure xshmfence is only called when driver supports it

This provides a place for drivers to insert their own FD-based
SyncFence implementations, and prevents applications from using DRI3
SyncFence creation functions unless the driver has some support for
them.

Signed-off-by: Keith Packard <keithp@keithp.com>
Tested-by: Fredrik Höglund <fredrik@kde.org>
10 years agoXext: Recover from miSyncInitFenceFromFD failure without crashing
Keith Packard [Tue, 19 Nov 2013 06:33:27 +0000 (22:33 -0800)]
Xext: Recover from miSyncInitFenceFromFD failure without crashing

miSyncDestroyFence must not be called unless miSyncInitFence has been
invoked, so if miSyncInitFenceFromFD fails, we must free the fence
manually.

Signed-off-by: Keith Packard <keithp@keithp.com>
Tested-by: Fredrik Höglund <fredrik@kde.org>
10 years agoglx/glxdri2: Unwrap EnterVT/LeaveVT upon CloseScreen
Chris Wilson [Sat, 5 Oct 2013 07:47:03 +0000 (08:47 +0100)]
glx/glxdri2: Unwrap EnterVT/LeaveVT upon CloseScreen

In a similar spirit to

commit d75e8146c414bfd512ba5dbd4a83acb334bbe19b
Author: Keith Packard <keithp@keithp.com>
Date:   Mon Jul 12 16:01:34 2010 -0700

    Unwrap/rewrap EnterVT/LeaveVT completely, Fixes 28998

we need to unwrap our pScrn->EnterVT/LeaveVT hooks around server
regeneration or else we cause an infinite recursion on the next VT
switch afterwards.

Bugzilla: https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/1235516
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoxnest: Ignore GetImage() error in xnestGetImage() (v3)
Keith Packard [Sun, 24 Nov 2013 00:19:46 +0000 (16:19 -0800)]
xnest: Ignore GetImage() error in xnestGetImage() (v3)

(I found an amended version of this patch and applied the difference
here - keithp)

v3: Don't call Xsync before restoring error handler as any errors
    generated by XGetImage() should be processed when this call
    returns as suggested by Jamey Sharp <jamey@minilop.net>

Signed-off-by: Egbert Eich <eich@freedesktop.org>
Reviewed-by: Jamey Sharp <jamey@minilop.net>
10 years agopresent: When unflipping, copy to flip window rather than screen
Keith Packard [Wed, 20 Nov 2013 06:13:54 +0000 (22:13 -0800)]
present: When unflipping, copy to flip window rather than screen

unflip happens after the clip lists have been updated, so instead of
smashing the whole screen and drawing over other windows, just draw to
the original flip window; it'll have the right clip list and so the
copy will work just fine.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agopresent: Block for wait_fence in present_execute
Keith Packard [Tue, 12 Nov 2013 02:03:42 +0000 (18:03 -0800)]
present: Block for wait_fence in present_execute

Pend presentation until wait_fence is also triggered by having the
SyncFence trigger invoke present_execute once triggered.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agopresent: Signal destroyed flip window with vblank->window == NULL
Keith Packard [Sat, 9 Nov 2013 20:36:47 +0000 (12:36 -0800)]
present: Signal destroyed flip window with vblank->window == NULL

This eliminates dereferencing freed window pointers when there is a
flip for that window in progress. The flip will complete, and then
immediately get undone (as we can't stop an in-progress flip).

Remove the vblank->window_destroyed field as we can signal this with
vblank->window == NULL instead.

Change check to vblank->window == NULL in:

present_flip_notify

Add check for vblank->window == NULL in:
present_vblank_notify
present_execute

present_flip_notify was also using vblank->window->drawable.pScreen,
so stop doing that and use vblank->screen instead.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agopresent: Ignore event_id 0 from driver vblank notify
Keith Packard [Sat, 9 Nov 2013 20:33:02 +0000 (12:33 -0800)]
present: Ignore event_id 0 from driver vblank notify

We use event_id 0 to mean 'no such event'; if a driver sends us that
event_id, make sure we don't accidentally match it.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agopresent: Round fake MSC computations intead of truncating
Keith Packard [Thu, 7 Nov 2013 22:17:12 +0000 (14:17 -0800)]
present: Round fake MSC computations intead of truncating

If the timer fired too early, we'd sometimes mis-compute the MSC for
fake vblanks. Rounding the computation to the nearest MSC fixes this nicely.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
10 years agoconfigure: allow for --enable-libunwind and --disable-libunwind
Peter Hutterer [Mon, 18 Nov 2013 22:07:09 +0000 (08:07 +1000)]
configure: allow for --enable-libunwind and --disable-libunwind

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoMerge remote-tracking branch 'whot/for-keith'
Keith Packard [Thu, 14 Nov 2013 08:02:04 +0000 (17:02 +0900)]
Merge remote-tracking branch 'whot/for-keith'

10 years agomieq: Bump default queue size to 512
Adam Jackson [Tue, 29 Oct 2013 16:09:27 +0000 (12:09 -0400)]
mieq: Bump default queue size to 512

Based on some bugzilla scraping I did around November 2012.  Of xserver
bugs in Red Hat bugzilla with an EQ size message in the log, the
distribution looked like:

String                      | Matches
-------------------------------------
Increasing EQ size to 512   | 460
Increasing EQ size to 1024  | 52
Increasing EQ size to 2048  | 6
Increasing EQ size to 4096  | 0

Most of the "512" ones appear to be mostly harmless, some relatively
expensive path in either rendering or resource destruction simply taking
too long due to external pressures like paging or CPU contention.  So
let's raise the initial queue size, both to reduce the number of
spurious abrt reports and to drop fewer events in all but the most
pathological cases.

Signed-off-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoxfree86: return NULL for compat output if no outputs.
Dave Airlie [Tue, 29 Oct 2013 16:09:26 +0000 (12:09 -0400)]
xfree86: return NULL for compat output if no outputs.

With outputless GPUs showing up we crash here if there are not outputs
try and recover with a bit of grace.

Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agotest: build the touch test only when building Xorg
Dan Horák [Tue, 29 Oct 2013 16:09:25 +0000 (12:09 -0400)]
test: build the touch test only when building Xorg

Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Dan Horák <dan@danny.cz>
Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoinclude: export key_is_down and friends
Peter Hutterer [Wed, 13 Nov 2013 07:14:11 +0000 (17:14 +1000)]
include: export key_is_down and friends

VNC needs key_is_down to check if a key is processed as down before it
simulates various key releases. Make it available, because I seriously can't
be bothered thinking about how to rewrite VNC to not need that.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Keith Packard <keithp@keithp.com>
10 years agoStop including inline assembly .il file for Solaris Studio builds
Alan Coopersmith [Tue, 12 Nov 2013 22:46:04 +0000 (14:46 -0800)]
Stop including inline assembly .il file for Solaris Studio builds

Since all the inb/outb/etc. use in the X server itself (except for
xf86SlowBcopy) has been replaced by calls to libpciaccess, we no
longer need to pass inline assembly files to replace the gcc inline
assembly from hw/xfree86/common/compiler.h when building Xorg itself.

The .il files are still generated and installed in the SDK for the
benefit of drivers who may use them.

Binary diff of before and after showed that xf86SlowBcopy was the
only function changed across the Xorg binary and all modules built
in the Xserver build, it just calls the outb() function now instead
of having the outb instructions inlined, making it a slightly slower
bcopy.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agokdrive: fix cursor jumps on CursorOffScreen behavior
Peter Hutterer [Fri, 4 Oct 2013 00:55:52 +0000 (10:55 +1000)]
kdrive: fix cursor jumps on CursorOffScreen behavior

This patch fixes cursor jumps when there is a grab on the Xephyr window and
the pointer moves outside the window.

So on two side-by-side 640x480 screens, a coordinate of 0/481
triggers KdCursorOffscreen.

If the delta between two screens is 0, they share the same offset for
that dimension. When searching for the new screen, the loop always rules out
the current screen. So we get to the second screen, trigger the conditions
where dy <= 0 and decide that this new screen is the correct one. The result
is that whenever KdCursorOffScreen is called, the pointer jumps to the other
screen.

Change to check for dy < 0 etc. so that the cursor stays on the same screen if
there is no other screen at the target location.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
10 years agokdrive: modify ephyr events to use POINTER_DESKTOP and scale them to that
Peter Hutterer [Tue, 29 Oct 2013 04:24:41 +0000 (14:24 +1000)]
kdrive: modify ephyr events to use POINTER_DESKTOP and scale them to that

A multi-head Xephyr instance has the pointer stuck on one screen
because of bad coordinate calculation. The coordinates passed to
GetPointerEvents are per-screen, so the cursor gets stuck on the left-most
screen by default.

Adjust and mark the events as POINTER_DESKTOP, so the DIX
can adjust them accordingly.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
10 years agokdrive: handle WxH as valid geometry spec
Keith Packard [Thu, 14 Nov 2013 03:21:54 +0000 (13:21 +1000)]
kdrive: handle WxH as valid geometry spec

If a screen size was specified as WxH, the loop returned early and kdOrigin
was never advanced. Thus, screen->origin was always 0 (or whatever was given
at the -origin commandline flag).

If a screen size was given with a bit depth (WxHxD), kdOrigin would always
advance by the current screen, offsetting the next screen.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
10 years agoephyr: xcb_connect returns an error, not NULL
Peter Hutterer [Tue, 29 Oct 2013 04:33:56 +0000 (14:33 +1000)]
ephyr: xcb_connect returns an error, not NULL

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
10 years agoUpdate to version 1.14.99.902 xorg-server-1.14.99.902
Keith Packard [Thu, 14 Nov 2013 01:26:20 +0000 (10:26 +0900)]
Update to version 1.14.99.902

1.15 RC2

Signed-off-by: Keith Packard <keithp@keithp.com>
10 years agoxext: Fix shmint.h to not use headers outside of sdk_HEADERS
Keith Packard [Tue, 12 Nov 2013 22:01:45 +0000 (07:01 +0900)]
xext: Fix shmint.h to not use headers outside of sdk_HEADERS

shmint.h is part of sdk_HEADERS, and so can't use anything not
included in sdk_HEADERS.

busfault.h includes dix-config.h which is not. Leave the use of
struct busfault in shmint.h and move the include of busfault.h to
shm.c.

protocol-versions.h is not part of sdk_HEADERS, so instead of using
that, just use XTRANS_SEND_FDS to choose whether to expose the fd
passing requests directly.

Reported-by: Julien Cristau <jcristau@debian.org>
Signed-off-by: Keith Packard <keithp@keithp.com>
Tested-by: Knut Petersen <Knut_Petersen@t-online.de>
Reviewed-by: Julien Cristau <jcristau@debian.org>
v2: also avoid using protocol-versions.h

11 years agoxfree86: Fix build without libpciaccess
Jeremy Huddleston Sequoia [Fri, 8 Nov 2013 22:55:33 +0000 (14:55 -0800)]
xfree86: Fix build without libpciaccess

Regression fix from commit 04ab07ca19236d6c9a947e065fb69b0dd0d16639

Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
Reviewed-by: Connor Behan <connor.behan@gmail.com>
11 years agoEnable XTRANS_SEND_FDS on Solaris too.
Alan Coopersmith [Fri, 8 Nov 2013 05:08:56 +0000 (21:08 -0800)]
Enable XTRANS_SEND_FDS on Solaris too.

Requires passing through the __EXTENSIONS__ and _XOPEN_SOURCE defines
in order to expose the msg_control members in struct msghdr.

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
11 years agoAvoid conflicts with Solaris <sys/regset.h> defines that clash with our names
Alan Coopersmith [Fri, 8 Nov 2013 05:05:33 +0000 (21:05 -0800)]
Avoid conflicts with Solaris <sys/regset.h> defines that clash with our names

When building on Solaris with _XOPEN_SOURCE set to a recent XPG release,
<stdlib.h> and other core headers start including <sys/regset.h>, which
has a bunch of unfortunately named macros such as "CS", "ES", etc. for
x86 & x64 registers which clash with existing variable & struct member
names in Xorg - so #undef these so they don't interfere with our use.

(Yes, have filed a bug against the system headers for exposing these,
 but this solves the problem for building on existing releases.)

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
11 years agoProper spelling of MAP_ANONYMOUS is MAP_ANON.
Keith Packard [Mon, 11 Nov 2013 23:48:41 +0000 (15:48 -0800)]
Proper spelling of MAP_ANONYMOUS is MAP_ANON.

The former doesn't exist on BSD and the latter is available everywhere
AFAIK (checked Solaris and Linux).

You also might want to wrap that line ;).

Reported-by: Mark Kettenis <mark.kettenis@xs4all.nl>
Signed-off-by: Keith Packard <keithp@keithp.com>
11 years agoGet rid of the rest of the FD passing code when XTRANS_SEND_FDS isn't set
Keith Packard [Thu, 7 Nov 2013 23:18:28 +0000 (15:18 -0800)]
Get rid of the rest of the FD passing code when XTRANS_SEND_FDS isn't set

req_fds and SetReqFds in include/dixstruct.h

ReadFdFromClient, WriteFdToClient and the FD flushing in os/io.c

Signed-off-by: Keith Packard <keithp@keithp.com>
11 years agoMerge remote-tracking branch 'jeremyhu/master'
Keith Packard [Mon, 11 Nov 2013 23:26:12 +0000 (15:26 -0800)]
Merge remote-tracking branch 'jeremyhu/master'

11 years agopresent: Don't try to initialize when building without present support
Adam Jackson [Thu, 7 Nov 2013 17:01:41 +0000 (12:01 -0500)]
present: Don't try to initialize when building without present support

There's a --disable-present, so it'd be nice if it worked.

Signed-off-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>
Reviewed-by: Mark Kettenis <kettenis@openbsd.org>
Signed-off-by: Keith Packard <keithp@keithp.com>