summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-09-22xinerama: Implement graphics exposures for window->pixmap copies (v4)Adam Jackson1-10/+60
This code is using GetImage to accumulate a logical view of the window image (since the windows will be clipped to their containing screen), and then PutImage to load that back into the pixmap. What it wasn't doing was constructing a region for the obscured areas of the window and emitting graphics exposures for same. v2: Fix coordinate translation when the source is the root window v3: Create sourceBox with the right coordinates initially instead of translating (Keith Packard) v4: Clamp the region to 15 bits to avoid overflow (Keith Packard) Signed-off-by: Adam Jackson <ajax@redhat.com> (cherry picked from commit e337de2d488a124e5fee0fdcb882567b68f1767d)
2017-09-21parser: Fix crash when xf86nameCompare(s1 = x, s2 = NULL)Adam Jackson1-0/+2
Signed-off-by: Adam Jackson <ajax@redhat.com> (cherry picked from commit f1f865e909090406841a9b9416ea6259a75c2086)
2017-09-21glamor: Check glamor_set_destination_drawable() return valueOlivier Fourdan7-44/+66
Check the value returned by glamor_set_destination_drawable() and use the fallback code path where possible. Bugzilla: https://bugzilla.redhat.com/1417575 Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> (cherry picked from commit 455051a0f1d2bc84f605c325f647bd64d414c47d)
2017-09-21glamor: glamor_set_destination_drawable() can failOlivier Fourdan2-3/+10
The fbo_array of a given glamor pixmap can be NULL in some cases, as glamor_create_fbo_array() can fail to allocate the FBO array. If this is the case, glamor_pixmap_fbo_at() will return NULL even though the box index is valid, and glamor_set_destination_drawable() simply assumes glamor_pixmap_fbo_at() will return an FBO prior to pass the value to glamor_set_destination_pixmap_fbo(), which will segfault. We need a way for glamor_set_destination_drawable() to fail safely and let the caller know about the failure. Add a boolean return value to glamor_set_destination_drawable() for that purpose. Bugzilla: https://bugzilla.redhat.com/1417575 Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> (cherry picked from commit 04b4bad7c048fd077fe839f10634c99ef1e488af)
2017-09-21Xephyr: Check screen resources creation successOlivier Fourdan2-2/+9
If the screen pixmap or the corresponding texture creation with glamor fails, exit cleanly with an error message instead of segfaulting. Fixes: https://bugzilla.redhat.com/1431633 Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> (cherry picked from commit b0ce1d088a863492f5de11e4dbde10af4261d892)
2017-09-21glamor: Check for NULL pixmap in glamor_get_pixmap_texture()Olivier Fourdan1-0/+3
glamor_create_pixmap() would return a NullPixmap if the given size is larger than the maximum size of a pixmap. But glamor_get_pixmap_texture() won't check if the given pixmap is non-null, leading to a segfault if glamor_create_pixmap() failed. This can be reproduced by passing Xephyr a very large screen width, e.g.: $ Xephyr -glamor -screen 32768x1024 :10 (EE) (EE) Backtrace: (EE) 0: Xephyr (OsSigHandler+0x29) (EE) 1: /lib64/libpthread.so.0 (__restore_rt+0x0) (EE) 2: Xephyr (glamor_get_pixmap_texture+0x30) (EE) 3: Xephyr (ephyr_glamor_create_screen_resources+0xc6) (EE) 4: Xephyr (ephyrCreateResources+0x98) (EE) 5: Xephyr (dix_main+0x275) (EE) 6: /lib64/libc.so.6 (__libc_start_main+0xf1) (EE) 7: Xephyr (_start+0x2a) (EE) 8: ? (?+0x2a) [0x2a] (EE) (EE) Segmentation fault at address 0x0 (EE) Fatal server error: (EE) Caught signal 11 (Segmentation fault). Server aborting (EE) Aborted (core dumped) Bugzilla: https://bugzilla.redhat.com/1431633 Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> (cherry picked from commit f40ff18c96e02ff18a367bf53feeb4bd8ee952a0)
2017-03-15xserver 1.19.3Adam Jackson1-3/+3
Signed-off-by: Adam Jackson <ajax@redhat.com>
2017-03-15os: Fix iteration over busfaultsChris Wilson1-6/+7
Fixes a regression from commit 41da295eb50fa08eaacd0ecde99f43a716fcb41a Author: Keith Packard <keithp@keithp.com> Date: Sun Nov 3 13:12:40 2013 -0800 Trap SIGBUS to handle truncated shared memory segments that causes the SIGBUS handler to fail to chain up correctly and corrupts nearby memory instead. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit acdb5bf2de57c0080d2a6e730c788a0a428e13dc)
2017-03-15render: Fix out of boundary heap accessTobias Stoeckmann1-0/+4
ProcRenderCreateRadialGradient and ProcRenderCreateConicalGradient must be protected against an integer overflow during length check. This is already included in ProcRenderCreateLinearGradient since the fix for CVE-2008-2362. This can only be successfully exploited on a 32 bit system for an out of boundary read later on. Validated by using ASAN. Reviewed-by: Adam Jackson <ajax@redhat.com> (cherry picked from commit ac15d4cecca377c5c31ab852c39bbd554ca48fe2)
2017-03-15glamor: Fix missing declaration in dash vertex shaderDr.-Ing. Dieter Jurzitza1-0/+1
Fixes a GLSL compilation error: Failed to compile VS: 0:13(43): error: `pos' undeclared 0:13(14): error: operands to arithmetic operators must be numeric 0:13(13): error: operands to arithmetic operators must be numeric [1.19: Squash in Michel's typo fix from 0c1574d9] Tested-by: Stefan Dirsch <sndirsch@suse.com> Reviewed-by: Adam Jackson <ajax@redhat.com> (cherry picked from commit d8161aeb50891ae10c5656487ce8f982deed5f9f) (cherry picked from commit 0c1574d9882a91b2c1a046bf4ac5a9b138a37965)
2017-03-13xwayland: Monitor client states to destroy callbacksOlivier Fourdan1-8/+52
In XWayland, dri3_send_open_reply() is called from a sync callback, so there is a possibility that the client might be gone when we get to the callback eventually, which leads to a crash in _XSERVTransSendFd() from WriteFdToClient() . Client resources can survive the client itself, in which case we may end up in our sync callback trying to access client's data after it's been freed/reclaimed. Add a ClientStateCallback handler to monitor the client state changes and clear the sync callback set up by the glamor drm code if any. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1416553 Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=100040 Tested-by: Mark B <mark.blakeney@bullet-systems.net> Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> (cherry picked from commit 937527f9798d573ec82c2c508821899c229c018f)
2017-03-13xwayland: clear cursor frame callbackOlivier Fourdan1-2/+12
After an X cursor is unrealized, the seat's corresponding x_cursor is cleared, but if a frame callback was pending at the time, it will remain and thus prevent any further cursor update, leaving the window with no cursor. Make sure to destroy the frame callback, if any, when that occurs, so that next time a cursor needs to be set, it won't be ignored for a frame callback that will never be triggered. Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1389327 Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by: Rui Matos <tiagomatos@gmail.com> (cherry picked from commit d4b7e0eaa4b2e97ce1dec653a2ae7d9621fe1431)
2017-03-10present: disable page flip only when a slave crtc is activeQiang Yu2-2/+14
This prevents the tearing of moving window in a composite WM desktop when output slave is attached but none of its crtc is really active. [1.19: Also fix DMX_LIBS= in configure.ac so it still links - ajax] Signed-off-by: Qiang Yu <Qiang.Yu@amd.com> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> (cherry picked from commit bb9128fdc86decd6f6e3b0e145011a8c08b1d2b5)
2017-03-10Revert "prime: Sync shared pixmap from root window instead of screen pixmap"Chris Wilson1-12/+4
This reverts commit b5b292896f647c85f03f53b20b2f03c0e94de428. This breaks the concept of the screen->pixmap_dirty_list as it no longer tracks the relationship between the PixmapDirtyUpdate src and slave_dst, for the supposed convenience of not tracking present flips. Bugzilla: https://bugs.freedesktop.org/100086 Reviewed-by: Adam Jackson <ajax@redhat.com>
2017-03-10Revert "present: Allow flipping with PRIME slave outputs"Adam Jackson1-0/+4
This reverts commit 5c1dd4eba833ecf4ea789c8319b4e25ea1e1fab9. Bugzilla: https://bugs.freedesktop.org/100086 Reviewed-by: Adam Jackson <ajax@redhat.com>
2017-03-02xserver 1.19.2, no, reallyAdam Jackson1-1/+1
Signed-off-by: Adam Jackson <ajax@redhat.com>
2017-03-02xserver 1.19.2Adam Jackson1-2/+2
Signed-off-by: Adam Jackson <ajax@redhat.com>
2017-03-02os: Squash missing declaration warning for timingsafe_memcmpAdam Jackson1-0/+3
timingsafe_memcmp.c:21:1: warning: no previous prototype for ‘timingsafe_memcmp’ [-Wmissing-prototypes] timingsafe_memcmp(const void *b1, const void *b2, size_t len) Signed-off-by: Adam Jackson <ajax@redhat.com> (cherry picked from commit 5c44169caed811e59a65ba346de1cadb46d266ec)
2017-03-02Revert "xserver 1.19.2"Adam Jackson1-2/+2
Apparently I need to fight make distcheck some more, so let's not pretend this is released yet. This reverts commit 0b4112bc753a5bd5306f0c67e13e26e3f1c72211.
2017-03-02xserver 1.19.2Adam Jackson1-2/+2
Signed-off-by: Adam Jackson <ajax@redhat.com>
2017-03-02xwayland: do not set checkRepeat on master kbdOlivier Fourdan1-5/+0
keyboard_check_repeat() fetches the XWayland seat from the dev->public.devicePrivate do do its thing. If a key event is sent programmatically through Xtest, our device is the virtual core keyboard and that has a dev->public.devicePrivate of NULL, leading to a segfault in keyboard_check_repeat(). This is the case with "antimicro" which sends key events based on the joystick buttons. Don't set the checkRepeat handler on the VCK since it cannot possibly work anyway and it has no effect on the actual checkRepeat intended functionality. Bugzilla: https://bugzilla.redhat.com/1416244 Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit fe5c340046c8cf755b92763a49b2dc475e856a76)
2017-03-02xwayland: Make sure we have a focus windowOlivier Fourdan1-0/+6
During the InitInput() phase, the wayland events get dequeued so we can possibly end up calling dispatch_pointer_motion_event(). If this occurs before xwl_seat->focus_window is set, it leads to a NULL pointer derefence and a segfault. Check for xwl_seat->focus_window in both pointer_handle_frame() and relative_pointer_handle_relative_motion() prior to calling dispatch_pointer_motion_event() like it's done in pointer_handle_motion(). Bugzilla: https://bugzilla.redhat.com/1410804 Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 8c9909a99292b2fb4a86de694bb0029f61e35662)
2017-03-01Brown bag commit to fix 957e8d (arc4random_buf() support)Matthieu Herrb2-1/+2
- typo in #ifdef check - also need to add AC_CHECK_FUNCS([arc4random_buf]) Reported-by Eric Engestrom. Thanks Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Matthieu Herrb <matthieu@herrb.eu> (cherry picked from commit 386fbbe410a1168b724136e54cf3bd37fb64ad4e)
2017-02-28auth: remove AuthToIDFunc and associated functions. Not used anymore.Matthieu Herrb5-56/+3
And the current code for MitToId has a use-after-free() issue. [Also remove the actual implementations - ajax] Signed-off-by: Matthieu Herrb <matthieu@herrb.eu> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> (cherry picked from commit 2855f759b1e7bf7f5e57cac36c1f0d0e5ac1a683)
2017-02-28Use arc4random_buf(3) if available to generate cookies.Matthieu Herrb3-0/+15
Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Matthieu Herrb <matthieu@herrb.eu> (cherry picked from commit 957e8db38f27932d353e86e9aa69cf16778b18f1)
2017-02-28Use timingsafe_memcmp() to compare MIT-MAGIC-COOKIES CVE-2017-2624Matthieu Herrb5-2/+56
Provide the function definition for systems that don't have it. Signed-off-by: Matthieu Herrb <matthieu@herrb.eu> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> (cherry picked from commit d7ac755f0b618eb1259d93c8a16ec6e39a18627c)
2017-02-28os: log a bug whenever WriteToClient is called from the input threadPeter Hutterer3-0/+12
The input thread should generate events, not send them. Make it easier to find the instances where it's doing so. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Tested-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Olivier Fourdan <ofourdan@redhat.com> (cherry picked from commit 1b12249fd6d4d3b566043d556503f3f625b9b4ba)
2017-02-23damage: Validate source pictures bound to windows before unwrappingMichel Dänzer2-1/+11
The lower layers also do this, but no damage may be reported there, since we unwrap before calling down. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99220 Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commit 38696ea56854e055c31bd2730adfc7c39aa115b0)
2017-02-23present: Allow flipping with PRIME slave outputsMichel Dänzer1-4/+0
Works fine now. Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> (cherry picked from commit 542d9f6807ac06b70f564ccab10af69fa21a1221)
2017-02-23prime: Sync shared pixmap from root window instead of screen pixmapMichel Dänzer1-7/+24
The screen pixmap doesn't receive updates while there's a Present flip window. [1.19: Squashed in a6566f9e to avoid intermediate regression - ajax] Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> (cherry picked from commit b5b292896f647c85f03f53b20b2f03c0e94de428) (cherry picked from commit a6566f9e4dbf9ea9568a14e22cb5d004e10dbd4d)
2017-02-23glamor: Two pass won't work on memory pixmapsOlivier Fourdan1-0/+4
When selecting "CA_TWO_PASS" in glamor_composite_clipped_region() when the hardware does not support "GL_ARB_blend_func_extended", we call glamor_composite_choose_shader() twice in a row, which in turn calls glamor_pixmap_ensure_fbo(). On memory pixmaps, the first call will set the FBO and the second one will fail an assertion in glamor_upload_picture_to_texture() because the FBO is already set. Bail out earlier when the mask pixmap is in memory and the hardware capabilities would require to use two pass, so that the assertion is not failed and the rendering is correct. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99346 Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Eric Anholt <eric@anholt.net> (cherry picked from commit 86463981361064dd0352ec215abf1696ce7fc5ea)
2017-02-23xwayland: Add hack for FWXGA resolution #99574Svitozar Cherepii1-0/+7
For some applications (like fullscreen games) it matters for XRandr resolution to be correctly set and equal to root window resolution. In XServer there is already hack for this, adapted it for XWayland. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=99574 Signed-off-by: Svitozar Cherepii <razotivs@gmail.com> Tested-by: Svitozar Cherepii <razotivs@gmail.com> Acked-by: Olivier Fourdan <ofourdan@redhat.com> (cherry picked from commit 1c78bec9ca3cd1975a38bf5ebdba7dea65b309ab)
2017-02-23xwayland: CRTC should support all rotationsOlivier Fourdan1-1/+8
If the Wayland compositor sets a rotation on the output, Xwayland translates the transformation as an xrandr rotation for the given output. However, if the rotation is not supported by the CRTC, this is not a valid setup and xrandr queries will fail. Pretend we support all rotations and reflections so that the configuration remains a valid xrandr setup. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99663 Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Adam Jackson <ajax@redhat.com> (cherry picked from commit afeace27d3818274b75d59375771dc964d2f56bb)
2017-02-23xwayland: Apply output rotation for screen sizeOlivier Fourdan1-12/+16
Previously, we would swap the width/height of the Xwayland output based on the output rotation, so that the overall screen size would match the actual rotation of each output. Problem is the RandR's ConstrainCursorHarder() handler will also apply the output rotation, meaning that when the output is rotated, the pointer will be constrained within the wrong dimension. Moreover, XRandR assumes the original output width/height are unchanged when the output is rotated, so by changing the Xwayland output width and height based on rotation, Xwayland causes XRandr to report the wrong output sizes (an output of size 1024x768 rotated left or right should remain 1024x768, not 768x1024). So to avoid this issue and keep things consistent between Wayland and Xwayland outputs, leave the actual width/height unchanged but apply the rotation when computing the screen size. This fixes both the output size being wrong in "xrandr -q" and the pointer being constrained in the wrong dimension with rotated with weston. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99663 Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Adam Jackson <ajax@redhat.com> (cherry picked from commit 058809c43ec578a407cf40d4c3e54a42503e3562)
2017-02-17xfree86: Take input_lock() for xf86ScreenCheckHWCursorChris Wilson1-7/+20
(cherry picked from commit 3eb964e25243056dd998f52d3b00171b71c89189)
2017-02-17xfree86: Take input lock for xf86TransparentCursorChris Wilson1-0/+4
(cherry picked from commit cfddd919cce4178baba07959e5e862d02e166522)
2017-02-17xfree86: Take the input lock for xf86RecolorCursorChris Wilson1-6/+18
xf86RecolorCursor() may be called directly from XRecolorCursor as well as from xf86ScreenSetCursor(). In the latter case, the input lock is already held, but not for the former and so we need to add a wrapper function that acquires the input lock before performing xf86RecolorCursor() References: https://bugs.freedesktop.org/show_bug.cgi?id=99358 (cherry picked from commit 7198a6d4e74f684cb383b3e0f70dd2bae405e6e7)
2017-01-11xserver 1.19.1Adam Jackson1-3/+3
Signed-off-by: Adam Jackson <ajax@redhat.com>
2017-01-11AttendClient of grab-pervious client must queue to saved_ready_clients [v2]Keith Packard3-0/+20
A client which is attended while a grab is blocking execution of its requests needs to be placed in the saved_ready_clients list so that it will get scheduled once the grab terminates. Otherwise, if the client never sends another request, there is no way for it to be placed in the ready_clients list. v2: Wrap comment above mark_client_saved_ready. Remove test for OS_COMM_IGNORED which will always be true. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99333 Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com> (cherry picked from commit 785053d033e73d2deb0ded4b97eabfd881991978)
2017-01-11randr: fix xserver crash when xrandr setprovideroutputsourceQiang Yu1-0/+3
xrandr --setprovideroutputsource <screen> <gpu screen> Xorg: ../../../xserver/dix/dispatch.c:4018: AttachOutputGPU: Assertion `new->isGPU' failed. GPUScreen is not allowed to be sink output. Signed-off-by: Qiang Yu <Qiang.Yu@amd.com> Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 555e0a42d138ac8d83af62638752a1bebad602d6)
2017-01-11xfree86: fix wrong usage of xf86optionListMergeQiang Yu1-1/+1
Signed-off-by: Qiang Yu <Qiang.Yu@amd.com> Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 1012510620de7dadd0ab18b19a8e11facd884601)
2017-01-11present: Only call present_flip_notify if vblank->queued == FALSEMichel Dänzer1-1/+4
We are no longer using the present_flip_queue list only for presents which have already been submitted to the driver for page flipping, but also for those which we are queueing up to be flipped later, marked with vblank->queued == TRUE. We were incorrectly calling present_flip_notify for such entries, failing the assertion in present_flip_notify (or presumably resulting in other undesirable behaviour with assertions disabled). Reproduction recipe: Run the JavaFX test case referenced by https://bugs.freedesktop.org/show_bug.cgi?id=98831#c6 and alt-tab out of it while it's fullscreen. May take a few attempts to hit the assertion failure. Fixes: bab0f450a719 ("present: Fix presentation of flips out of order") Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98854 Reviewed-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commit e473b2bc016adacfe3fa47fdf6a8ce9f8cddff62)
2017-01-11edid: Add quirk for ADA 1024x600 7" display.Kai-Heng Feng1-0/+5
Detailed mode reports 108 mm x 68 mm which is for smaller display. Maximum image size reports 15 cm x 10 cm which aligns with its physical size, use this size instead. Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commit 9874f73e88678c9eacbcba05e52336fc63a32712)
2017-01-11os: return 0 from check_timers if we touched any of themPeter Hutterer1-1/+3
Fixes a regression introduced in 0b2f30834b1a9f. If a driver posts input events during a timer function (wacom and synaptics do this during tap timeouts), ProcessInputEvents() is not called for these events. There are no new events on any fds, so the events just sit in the queue waiting for something else to happen. Fix this by simply returning 0 from check_timers if we ran at least one of them or reset them all. This way the callers ospoll_wait will exit and continue with normal processing. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Keith Packard <keithp@keithp.com>
2017-01-11xinerama: Swap the response in RRXineramaWriteMonitorMichal Srb1-0/+7
Reviewed-by: Adam Jackson <ajax@redhat.com>
2017-01-11glamor: Trust eglGetPlatformDisplayEXT if it existsHans De Goede2-5/+5
If the libEGL we are using has eglGetPlatformDisplayEXT, yet it still returns NULL, then this very likely means that it does not support the type (e.g. EGL_PLATFORM_GBM_MESA) passed in, and then returning NULL is the right thing to do. This avoids falling back to an eglGetDisplay() implementation which does not understands the passed in gbm handle, treats it as a pointer to something else completely, followed by a crash sooner or later. Specifically this fixes using the nvidia binary driver, with nvidia's libEGL + the modesetting driver on a secondary GPU crashing inside glamor_egl_init() sometimes. [1.19: squash in typo fix from 29a4f3db - ajax] Cc: Eric Anholt <eric@anholt.net> Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> (cherry picked from commit 05e19644250698aa126a60bc671e85425df784d1)
2017-01-11os,dix: Depend custom libs on libs, not objectsMihail Konev2-4/+4
The custom os/os.O library reuses *.o files of os/libos.la. The current rule assumes automake puts all the objects into per-target am__*_la_OBJECTS variable. At least with AC_REPLACE_FUNCS, this no longer holds (as wanted objects are put into LTLIBOBJS instead). Depend on automake's result, the *.la library instead, to express demand of any its dependencies being built. Should be fixing randomly occuring "undefined reference to `strlcpy'" errors when linking Xvfb and other DDX-es that could use os.O. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Mihail Konev <k.mvc@ya.ru> (cherry picked from commit 5b74e260e009d8bdf26433724495802b85cce7c3)
2017-01-11Fix a segfault that occurs if xorg.conf.d is absent:Ben Crocker3-1/+25
In InitOutput, if xf86HandleConfigFile returns CONFIG_NOFILE (which it does if no config file or directory is present), the autoconfig flag is set, causing xf86AutoConfig to be called later on. xf86AutoConfig calls xf86OutputClassDriverList via the call tree: xf86AutoConfig => listPossibleVideoDrivers => xf86PlatformMatchDriver => xf86OutputClassDriverList and xf86OutputClassDriverList attempts to traverse a linked list that is a member of the XF86ConfigRec struct pointed to by the global xf86configptr, which is NULL at this point because the XF86ConfigRec struct is only allocated (by xf86readConfigFile) AFTER the config file and directory have been successfully opened; the CONFIG_NOFILE return from xf86HandleConfigFile occurs BEFORE the call to xf86readConfigFile which allocates the XF86ConfigRec struct. Rx: In read.c (for symmetry with xf86freeConfig, which already appears in this file), add a new function xf86allocateConfig which tests the value of xf86configptr and, if it's NULL, allocates the XF86ConfigRec struct and deposits the pointer in xf86configptr. In xf86Parser.h, add a prototype for the new xf86allocateConfig function. Back in read.c, #include "xf86Config.h". In xf86readConfigFile, change the open-code call to calloc to a call to the new xf86allocateConfig function. In xf86AutoConfig.c, add a call to the new xf86allocateConfig function to the beginning of xf86AutoConfig to make sure the XF86ConfigRec struct is allocated. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Ben Crocker <bcrocker@redhat.com> (cherry picked from commit 8b335d9068fe4e1f1423a4d86c22b69ffcb819a5)
2017-01-11test: fix distributing scriptsPekka Paalanen1-1/+2
Fix the following error on 'make distcheck': make[6]: *** No rule to make target 'scripts/xvfb-piglit.sh', needed by 'scripts/xvfb-piglit.sh.log'. Stop. make[6]: Leaving directory '/home/pq/git/xserver/xorg-server-1.19.99.1/_build/sub/test' Makefile:1367: recipe for target 'check-TESTS' failed The setup to trigger this is: $ ./configure --prefix=/home/pq/local --disable-docs --disable-devel-docs --enable-xwayland --disable-xorg --disable-xvfb --disable-xnest --disable-xquartz --disable-xwin --enable-debug SCRIPT_TESTS is populated conditionally, but we should distribute the scripts in any case. Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> (cherry picked from commit b365c5d16894a259dbf29db4ca2640d8ed768063)
2017-01-11composite: Fix repaint of borders (v2)Adam Jackson3-7/+10
When going from border width zero to a non-zero border width, the Composite extension is informed via the ConfigNotify callback. The call-chain looks like this: compConfigNotify -> compReallocPixmap -> compSetPixmap -> TraverseTree -> compSetPixmapVisitWindow. However, at this time, pWindow->borderWidth was not yet updated. Thus, HasBorder() is false and the window border will not be repainted. To fix this, thread the new bw through to the window visitor, and inspect that rather than HasBorder(). For the other callers of compSetPixmap the border does not change size, so we can pass pWin->borderWidth instead. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98499 Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Keith Packard <keithp@keithp.com> (cherry picked from commit f31875510d818ba517f082e124adb294db906e51)