Commit Graph

407 Commits

Author SHA1 Message Date
Daniel Kondor b7dc4f2990 layer-shell: allow new values for keyboard-interactivity
Value is now an enum with a new value ("on-demand") that compositors can use to allow "normal" keyboard focus semantics regardless of the layer the client surface is on. An error is sent for invalid keyboard interactivity values. The old behavior is retained for clients using the previous version of the protocol.

Also adjusted the layer-shell example program to use the new keyboard interactivity options.
2021-01-12 20:13:52 +01:00
Simon Ser 1d461687d2 render/egl: replace init/finish with create/destroy
This ensures wlr_gles2_renderer can properly take ownership of the
wlr_egl.

Closes: https://github.com/swaywm/wlroots/issues/2612
2021-01-12 11:31:04 +01:00
Simon Ser 76ed2255ef render/egl: remove support for EGL_NATIVE_VISUAL_ID
Nobody uses it anymore.
2021-01-12 11:31:04 +01:00
Simon Ser 198560fc1f
examples: request an EGL config
Client examples using wlr_egl would fail with EGL_BAD_CONFIG because they
need an EGL config. Set the config attribs to a non-NULL value to make
sure wlr_egl creates an EGL config.

Fixes: 037710b1d4 ("render/egl: support config-less wlr_egl")
2021-01-04 11:30:30 +01:00
Simon Ser 9714638f3b
examples: remove visual for EGL_PLATFORM_WAYLAND_EXT
The Wayland EGL platform doesn't have visuals.
2021-01-04 11:26:08 +01:00
Simon Ser 4b03bdc3ab Remove wlr_create_renderer_func_t
This callback allowed compositors to customize the EGL config used by
the renderer. However with renderer v6 EGL configs aren't used anymore.
Instead, buffers are allocated via GBM and GL FBOs are rendered to. So
customizing the EGL config is a no-op.
2020-12-30 17:09:40 +01:00
Simon Ser b9460ab724
Stop using wlr_texture_get_size
Just use wlr_texture.{width,height} directly.
2020-12-25 12:21:29 +01:00
Simon Ser 858a1940b5 build: move wayland-egl dependency to examples/
Now that the Wayland backend has moved to wlr_swapchain, only
client examples use the dependency. Stop linking against wayland-egl
in the wlroots library.
2020-12-13 12:16:28 +01:00
Isaac Freund e06c9e43af Remove unneeded includes from wlr_input_device.h
This uncovered many places where we were using things without directly
including them.
2020-11-11 15:40:47 +01:00
Isaac Freund 7693f61d81 Replace wlr_key_state with wl_keyboard_key_state
There's no reason to have duplicate enums
2020-11-11 10:58:38 +01:00
Daniel Kondor 36395e5b1c
foreign-toplevel-management: report parent toplevel
Based on the wlr-protocols PR:
https://github.com/swaywm/wlr-protocols/pull/52
2020-10-18 17:14:35 +02:00
Tudor Brindus ec3f432bbb examples: use `perror` instead of `fprintf` GNU %m `printf` extension 2020-10-11 06:36:23 +02:00
Simon Ser 2b418b4d88 examples/dmabuf-capture: add extra roundtrip for wl_output listener
This example was relying on wl_display_dispatch being enough to fetch
output information. This worked by chance.

Add an explicit wl_display_roundtrip.

Other examples don't setup wl_output listeners, so they should be fine.

