Commit graph

3172 commits

Author SHA1 Message Date
emersion
f2eef670d1
Use tabs instead of spaces in symbols file 2018-04-21 10:22:51 +01:00
emersion
1588094b99
Remove a few local prefixed symbols 2018-04-21 10:20:33 +01:00
emersion
70d820be25
Add wlr_renderer_init_wl_shm to advertize supported renderer formats 2018-04-20 23:58:30 +01:00
Drew DeVault
c18afd6731
Merge pull request #875 from Ongy/keyboard_order
reorder xkb state handling in wlr_keyboard
2018-04-18 08:38:26 -04:00
Markus Ongyerth
c8ccb1bef3 reorder xkb state handling in wlr_keyboard
wlr_keyboard manages the xkb-common state of the compositor.
It used to update the state, update the modifiers, then notify the
compositor.
When [Shift_L] was pressed and released, this resulted in an event chain:
  Modifiers: Shift
  Key: Shift_L (Pressed)

  Modifiers:
  Key: Shift_L (Release)

The xkb-docs state that the state should be updated *after* the key was
handled [1], to prevent the new state from influencing the actual key
generated.

To achieve this, the event to the compositor is emitted, *before*
wlroots handles the xkb and internal keyboard state.

With this patch applied, the emitted events ill be:
  Modifiers:
  Key: Shift_L (Pressed)

  Modifiers: Shift
  Key: Shift_L (Release)

[1] https://xkbcommon.org/doc/current/group__state.html#gac554aa20743a621692c1a744a05e06ce
2018-04-18 11:54:59 +02:00
Drew DeVault
dbdc63ddde
Merge pull request #873 from emersion/output-dont-emit-mode-twice
output: don't emit the mode event if it hasn't changed
2018-04-17 21:08:27 -04:00
emersion
94fa6c88f4
output: don't emit the mode event if it hasn't changed
This also fixes #535.
2018-04-18 00:15:25 +01:00
emersion
7c8c81c3a4
Merge pull request #871 from agx/layer-shell-crash
rootston: don't crash on shutdown
2018-04-16 15:10:38 +01:00
Guido Günther
47e1eda669 rootston: don't crash on shutdown
When e.g. running rootston under X11 it would otherwise crash when
closing rootston like:

    #0  0x00007f0197da7327 in wl_list_remove () at /usr/lib/x86_64-linux-gnu/libwayland-server.so.0
    #1  0x000056306fcee7fb in handle_destroy (listener=0x5630723a2948, data=0x5630723a5d20) at ../rootston/layer_shell.c:273
    #2  0x00007f019800a552 in wlr_signal_emit_safe (signal=0x5630723a5e30, data=0x5630723a5d20) at ../util/signal.c:29
    #3  0x00007f0197fef808 in layer_surface_destroy (surface=0x5630723a5d20) at ../types/wlr_layer_shell.c:169
    #4  0x00007f0197ff0001 in client_handle_destroy (resource=0x56307229c4c0) at ../types/wlr_layer_shell.c:371
    #5  0x00007f0197da2f30 in  () at /usr/lib/x86_64-linux-gnu/libwayland-server.so.0
    #6  0x00007f0197da77f9 in  () at /usr/lib/x86_64-linux-gnu/libwayland-server.so.0
    #7  0x00007f0197da301d in wl_client_destroy () at /usr/lib/x86_64-linux-gnu/libwayland-server.so.0
    #8  0x00007f0197da30d8 in  () at /usr/lib/x86_64-linux-gnu/libwayland-server.so.0
    #9  0x00007f0197da4c12 in wl_event_loop_dispatch () at /usr/lib/x86_64-linux-gnu/libwayland-server.so.0
    #10 0x00007f0197da344a in wl_display_run () at /usr/lib/x86_64-linux-gnu/libwayland-server.so.0
    #11 0x000056306fcef069 in main (argc=3, argv=0x7ffd22032528) at ../rootston/main.c:83

