aboutsummaryrefslogtreecommitdiff
path: root/sway/desktop
AgeCommit message (Collapse)Author
2018-06-29Merge remote-tracking branch 'upstream/master' into atomicRyan Dwyer
2018-06-29Replace list_empty with a simple alternativeRyan Dwyer
2018-06-27fix accidently removing borders on XCB_CONFIGURE_REQUESTArmin Preiml
The view was configured with the container coordinates. Although they were right on the first configure, they changed after a XCB_CONFIGURE_REQUEST, when the border was already drawn.
2018-06-27Allow views to skip configuresRyan Dwyer
To do this properly, the transaction queue will only be processed if it can be completely processed.
2018-06-27Move unsetting of view->surface into view_unmapRyan Dwyer
2018-06-27Remove transaction_add_damageRyan Dwyer
Instead, damage each container when applying the transaction.
2018-06-27Fix nitpicksRyan Dwyer
2018-06-27Merge branch 'master' into xwayland-wants-floatRyan Dwyer
2018-06-26Merge branch 'master' into float_xdg_shellemersion
2018-06-26layer_shell: order destroying before sway_outputDominique Martinet
Both sway_output and sway_layer_shell listen to wlr's output destroy event, but sway_layer_shell needs to access into sway_output's data strucure and needs to be destroyed first. Resolve this by making sway_layer_shell listen to a new event that happens at start of sway_output's destroy handler
2018-06-26layer_shell: cleanup output link on output destroyDominique Martinet
Fixes this kind of use-after-free: ==1795==ERROR: AddressSanitizer: heap-use-after-free on address 0x612000191ef0 at pc 0x00000048c388 bp 0x7ffe308f0410 sp 0x7ffe308f0400 WRITE of size 8 at 0x612000191ef0 thread T0 #0 0x48c387 in wl_list_remove ../common/list.c:157 #1 0x42196b in handle_destroy ../sway/desktop/layer_shell.c:275 #2 0x7f55cc2549fa in wlr_signal_emit_safe ../util/signal.c:29 #3 0x7f55cc22cf68 in layer_surface_destroy ../types/wlr_layer_shell.c:182 #4 0x7f55cc22d084 in layer_surface_resource_destroy ../types/wlr_layer_shell.c:196 #5 0x7f55cc4ca025 in destroy_resource src/wayland-server.c:688 #6 0x7f55cc4ca091 in wl_resource_destroy src/wayland-server.c:705 #7 0x7f55cc22c3a2 in resource_handle_destroy ../types/wlr_layer_shell.c:18 #8 0x7f55c8ef103d in ffi_call_unix64 (/lib64/libffi.so.6+0x603d) #9 0x7f55c8ef09fe in ffi_call (/lib64/libffi.so.6+0x59fe) #10 0x7f55cc4cdf2c (/lib64/libwayland-server.so.0+0xbf2c) #11 0x7f55cc4ca3de in wl_client_connection_data src/wayland-server.c:420 #12 0x7f55cc4cbf01 in wl_event_loop_dispatch src/event-loop.c:641 #13 0x7f55cc4ca601 in wl_display_run src/wayland-server.c:1260 #14 0x40bb1e in server_run ../sway/server.c:141 #15 0x40ab2f in main ../sway/main.c:432 #16 0x7f55cb97318a in __libc_start_main ../csu/libc-start.c:308 #17 0x408d29 in _start (/opt/wayland/bin/sway+0x408d29) 0x612000191ef0 is located 48 bytes inside of 312-byte region [0x612000191ec0,0x612000191ff8) freed by thread T0 here: #0 0x7f55ce3bb880 in __interceptor_free (/lib64/libasan.so.5+0xee880) #1 0x42f1db in handle_destroy ../sway/desktop/output.c:1275 #2 0x7f55cc2549fa in wlr_signal_emit_safe ../util/signal.c:29 #3 0x7f55cc23b4c2 in wlr_output_destroy ../types/wlr_output.c:284 #4 0x7f55cc1ddc20 in xdg_toplevel_handle_close ../backend/wayland/output.c:235 #5 0x7f55c8ef103d in ffi_call_unix64 (/lib64/libffi.so.6+0x603d) previously allocated by thread T0 here: #0 0x7f55ce3bbe50 in calloc (/lib64/libasan.so.5+0xeee50) #1 0x42f401 in handle_new_output ../sway/desktop/output.c:1308 #2 0x7f55cc2549fa in wlr_signal_emit_safe ../util/signal.c:29 #3 0x7f55cc1d6cbf in new_output_reemit ../backend/multi/backend.c:113 #4 0x7f55cc2549fa in wlr_signal_emit_safe ../util/signal.c:29 #5 0x7f55cc1deac7 in wlr_wl_output_create ../backend/wayland/output.c:327 #6 0x7f55cc1db353 in backend_start ../backend/wayland/backend.c:55 #7 0x7f55cc1bad55 in wlr_backend_start ../backend/backend.c:35 #8 0x7f55cc1d67a0 in multi_backend_start ../backend/multi/backend.c:24 #9 0x7f55cc1bad55 in wlr_backend_start ../backend/backend.c:35 #10 0x40ba8a in server_run ../sway/server.c:136 #11 0x40ab2f in main ../sway/main.c:432 #12 0x7f55cb97318a in __libc_start_main ../csu/libc-start.c:308
2018-06-26Fix crash when disconnecting outputRyan Dwyer
We were freeing the sway_output immediately upon disconnect which left a dangling pointer in the output's container. It then tried to use the pointer when the container is freed. We don't need to store the sway_output in an output's container which is destroying, so the fix is to set the pointer to NULL and remove the use in container_free. Also added an arrange when the output is disconnected for good measure.
2018-06-26Remove timer when transaction destroysRyan Dwyer
2018-06-26Damage output when views toggle fullscreenRyan Dwyer
Also add workspace to the transaction when a view maps in fullscreen mode.
2018-06-26Rename view's free callback to destroyRyan Dwyer
2018-06-26Damage output when a fullscreen view unmapsRyan Dwyer
Also moved the arranging into view_unmap to avoid excessive code duplication.
2018-06-26xdg_shell: make view floating if a parent has been setDominique Martinet
Prompts e.g. authentication request from firefox-wayland ought to be floating. This is a bit coarse but just fixed size is not enough, here is what firefox does: [1285461.363] -> xdg_wm_base@18.get_xdg_surface(new id xdg_surface@68, wl_surface@71) [1285461.508] -> xdg_surface@68.get_toplevel(new id xdg_toplevel@67) [1285461.571] -> xdg_toplevel@67.set_parent(xdg_toplevel@37) [1285461.630] -> xdg_toplevel@67.set_title("Authentication Required") [1285461.736] -> xdg_toplevel@67.set_app_id("firefox") ... [1285476.549] xdg_toplevel@67.configure(0, 0, array) ... [1285502.080] -> xdg_toplevel@67.set_min_size(299, 187) [1285502.140] -> xdg_toplevel@67.set_max_size(1920, 32767) This can also be observed with e.g. the open window of gedit (gedit->open->other documents)
2018-06-25Rename progress_queue to transaction_progress_queueRyan Dwyer
2018-06-25Implement per-configure debug timingsRyan Dwyer
2018-06-25Implement transaction timings debugRyan Dwyer
Launch sway with SWAY_DEBUG=txn_timings to enable it.
2018-06-24xwayland: accept configure requests from floating viewsemersion
2018-06-24Implement atomic layout updates for xwayland viewsRyan Dwyer
2018-06-24Fix crash related to stacks and tabsRyan Dwyer
2018-06-24Force transactions to complete in orderRyan Dwyer
This forces transactions to complete in order by using a singly linked list stored in the sway server.
2018-06-23Fix crash when deleting last child in a tabbed or stacked containerRyan Dwyer
There was no `current` child because the container was destroyed. This makes it fall back to looking in the parent's current children list.
2018-06-23Implement atomic layout updates for tree operationsRyan Dwyer
This implements atomic layout updates for when views map, reparent or unmap.
2018-06-18Automatically float xwayland windowsemersion
2018-06-18Preserve buffers during transactionsRyan Dwyer
* Also fix parts of the rendering where it was rendering the pending state instead of current.
2018-06-18Merge remote-tracking branch 'upstream/master' into atomicRyan Dwyer
2018-06-16Update for swaywm/wlroots#1060emersion
2018-06-11Merge remote-tracking branch 'upstream/master' into atomicRyan Dwyer
2018-06-09Render drag iconsemersion
2018-06-09Fix compilation errors related to disabled outputsemersion
2018-06-09Refactor everything that needs to arrange windowsRyan Dwyer
* The arrange_foo functions are now replaced with arrange_and_commit, or with manually created transactions and arrange_windows x2. * The arrange functions are now only called from the highest level functions rather than from both high level and low level functions. * Due to the previous point, view_set_fullscreen_raw and view_set_fullscreen are both merged into one function again. * Floating and fullscreen are now working with transactions.
2018-06-09Make main properties be the pending stateRyan Dwyer
2018-06-09WIP: Atomic layout updates ground workRyan Dwyer
2018-06-06Switch output storing from list_t to wl_listBrian Ashworth
2018-06-06Address emersions comments on output re-enablingBrian Ashworth
2018-06-06Store sway_outputs so that they can be reenabledBrian Ashworth
2018-06-05Merge pull request #2095 from emersion/fullscreen-damage-only-visibleemersion
Only send frame to visible surfaces when fullscreened
2018-06-04Don't restore focus if unmapping surface wasn't focusedRyan Dwyer
2018-06-04Restore focus when unmapping layer shell surfacesRyan Dwyer
2018-06-04Restore focus when unmapping unmanaged xwayland surfacesRyan Dwyer
2018-06-02Add SWAY_DAMAGE_DEBUGemersion
Setting it to "rerender" will always re-render everything regardless of the damaged region. Setting it to "highlight" will clear the screen and render only damaged regions.
2018-06-02Only send frame to visible surfaces when fullscreenedemersion
2018-06-02Schedule a frame even if damage is emptyemersion
2018-06-02Only send frame done to visible viewsemersion
Also don't accumulate empty damage
2018-06-01Don't auto float xdg views if their dimensions are not setRyan Dwyer
2018-06-01Fix fullscreen position of xwayland viewsRyan Dwyer
2018-06-01Fix floating position when view is floated when mappedRyan Dwyer