Fixes: 297354f847 ("Remove unnecessary wl_display_dispatch calls")
Closes: https://github.com/swaywm/wlroots/issues/2386
2020-08-31 08:43:54 -06:00
Simon Ser 297354f847 Remove unnecessary wl_display_dispatch calls
wl_display_roundtrip already takes care of dispatching the display.
2020-08-24 07:55:35 -06:00
Simon Ser 379835c42f examples/simple: use wlr_renderer instead of GL 2020-08-14 09:57:31 -06:00
Simon Ser 801c7670b7 examples/simple: use wlr_output_preferred_mode 2020-08-14 09:57:31 -06:00
Rouven Czerwinski c32d89ee3e
examples: remove unnecessary gles2.h imports 2020-07-28 13:36:09 +02:00
Antonin Décimo 9686895b4e Fix typos 2020-07-21 23:00:13 +02:00
xdavidwu 842df2bd6c examples/input-method-keyboard-grab: new example 2020-07-08 11:21:57 +02:00
j-n-f b61a98c417 examples: fix improper use of `free`
Closes #2303
2020-07-06 00:40:14 +02:00
Andri Yngvason a54ed85881 examples: screencopy-dmabuf: Fix y-inversion 2020-07-01 11:43:02 +02:00
Simon Ser d5530b26d7 examples/pointer: fix wlr_renderer_end call order
Calling wlr_renderer_end after wlr_output_commit would make an
assertion fail.
2020-06-20 11:05:54 -06:00
Simon Ser 3c13527ead examples/fullscreen-shell: stop advertising linux-dmabuf unconditonally
Remove the wlr_linux_dmabuf_v1_create call. wlr_renderer_init_wl_display
will take care of creating the linux-dmabuf global if the OpenGL
implementation supports it.
2020-06-11 11:50:17 -06:00
Simon Ser 4615ce9099 examples/screencopy-dmabuf: call strncpy with maxlen - 1
The original code wasn't wrong since we were manually writing a null
byte anyway, but this makes GCC happy.

Closes: https://github.com/swaywm/wlroots/issues/2273
2020-06-11 07:34:55 -06:00
Andri Yngvason e0d4f75172 examples: Add screencopy-dmabuf example 2020-06-08 20:49:41 +02:00
Ilia Bozhinov 72f28ed0b3 examples: make output-power-management oneshot by default 2020-05-20 17:21:59 +02:00
Simon Ser 61d6408fdb examples/dmabuf-capture: use getopt
This makes it a little bit less annoying to provide the right arguments.
All options have reasonable defaults.
2020-05-01 16:57:08 +02:00
Simon Ser ab4f642153 build: use dicts instead of get_variable
Closes: https://github.com/swaywm/wlroots/issues/1963
2020-04-21 15:26:45 +02:00
Rabit 13db99b0f8 Prevent memory leak in copypaste of the screencopy example
If someone want to use screencopy as is processing multiple screenshots - it could be hard to find this issue with shm.
2020-03-25 20:36:12 +01:00
Michael Weiser 208e6da3c3 keyboard-shortcuts-inhibit: Add client example
Again, copy'n'search'n'replace the idle inhibit example to become a
simple keyboard shortcuts inhibit example, adding the active and
inactive events.

Getting the initial inhibitor needs to be done later than for idle
inhibit to avoid an error "xdg_surface has never been configured".

Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
2020-02-20 21:40:34 +01:00
Guido Günther 0df5019609 examples: add output-power-management example client 2020-02-20 16:23:45 +01:00
Scott Anderson 2fea2fced8 examples: Fix compositor-examples
Due to the way the wlr_output API was changed, these examples would
never get a frame event to start the rendering loop. We now commit the
outputs to start it.
2020-02-08 11:38:44 +01:00
Scott Anderson 70a084c119 meson: Fix protocol includes for compositor examples 2020-01-24 09:10:28 +00:00
Josef Gajdusek a7b538008b virtual-pointer: Add support for the wlr-virtual-pointer-unstable-v1 2019-12-31 10:29:02 +01:00
Scott Anderson cff1c2f740 meson: Various improvements
Bumps minimum version to 0.51.0

- Remove all intermediate static libraries.
  They serve no purpose and are just add a bunch of boilerplate for
  managing dependencies and options. It's now managed as a list of
  files which are compiled into libwlroots directly.

- Use install_subdir instead of installing headers individually.
  I've changed my mind since I did that. Listing them out is annoying as
  hell, and it's easy to forget to do it.

- Add not_found_message for all of our optional dependencies that have a
  meson option. It gives some hints about what option to pass and what
  the optional dependency is for.