since the output_destroy got already removed in handle_output_destroy.
2018-04-16 15:51:03 +02:00
Drew DeVault
72411a7a7c
Merge pull request #870 from psychon/x11_needs_swap
x11 backend: Expose events mean "needs swap"
2018-04-15 09:35:29 -04:00
Uli Schlachter
e5ab12339f x11 backend: Expose events mean "needs swap"
When the X11 server sends an expose event, that means that "this
rectangle here (the event contains x,y,width,height) has undefined
contents on your window; please redraw that". This means that we need a
swap. However, so far the code does not actually enforce that a swap
happens.

For example, start rootston, switch to another workspace and then switch
back. The rootston window will not be redrawn (before commit
52b058c2a3, it would just be fully white; after that commit it will
show whatever was visible on the old workspace). This is because the
drawing code concludes that nothing needs to be done. However, in fact a
swap is necessary.

This reverts commit e79d924588, because its optimisation is already
done now: wlr_output_update_needs_swap() emits a signal, which is
handled by wlr_output_damage with a call to wlr_output_schedule_frame().
This function does nothing if a frame is already pending. Thus, the
optimisation from commit e79d924588 now happens implicitly.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2018-04-15 11:41:09 +02:00
emersion
1db8667cea
Merge pull request #869 from psychon/x11-cleanups
Some changes to the x11 backend
2018-04-15 11:11:00 +02:00
Uli Schlachter
e79d924588 x11 backend: Ignore expose if frame is pending
When resizing rootston with the mouse, the result is really slow. One
can see that rootston needs quite a while for drawing the newly visible
area. This is because every single expose event is handled on its own
and causes (apparently) a full repaint or at least a swap.

This commit improves things by only causing a new frame if none is
pending already.

With this change, there is almost no delay in rootston drawing the newly
visible area.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2018-04-15 11:07:31 +02:00
Uli Schlachter
52b058c2a3 x11 backend: Do not set a back pixel on windows
Before this commit, the x11 server would fill any exposed area with
white before the wlroots x11 backend got a chance to do anything. This
was e.g. visible when running rootston and resizing the window: When the
window becomes larger, the new area is filled with black.

