aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-03-27Merge pull request #758 from martinetd/unfullscreenDrew DeVault
rootston: Fix segfault in seat unfullscreening
2018-03-27Merge pull request #759 from martinetd/x11Drew DeVault
Fix x11 backend
2018-03-27Fix x11 backendDominique Martinet
Need to include wlr/config.h before using the various WLR_HAS_xxx defines
2018-03-27rootston: Fix segfault in seat unfullscreeningDominique Martinet
==32557==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x000000425f96 bp 0x7fff8ac19de0 sp 0x7fff8ac19d20 T0) ==32557==The signal is caused by a READ memory access. ==32557==Hint: address points to the zero page. #0 0x425f95 in roots_seat_set_focus ../rootston/seat.c:737 #1 0x40bcd6 in roots_cursor_press_button ../rootston/cursor.c:272 #2 0x40c1f7 in roots_cursor_handle_button ../rootston/cursor.c:298 #3 0x42179b in handle_cursor_button ../rootston/seat.c:58 #4 0x7f1651062367 in wlr_signal_emit_safe ../util/signal.c:29 #5 0x7f165101b532 in handle_pointer_button ../types/wlr_cursor.c:344 #6 0x7f1651062367 in wlr_signal_emit_safe ../util/signal.c:29 #7 0x7f1650ff633b in handle_pointer_button ../backend/libinput/pointer.c:85 #8 0x7f1650ff5291 in wlr_libinput_event ../backend/libinput/events.c:215 #9 0x7f1650ff3990 in wlr_libinput_readable ../backend/libinput/backend.c:35 #10 0x7f1650d88c11 in wl_event_loop_dispatch (/lib64/libwayland-server.so.0+0x9c11) #11 0x7f1650d87449 in wl_display_run (/lib64/libwayland-server.so.0+0x8449) #12 0x418e90 in main ../rootston/main.c:81 #13 0x7f164ff7ef29 in __libc_start_main (/lib64/libc.so.6+0x20f29) #14 0x405829 in _start (/home/shared/wayland/wlroots/build/rootston/rootston+0x405829) introduced by #680
2018-03-27Merge pull request #748 from emersion/fix-xwm-read-data-source-segfaultTony Crisci
Fix segfault in xwm_read_data_source
2018-03-26Merge pull request #680 from Ongy/roots_unfullscreenDrew DeVault
unset fullscreen when surface is brought to front
2018-03-26Merge pull request #713 from ManDay/masterDrew DeVault
Make X11 fully optional
2018-03-26only unfullscreen when necessaryMarkus Ongyerth
Check whether the newly focused view is the same as the one currently fullscreen on that output, or override redirect and don't unfullscreen in these cases.
2018-03-26unset fullscreen when surface is brought to frontMarkus Ongyerth
The output fullscreen surfaces are drawn in front of everything, without consideration for view z-order. If a view is brought to front, unset any fullscreen view that would cover this view to make sure the view is visible.
2018-03-26Merge pull request #756 from emersion/disambiguate-xdg-popup-geometryDrew DeVault
xdg-shell-v6, xdg-shell: explain what popup geometry is
2018-03-26Address review feedbackDrew DeVault
2018-03-26xdg-shell-v6, xdg-shell: explain what popup geometry isemersion
2018-03-26Merge pull request #751 from emersion/rotated-surface-damageDrew DeVault
Fix damage tracking for rotated surfaces
2018-03-26rootston: add -D flag to enable damage tracking debuggingemersion
2018-03-26Merge pull request #750 from emersion/renderer-simple-interfaceDrew DeVault
render: add simple functions to render rectangles and ellipses
2018-03-26Fix damage tracking for rotated surfacesemersion
It was broken because the damage extents were rotated about its own center, not about the center of the surface. This adds a new wlr_region_rotated_bounds that rotates regions. This allows us to have only one code path (for both non-rotated views and rotated views) and optimizes rendering for rotated views.
2018-03-26render: add simple functions to render rectangles and ellipsesemersion
2018-03-26Merge pull request #749 from psychon/fix_x11_use_after_freeDrew DeVault
Fix use-after-free in x11 backend during shutdown
2018-03-26Fix use-after-free in x11 backend during shutdownUli Schlachter
The xcb_connection_t instance that is used here comes from XGetXCBConnection(), is created by XOpenDisplay(), and is owned by the returned Display*. Calling xcb_disconnect() directly on it leads to various use-after-frees during shutdown, as reported by valgrind. The first one of the about 30 errors is: Invalid read of size 4 at 0x71F2051: xcb_take_socket (in /usr/lib64/libxcb.so.1.1.0) by 0x78551DD: ??? (in /usr/lib64/libX11.so.6.3.0) by 0x7855A14: _XFlush (in /usr/lib64/libX11.so.6.3.0) by 0x7858504: _XGetRequest (in /usr/lib64/libX11.so.6.3.0) by 0x7838966: XFreeGC (in /usr/lib64/libX11.so.6.3.0) by 0x783238B: XCloseDisplay (in /usr/lib64/libX11.so.6.3.0) by 0x4E680C2: wlr_x11_backend_destroy (backend.c:333) by 0x4E57E94: wlr_backend_destroy (backend.c:39) by 0x4E629FB: multi_backend_destroy (backend.c:47) by 0x4E62B5A: handle_display_destroy (backend.c:90) by 0x50B7E9F: ??? (in /usr/lib64/libwayland-server.so.0.1.0) by 0x50B8476: wl_display_destroy (in /usr/lib64/libwayland-server.so.0.1.0) Address 0xc14dda0 is 0 bytes inside a block of size 21,152 free'd at 0x4C2DD18: free (vg_replace_malloc.c:530) by 0x4E680A5: wlr_x11_backend_destroy (backend.c:330) by 0x4E57E94: wlr_backend_destroy (backend.c:39) by 0x4E629FB: multi_backend_destroy (backend.c:47) by 0x4E62B5A: handle_display_destroy (backend.c:90) by 0x50B7E9F: ??? (in /usr/lib64/libwayland-server.so.0.1.0) by 0x50B8476: wl_display_destroy (in /usr/lib64/libwayland-server.so.0.1.0) by 0x40C54E: main (main.c:84) Block was alloc'd at at 0x4C2EA1E: calloc (vg_replace_malloc.c:711) by 0x71F0C60: xcb_connect_to_fd (in /usr/lib64/libxcb.so.1.1.0) by 0x71F4BD4: xcb_connect_to_display_with_auth_info (in /usr/lib64/libxcb.so.1.1.0) by 0x7854AA1: _XConnectXCB (in /usr/lib64/libX11.so.6.3.0) by 0x7845481: XOpenDisplay (in /usr/lib64/libX11.so.6.3.0) by 0x4E681B6: wlr_x11_backend_create (backend.c:376) by 0x4E580EE: wlr_backend_autocreate (backend.c:99) by 0x40C27D: main (main.c:35) Normally, one would expect this to crash during XCloseDisplay() when xcb_disconnect() is called again and frees the same data again (glibc would detect a double free). However, XCloseDisplay() tries to clean up some internal caches first for which it has to send requests to the X11 server (e.g. the XFreeGC() above). This fails since the file descriptor was already closed, which causes an IO error. Xlib's _XDefaultIOError() handles this by printing an error message and calling exit(1). Thus, the only symptom of this problem was compositors exiting mid-shutdown and printing an error message: XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0" after 6 requests (6 known processed) with 0 events remaining. Fixes: https://github.com/swaywm/wlroots/issues/745 Signed-off-by: Uli Schlachter <psychon@znc.in>
2018-03-25Fix segfault in xwm_read_data_sourceemersion
2018-03-25Merge pull request #741 from emersion/unmapped-surface-destroyTony Crisci
xdg-shell, xdg-shell-v6: don't emit unmap if surface is unmapped
2018-03-24Merge pull request #743 from acrisci/xdg-surface-closeemersion
unified xdg-surface close
2018-03-24unified xdg-surface closeTony Crisci
2018-03-23Merge pull request #724 from agx/linux-dmabuf-mpDrew DeVault
Linux-dmabuf with n_planes > 1
2018-03-23Minor correctionsCedric Sodhi
2018-03-23linux-dmabuf: Support multi plane formats like NV12Guido Günther
2018-03-23wlr_surface: fix indentationGuido Günther
2018-03-22Merge pull request #738 from emersion/gles2-renderer-redesignDrew DeVault
Redesign GLES2 renderer
2018-03-23Merge branch 'master' into gles2-renderer-redesignemersion
2018-03-22Merge pull request #740 from emersion/egl-debugDrew DeVault
render/egl: use EGL_KHR_debug
2018-03-22Merge pull request #727 from martinetd/x11_wl_backend_fixesTony Crisci
Address sanitizer fixes
2018-03-22wlr_pointer: fix potential null derefDominique Martinet
if pointer is null here we'd access pointer->events... anyway
2018-03-22wayland backend: fix use-after free on output destroyDominique Martinet
==12021==ERROR: AddressSanitizer: heap-use-after-free on address 0x617000015698 at pc 0x7f1a9abe1c09 bp 0x7ffe9068f6b0 sp 0x7ffe9068f6a0 WRITE of size 4 at 0x617000015698 thread T0 #0 0x7f1a9abe1c08 in pointer_handle_leave ../backend/wayland/wl_seat.c:40 #1 0x7f1a96ae7d1d in ffi_call_unix64 (/lib64/libffi.so.6+0x5d1d) #2 0x7f1a96ae768e in ffi_call (/lib64/libffi.so.6+0x568e) #3 0x7f1a988e0d8a (/lib64/libwayland-client.so.0+0x8d8a) #4 0x7f1a988dd927 (/lib64/libwayland-client.so.0+0x5927) #5 0x7f1a988debe3 in wl_display_dispatch_queue_pending (/lib64/libwayland-client.so.0+0x6be3) #6 0x7f1a9abdd6d6 in dispatch_events ../backend/wayland/backend.c:28 #7 0x7f1a9a968c11 in wl_event_loop_dispatch (/lib64/libwayland-server.so.0+0x9c11) #8 0x7f1a9a967449 in wl_display_run (/lib64/libwayland-server.so.0+0x8449) #9 0x418dff in main ../rootston/main.c:81 #10 0x7f1a99b5ef29 in __libc_start_main (/lib64/libc.so.6+0x20f29) #11 0x4057c9 in _start (/home/shared/wayland/wlroots/build/rootston/rootston+0x4057c9) 0x617000015698 is located 664 bytes inside of 696-byte region [0x617000015400,0x6170000156b8) freed by thread T0 here: #0 0x7f1a9af754b8 in __interceptor_free (/lib64/libasan.so.4+0xde4b8) #1 0x7f1a9abe01ee in wlr_wl_output_destroy ../backend/wayland/output.c:194 #2 0x7f1a9ac12918 in wlr_output_destroy ../types/wlr_output.c:299 #3 0x7f1a9abe061b in xdg_toplevel_handle_close ../backend/wayland/output.c:255 #4 0x7f1a96ae7d1d in ffi_call_unix64 (/lib64/libffi.so.6+0x5d1d) #5 0x7f1a96ae768e in ffi_call (/lib64/libffi.so.6+0x568e) #6 0x7f1a988e0d8a (/lib64/libwayland-client.so.0+0x8d8a) #7 0x7f1a988dd927 (/lib64/libwayland-client.so.0+0x5927) #8 0x7f1a988debe3 in wl_display_dispatch_queue_pending (/lib64/libwayland-client.so.0+0x6be3) #9 0x7f1a9abdd6d6 in dispatch_events ../backend/wayland/backend.c:28 #10 0x7f1a9a968c11 in wl_event_loop_dispatch (/lib64/libwayland-server.so.0+0x9c11) #11 0x7f1a9a967449 in wl_display_run (/lib64/libwayland-server.so.0+0x8449) #12 0x418dff in main ../rootston/main.c:81 #13 0x7f1a99b5ef29 in __libc_start_main (/lib64/libc.so.6+0x20f29) #14 0x4057c9 in _start (/home/shared/wayland/wlroots/build/rootston/rootston+0x4057c9) previously allocated by thread T0 here: #0 0x7f1a9af75a38 in __interceptor_calloc (/lib64/libasan.so.4+0xdea38) #1 0x7f1a9abe0703 in wlr_wl_output_create ../backend/wayland/output.c:272 #2 0x7f1a9abdd8eb in wlr_wl_backend_start ../backend/wayland/backend.c:55 #3 0x7f1a9abbeb49 in wlr_backend_start ../backend/backend.c:28 #4 0x7f1a9abd8ce1 in multi_backend_start ../backend/multi/backend.c:24 #5 0x7f1a9abbeb49 in wlr_backend_start ../backend/backend.c:28 #6 0x418c32 in main ../rootston/main.c:58 #7 0x7f1a99b5ef29 in __libc_start_main (/lib64/libc.so.6+0x20f29) #8 0x4057c9 in _start (/home/shared/wayland/wlroots/build/rootston/rootston+0x4057c9)
2018-03-22x11 backend: fix various leaksDominique Martinet
- xcb_query_pointer_reply return value needs to be freed - call XCloseDisplay - remove wl event_source
2018-03-22rootston/output: fix leak in damage_from_surfaceDominique Martinet
2018-03-22xdg_popup_grab: add listener on seat destroyDominique Martinet
2018-03-21xdg-shell, xdg-shell-v6: don't emit unmap if surface is unmappedemersion
Some clients create an xdg_surface, then create an xdg_toplevel, but don't map it and destroy it right after. The xdg_surface ends up in a state where it isn't mapped but role-specific resources have been allocated. xdg_surface_unmap needs to free these resources without emitting the unmap signal.
2018-03-21backend/drm: remove remaining raw GL callemersion
This makes the hardware cursor code a less efficient. Can be fixed with a GLES3 renderer.
2018-03-21render/egl: use EGL_KHR_debugemersion
2018-03-21render/gles2: use gles2_pixel_format::has_alpha for shader selectionemersion
2018-03-21render/gles2: move list of supported WL formats to pixel_format.cemersion
2018-03-21render/gles2: make wlr_renderer_begin take viewport sizeemersion
This allows raw GL calls outside wlr_renderer to be removed.
2018-03-20render/gles2: remove global state, use OpenGL debug extensionemersion
2018-03-20Merge pull request #736 from agx/gles2-tex-targetDrew DeVault
Gles2 tex target
2018-03-20gles2: Honor alpha in fragment_src_externalGuido Günther
By using the same vertex shader and adding alpha to the fragment shader for external textures we can: - use alpha blending - have wlr_gles2_render_texture_with_matrix work with the GL_TEXTURE_EXTERNAL_OES. So far this failed since we passed in alpha which was unknown by fragment_src_external
2018-03-20gles2_texture_bind: use texture's target typeGuido Günther
Hardcoding GL_TEXTURE_2D leads to rendering errors when using GL_TEXTURE_EXTERNAL_OES textures.
2018-03-20gles2: allow to specify texture target typeGuido Günther
Allow to set the texture target type when generating/binding the texture. This allows us to attach the texture type to the texture so we don't have to keep the logic elsewhere.
2018-03-19Merge pull request #735 from emersion/split-render-hDrew DeVault
render: split render.h into wlr_renderer.h and wlr_texture.h
2018-03-19render: split render.h into wlr_renderer.h and wlr_texture.hemersion
2018-03-19Merge pull request #733 from emersion/fix-matrix-transposeDrew DeVault
Don't use OpenGL matrix transposition