- Move all backend subdirectories into their own meson.build. This
keeps some of the backend-specific build logic (especially rdp and
session) more neatly separated off.

- Don't overlink example clients with code they're not using.
  This was done by merging the protocol dictionaries and setting some
  variables containing the code and client header file.
  Example clients now explicitly mention what extension protocols they
  want to link to.

- Split compositor example logic from client example logic.

- Minor formatting changes
2019-12-23 07:48:29 -05:00
Jan Beich d0479cc2bc examples: set mode when creating shm object
$ screencopy
shm_open failed
failed to create buffer

$ posixshmcontrol ls
MODE            OWNER   GROUP   SIZE    PATH
---------       foo     foo     33177600        /wlroots-screencopy
2019-11-20 22:19:48 -05:00
Simon Ser 16e5e9541b Add -Wmissing-prototypes
This requires functions without a prototype definition to be static.
This allows to detect dead code, export less symbols and put shared
functions in headers.
2019-11-20 02:05:03 +00:00
Simon Ser 21b75e5d12 build: simplify by using disabler deps 2019-10-16 09:01:27 -04:00
Simon Ser 9796abcced build: workaround for meson disabler object not working with if not 2019-10-08 12:42:18 -04:00
Antonin Décimo 82f48b8912 examples: remove duplicated condition 2019-08-12 09:37:21 +09:00
Simon Ser ca45f4490c Remove all wayland-server.h includes
The documentation for wayland-server.h says:

> Use of this header file is discouraged. Prefer including
> wayland-server-core.h instead, which does not include the server protocol
> header and as such only defines the library PI, excluding the deprecated API
> below.

Replacing wayland-server.h with wayland-server-core.h allows us to drop the
WL_HIDE_DEPRECATED declaration.
2019-07-27 15:49:32 -04:00
Simon Ser 3dec88e455 Remove orbital screenshooter and gamma-control
These are undocumented, outdated protocols that have a better wlr-protocols
equivalent.
2019-06-02 09:30:47 -04:00
Ilia Bozhinov 22dd7d3731 examples: add fullscreening to foreign-toplevel.c 2019-04-29 00:00:53 +03:00
Simon Ser 23e37e7b1d output: refactor frame submission API
This is necessary for direct scan-out and other upcoming features. This patch
changes the output API to look like the wl_surface API.

Outputs now have some double-buffered state: the frame to be submitted
(currently only wlr_renderer frames are supported) and the damaged region.
To attach a pending frame, use wlr_output_attach_render. To set the pending
damaged region, use wlr_output_set_damage.

To submit the pending state, call wlr_output_commit. This will submit the
pending frame to the backend.

To migrate from the old API to the new one:

- Replace wlr_output_make_current calls by wlr_output_attach_render
- Replace wlr_output_swap_buffers calls by wlr_output_set_damage and
  wlr_output_commit
2019-04-23 14:34:30 -06:00
emersion 5445d8aad0 meson: enable more compiler warnings 2019-03-01 09:20:23 +01:00
emersion 7309d8c9ac
Fix two issues found with Clang's static analyzer 2019-01-29 19:56:43 +01:00
emersion a4eb90315e
Fix indentation in various files 2019-01-21 17:56:19 +01:00
Drew DeVault d4de2bd708
Merge pull request #1476 from emersion/fullscreen-shell
fullscreen-shell-v1: initial protocol implementation
2019-01-20 09:30:52 -05:00
Alexander Bakker 776b6ce395 Fix software cursor rendering for tinywl and some examples 2019-01-13 21:39:56 +01:00
Jan Beich f80d174e8b Simplify evdev includes on FreeBSD by relying on up-to-date package
As evdev-proto is installed by CI some files have been missed:

 ../examples/pointer-constraints.c:2:10: fatal error: 'linux/input-event-codes.h' file not found
 #include <linux/input-event-codes.h>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
 ../examples/relative-pointer-unstable-v1.c:5:10: fatal error: 'linux/input-event-codes.h' file not found
 #include <linux/input-event-codes.h>
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
2019-01-07 08:08:47 +00:00