By just not setting a back pixel value, this commit gets rid of this
behaviour.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2018-04-15 11:07:31 +02:00
Uli Schlachter
98f8ec6a08 x11_handle_input_event: Remove return value
handle_x11_event() and x11_handle_input_event() react to different kinds
of events, so it does not make much of a difference if
x11_handle_input_event() signals if it handled an event or not.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2018-04-15 10:33:53 +02:00
Uli Schlachter
3728abd1fc handle_x11_event: Remove return value
This function always returns "false", so its return type can simply be
changed to void.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2018-04-15 10:32:30 +02:00
Drew DeVault
63763d3279
Merge pull request #862 from emersion/renderer-scissor-upside-down
Make wlr_renderer_scissor take normal coords instead of upside-down ones
2018-04-13 09:32:41 -04:00
emersion
bcf5da5cd7
Merge pull request #866 from emersion/xwayland-unmapped-on-create
xwayland: emit new_surface when unmapped
2018-04-13 08:48:01 -04:00
emersion
fa02e30adf
xwayland: emit new_surface when unmapped 2018-04-13 14:37:13 +02:00
Drew DeVault
7433d2f1de
Merge pull request #864 from martinetd/wl_scanner_code
Use 'private-code' for wayland-scanner code generation
2018-04-13 08:31:35 -04:00
Drew DeVault
4dbf7f8b88
Merge pull request #865 from martinetd/str_truncation
Fix gcc string truncation warnings
2018-04-13 08:31:09 -04:00
Drew DeVault
65903d2677
Merge pull request #857 from emersion/shell-always-unmap
Always unmap before destroying surface
2018-04-13 08:30:22 -04:00
Dominique Martinet
cd66d4732f Use 'private-code' for wayland-scanner code generation
They deprecated 'code' for 'public-code', but suggest using 'private-code'...
2018-04-13 14:40:19 +09:00
Dominique Martinet
555206cf60 Fix gcc string truncation warnings 2018-04-13 14:37:53 +09:00
Drew DeVault
99b92b4104 Update README.md 2018-04-12 21:33:51 -04:00
Drew DeVault
26b993749d Update README.md 2018-04-12 21:30:17 -04:00
Drew DeVault
bc0dc93e02 Update LICENSE year (MIT license) 2018-04-12 21:29:59 -04:00
emersion
1b802d9251
Make wlr_renderer_scissor take normal coords instead of upside-down ones 2018-04-12 19:38:33 -04:00
Drew DeVault
8f4039d799
Merge pull request #861 from emersion/fix-output-transform-compose
Fix wlr_output_transform_compose
2018-04-12 19:27:57 -04:00
emersion
31c8bdc277
Fix wlr_output_transform_compose 2018-04-12 19:05:05 -04:00
Drew DeVault
5c2d923718
Merge pull request #860 from emersion/fix-xdg-popup-at
Fix wlr_xdg_surface_surface_at for popups
2018-04-12 19:04:43 -04:00
emersion
fa0be972bb
Fix wlr_xdg_surface_surface_at for popups 2018-04-12 17:17:32 -04:00
emersion
8dec7036d0
Always unmap before destroying surface 2018-04-11 23:09:13 -04:00
Drew DeVault
7efd9885b6
Merge pull request #853 from emersion/xwayland-client-timeout
Add wlr_xwayland_surface_ping
2018-04-08 16:30:45 -04:00
emersion
17d0440b75
Add wlr_xwayland_surface_ping 2018-04-08 16:28:01 -04:00
Drew DeVault
902d859c67 Fix syntax errors
Build before you commit, dumbass
2018-04-08 12:50:52 -04:00
Drew DeVault
7bb8512afb Fix assertions with side-effects
Fixes #1725
2018-04-08 12:49:48 -04:00
Drew DeVault
cedd151e17
Merge pull request #851 from emersion/xwayland-window-type-menu
xwayland: add _NET_WM_WINDOW_TYPE_MENU support
2018-04-08 12:31:10 -04:00
emersion
c55ad11d96
xwayland: add _NET_WM_WINDOW_TYPE_MENU support 2018-04-08 12:02:52 -04:00
Drew DeVault
bef5c1fd56
Merge pull request #850 from emersion/remove-backend-egl
backend: remove wlr_backend_get_egl
2018-04-08 11:21:21 -04:00
emersion
d2ebbd103c
backend: remove wlr_backend_get_egl 2018-04-08 11:00:56 -04:00
Drew DeVault
5f48c7fddd
Merge pull request #847 from bpinto/bugfix/compilation-without-xwayland-support
rootston: fix compilation without XWayland support
2018-04-07 19:20:25 -04:00
Bruno
ba5c0903f9
rootston: fix compilation without XWayland support 2018-04-07 23:29:04 +01:00
Drew DeVault
bf68854a38 Fix destruction of popups without grabs
Fixes #846
2018-04-07 12:21:21 -04:00
Drew DeVault
f4125220a5
Merge pull request #843 from emersion/fix-xwayland-unmap-signal
Emit xwayland unmap signal before unmapping
2018-04-07 12:05:34 -04:00
emersion
8b07a4d055
Emit xwayland unmap signal before unmapping
This allows compositors to access the surface being unmapped. This
is also more consistent with the destroy signal.
2018-04-06 14:13:52 -04:00
Drew DeVault
ae4cef9e41
Merge pull request #825 from emersion/surface-iterators
Add surface iterators
2018-04-05 23:06:29 -04:00
Drew DeVault
87eb10c849
Merge pull request #842 from emersion/custom-mode-invalid-refresh
backend/{x11,headless}: use default if supplied refresh is invalid
2018-04-05 22:56:02 -04:00
emersion
03563b61a8
backend/{x11,headless}: use default if supplied refresh is invalid 2018-04-05 22:48:00 -04:00
emersion
ce09537a9a
Merge pull request #840 from swaywm/xdg-output-updates
Fix sending updates to xdg-output resources
2018-04-05 18:28:16 -04:00