- 19 Jun, 2019 2 commits
-
-
Using the existing command line option "-listen" for passing file descriptors between the Wayland compositor and Xwayland is misleading, Xwayland should add is own command line option for that specific use. As XWayland is spawned by the Wayland compositor, we cannot just change the option, as that would break all existing Wayland compositors using Xwayland, so we add a new options "-listenfd" and mark the previous one as deprecated and log a warning, but it still works for backward compatibility. Signed-off-by:
Olivier Fourdan <ofourdan@redhat.com> xorg/xserver!214
-
Xwayland uses the command line option “-listen” to pass file descriptors from the Wayland compositor. That breaks the traditional, documented behavior of the “-listen” command line option which is to enable a transport type. Checks if the given option starts with a digit, otherwise treat it as a regular transport type. Closes: xorg/xserver#817 Suggested-by: Rodrigo Exterckötter Tjäder Signed-off-by:
Olivier Fourdan <ofourdan@redhat.com>
-
- 18 Jun, 2019 1 commit
-
-
Adam Jackson authored
a2rgb10 configs would end up with channel masks corresponding to argb8888. This would confuse the GLX core code into matching an a2rgb10 config to the root window visual, and that would make things look wrong and bad. Fix this by handling more cases. We're still not fully general here, and this could still be wrong on big-endian. The XXX comment about doing something less ugly still applies, ideally we would get this information out of EGL instead of making lucky guesses. Still, better than it was. Fixes: #824
-
- 17 Jun, 2019 7 commits
-
-
Jon Turney authored
Add an option to turn on the use of the X window's alpha channel in multiwindow mode, i.e. this uses the X window's alpha channel for compositing into the native desktop. This works on W7/Vista (using DwmEnableBlurBehindWindow()), and Windows 10 (using the undocumented SetWindowCompositionAttribute()), but not on Windows 8/8.1 -compositewm must be enabled for this to be useful, as we only have a pixmap with an alpha channel for the X window in that case. The framebuffer/root window doesn't have one (unless perhaps you are using the rootless extension, maybe...). v2: Update meson.build Future work: A window property to control use of alpha? Option to turn off blur on W7/Vista Implement _NET_WM_WINDOW_OPACITY
-
Jon Turney authored
Set convenience variables in winTopLevelWindowProc() for WM_CREATE as well.
-
Jon Turney authored
I think that a major cost in the current implementation is doing a CreateDIBSection()/DestroyObject() on every refresh. So provide our own CreatePixmap() instead, which does the CreateDIBSection(), once. Testcase: glxgears or foobillard with direct swrast Testcase: scrolling in a full-screen xterm v2: Fix handling of RENDER Scratch Pixmaps (A problem easily shown with gitk or emacs) v3: Note that we don't own screen pixmap to release in DestroyPixmap Log if unimplemented slow-path ever gets hit
-
Jon Turney authored
Fill the area outside the current window size with black, rather than leaking framebuffer contents or leaving it undrawn.
-
Jon Turney authored
Rather than drawing the window contents from the shadow framebuffer, use Composite extension redirection to cause the server to maintain a bitmap image of each top-level X window, and draw the window contents from that, so that window contents which are occluded in the framebuffer show correctly in the task bar and task switcher previews. v2: Fix incorrect use of memset() found by gcc5 hw/xwin/winshadgdi.c: In function ‘winBltExposedWindowRegionShadowGDI’: hw/xwin/winshadgdi.c:861:9: warning: ‘memset’ used with constant zero length parameter; this could be due to transposed parameters [-Wmemset-transposed-args] v3: Turn on -compositewm by default v4: Ignore -swcursor if -compositewm -swcursor is not compatible with -compositewm (because the window contents are drawn from an off-screen pixmap, not from the screen pixmap, where the software cursor will be drawn). v5: Update meson.build also Add -compositewm option to help output Update CI to install prerequisites
-
Jon Turney authored
Push the multiwindow wndproc WM_PAINT handling down into the drawing engine. Only the GDI engine is supported in multiwindow mode currently, so we only need to do this in the GDI engine.
-
Jon Turney authored
Make winBltExposedRegionsShadowGDI() do the same stuff that winTopLevelWindowProc()'s WM_PAINT handler does. Note that winBltExposedRegionsShadowGDI() is currently used 1) in windowed mode when the GDI engine is selected, and 2) in multiwindow mode when "Hide Root Window" is off.
-
- 12 Jun, 2019 1 commit
-
-
We can't have high keycodes because everything in XKB relies on 8 bits. XI2's API allows for 32-bit keycodes so we have to take those but nothing in the server is really ready for this. The effect of this right now is that any high keycode grab is clipped to 255 and thus ends up grabbing a different key instead. https://bugzilla.redhat.com/show_bug.cgi?id=1697804 Signed-off-by:
Peter Hutterer <peter.hutterer@who-t.net>
-
- 06 Jun, 2019 1 commit
-
-
Hiding the tablet tool cursor results in it being hidden forever after. This is due to the stale frame callback that will neither be disposed or replaced. This can be reproduced in krita (X11) as the pointer cursor is hidden while over the canvas. Clearing the frame callback ensures the correct behavior in future xwl_tablet_tool_set_cursor() calls (i.e. a new cursor surface being displayed, and a new frame callback created), and is 1:1 with xwl_seat_set_cursor() for pointers. Signed-off-by:
Carlos Garnacho <carlosg@gnome.org>
-
- 29 May, 2019 1 commit
-
-
If a pixmap is not exportable, `glamor_gbm_bo_from_pixmap()` would fail and the modesettings driver would consequently fail to do its page flip, which both prevents Present from working and also fill up the logs with error messages such as: (EE) modeset(0): Failed to get GBM bo for flip to new front. (EE) modeset(0): present flip failed Refactor the code so that `glamor_gbm_bo_from_pixmap()` takes care of making the pixmap exportable. Signed-off-by:
Olivier Fourdan <ofourdan@redhat.com> Signed-off-by:
Yuxuan Shui <yshui@hadean.com> See-also: xorg/xserver!131 Closes: xorg/xserver#68 Fixes: 86b2d874 "glamor: Reallocate pixmap storage without modifiers if necessary"
-
- 28 May, 2019 4 commits
-
-
With `glamor_set_pixmap_texture()` returning its status, remove the hack and use the return value. Signed-off-by:
Olivier Fourdan <ofourdan@redhat.com>
-
Chnage the API for `glamor_set_pixmap_texture()` to return a status, so that the caller can know whether it succeeded or not. Signed-off-by:
Olivier Fourdan <ofourdan@redhat.com>
-
The current code in `xwl_glamor_gbm_create_pixmap_for_bo()` may fail in several cases that are not checked for: - `eglCreateImageKHR()` may have failed to create the image, - `glEGLImageTargetTexture2DOES()` may fail and set an error, - `glamor_set_pixmap_texture()` may fail for very large pixmaps because the corresponding FBO could not be created. Trying to upload content to a pixmap with no texture will crash Mesa, glamor and Xwayland, e.g.: XXX fail to create fbo. (EE) (EE) Backtrace: (EE) 0: Xwayland (OsSigHandler+0x29) (EE) 1: libpthread.so.0 (funlockfile+0x50) (EE) 2: libc.so.6 (__memmove_avx_unaligned_erms+0x215) (EE) 3: dri/i965_dri.so (_mesa_format_convert+0xab3) (EE) 4: dri/i965_dri.so (_mesa_texstore+0x205) (EE) 5: dri/i965_dri.so (store_texsubimage+0x28c) (EE) 6: dri/i965_dri.so (intel_upload_tex+0x13b) (EE) 7: dri/i965_dri.so (texture_sub_image+0x134) (EE) 8: dri/i965_dri.so (texsubimage_err+0x150) (EE) 9: dri/i965_dri.so (_mesa_TexSubImage2D+0x48) (EE) 10: Xwayland (glamor_upload_boxes+0x246) (EE) 11: Xwayland (glamor_copy+0x4d1) (EE) 12: Xwayland (miCopyRegion+0x96) (EE) 13: Xwayland (miDoCopy+0x43c) (EE) 14: Xwayland (glamor_copy_area+0x24) (EE) 15: Xwayland (damageCopyArea+0xba) (EE) 16: Xwayland (compCopyWindow+0x31c) (EE) 17: Xwayland (damageCopyWindow+0xd3) (EE) 18: Xwayland (miResizeWindow+0x7b7) (EE) 19: Xwayland (compResizeWindow+0x3a) (EE) 20: Xwayland (ConfigureWindow+0xa96) (EE) 21: Xwayland (ProcConfigureWindow+0x7d) (EE) 22: Xwayland (Dispatch+0x320) (EE) 23: Xwayland (dix_main+0x366) (EE) 24: libc.so.6 (__libc_start_main+0xf3) (EE) 25: Xwayland (_start+0x2e) (EE) Fatal server error: (EE) Caught signal 11 (Segmentation fault). Server aborting (EE) Check for the possible cases of failure above and fallback to the regular glamor pixmap creation when an error is detected. Signed-off-by:
Olivier Fourdan <ofourdan@redhat.com> Closes: xorg/xserver#661
-
Desktop GL can handle arbitrary rops here, GLES can't. The switch statement attempts to optimize some cases that GLES can still handle if we precompute the right pixel value, but we were then throwing that pixel value away and using gc->fgPixel anyway. Fix this, and now xts-render passes against glamor+gles.
-
- 23 May, 2019 1 commit
-
-
Adam Jackson authored
Without this we're using driswrast to set up GLX visuals. This is unfortunate because llvmpipe does not expose multisample configs, so various apps that expect them will fail. With this we just query the capabilities of the EGL that's backing glamor, and reflect that to the GLX clients. This also paves the way for xserver to stop being a DRI driver loader, which is nice. Fixes: xorg/xserver#640 Fixes: xorg/xserver#643 Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=98272 Reviewed-by:
Olivier Fourdan <ofourdan@redhat.com> Signed-off-by:
Adam Jackson <ajax@redhat.com>
-
- 21 May, 2019 1 commit
-
-
Aaron Plattner authored
Commit 56c0a71f incremented the GLXSERVER_VENDOR_ABI_MINOR_VERSION define, but this define was not actually being used to set glxServer.minorVersion. Update the initializer for glxServer to use the correct version numbers. Signed-off-by:
Aaron Plattner <aplattner@nvidia.com>
-
- 20 May, 2019 1 commit
-
-
On pointer enter notification, Xwayland checks for an existing pointer warp with a `NULL` sprite. In turn, `xwl_pointer_warp_emulator_maybe_lock()` checks for an existing grab and the destination window using `XYToWindow()` which does not check for the actual sprite not being `NULL`. So, in some cases, when the pointer enters the surface and there is an existing X11 grab which is not an ownerEvents grab, Xwayland would crash trying to dereference the `NULL` sprite pointer: #0 __GI_raise () #1 __GI_abort () at abort.c:79 #2 OsAbort () at utils.c:1351 #3 AbortServer () at log.c:879 #4 FatalError () at log.c:1017 #5 OsSigHandler () at osinit.c:156 #6 OsSigHandler () at osinit.c:110 #7 <signal handler called> #8 XYToWindow (pSprite=0x0, x=0, y=0) at events.c:2880 #9 xwl_pointer_warp_emulator_maybe_lock () at xwayland-input.c:2673 #10 pointer_handle_enter () at xwayland-input.c:434 Avoid the crash by simply checking for the sprite being not `NULL` in `xwl_pointer_warp_emulator_maybe_lock()` Signed-off-by:
Olivier Fourdan <ofourdan@redhat.com> Bugzilla: https://bugzilla.redhat.com/1708119
-
- 18 May, 2019 5 commits
-
-
Jon Turney authored
I don't know how I feel about the promise made in 2e7f790b :)
-
Jon Turney authored
Only _sigset_t is defined by MinGW's signal.h
-
Jon Turney authored
MinGW defines SIG_BLOCK, but doesn't have signal masks, so rather than checking for SIG_BLOCK, add a configure check for sigprocmask. v2: Also add check to meson.build
-
Jon Turney authored
Include winsock.h for definition of fd_set type and select() Future work: Maybe this also needs some error checking for fd > FD_SETSIZE?
-
Jon Turney authored
I don't think an input thread can ever be useful on Windows. There is a pthread emulation, so having the thread itself isn't much of a problem. However, there is no device to wait on for Windows events, and even if we were to replace select() with WFMO, Windows wants to send events for a window to the thread which created that window. So, disable input thread by default for MinGW v2: Also add similar to meson.build
-
- 17 May, 2019 4 commits
-
-
Aaron Plattner authored
-
Add a new function, GlxServerExports::setClientScreenVendor, which will change the vendor that handles GLX requests for a screen, but only for requests from a specific client. v2: Increment the GLXVND minor version number. v3: Note the GLXVND version requirement for setClientScreenVendor. Signed-off-by:
Aaron Plattner <aplattner@nvidia.com> Reviewed-by:
Aaron Plattner <aplattner@nvidia.com> Reviewed-by:
Adam Jackson <ajax@redhat.com>
-
When GlxGetXIDMap looks up an unknown XID, it will now look up a vendor based on the screen number for the XID and the client that sent the current request. In GlxGetXIDMap, if the XID is for a regular X window, then it won't be in the (XID -> vendor) mapping, so we have to look up a vendor by screen number. With this change, GlxGetXIDMap will use the (screen -> vendor) map for whichever client sent the current request, instead of using the global (screen -> vendor) map. Since GlxGetXIDMap doesn't take a ClientPtr argument, GlxDispatchRequest will store the client for the current request in a global variable. That way, the ABI for GLXVND doesn't need to change. v2: Fix an error check in GlxDispatchRequest. Signed-off-by:
Aaron Plattner <aplattner@nvidia.com> Reviewed-by:
Aaron Plattner <aplattner@nvidia.com> Reviewed-by:
Adam Jackson <ajax@redhat.com>
-
Each client now has its own (screen, vendor) mapping. Currently, it's just a copy of the global mapping, but later changes will allow it to change. Signed-off-by:
Aaron Plattner <aplattner@nvidia.com> Reviewed-by:
Aaron Plattner <aplattner@nvidia.com> Reviewed-by:
Adam Jackson <ajax@redhat.com>
-
- 14 May, 2019 1 commit
-
-
Adam Jackson authored
glxc->drawPriv will be NULL if the context is direct, or if it is current but without a bound drawable. Mesa's libGL won't normally emit protocol for direct contexts for these calls, but a malign client could still crash the server.
-
- 12 May, 2019 1 commit
-
-
- 07 May, 2019 1 commit
-
-
Topi Miettinen authored
It can take some time for Xorg to start. If Xorg runs as a systemd service and other services are based on it, they have no way to determine when Xorg is really ready to accept requests. Let's use sd_notify() provided by libsystemd to signal systemd for readiness. If Xorg has not been started as a systemd service, this won't do anything. Signed-off-by:
Topi Miettinen <toiwoton@gmail.com>
-
- 02 May, 2019 8 commits
-
-
Adam Richter authored
Separate each statement of the form "assert(a && b);" into "assert(a);" and "assert(b);" for more precise diagnostics, except for this clever use in drmmode_display.c where it was used to pass a hint to developers: assert(num_infos <= 32 && "update return type");
-
Suppress uninteresting warnings on OSX that we are drowning in, turned on by default in meson.
-
Unfortunately, a 'brew update' is currently needed to get the meson >= 0.46.0 required by xserver.
-
Trying to build fat binaries for multiple arches tickles a bug [1] in the framework detector in meson 0.50. Workaround this by not bothering building for x86, which is probably no great loss :S https://github.com/mesonbuild/meson/issues/5290
-
Differences from autotools: * Autotools defined NO_ALLOCA for OSX builds. I don't think we need this anymore as Xalloc.h is no longer used anywhere in the xserver. * X11.bin is linked with -u,miDCInitialize, and then libserver_mi provided to satisfy (just) that. It's been that way since the commit which added it. We can't write the equivalent in meson due to linker argument ordering issues, but do we really need to? * An explicit -Dsecure-rpc=false is required for OSX, since in meson we don't do the checks that XTRANS_SECURE_RPC_FLAGS did for the existence of the specific RPC functions required.
-
-
Promote the generated file containing the date & time build was configured to top-level. Rename it from xf86Build.h to buildDateTIme.h. Use it as well in XQuartz, stringize BUILD_DATE when needed.
-