Commit Graph

247 Commits

Author SHA1 Message Date
Simon Ser af7cdec82d build: use has_headers in find_library()
This allows to make sure the library's header files are available.
2021-04-18 15:02:44 +02:00
Simon Ser 47f9e1ccea build: remove dirs from iniparser find_library() call
The docs say:

> By default the library is searched for in the system library directory (e.g.
> /usr/lib).

So it should already do the right thing.
2021-04-18 15:02:44 +02:00
Simon Ser d1328e2f4b build: remove intermediate static library
We don't really need to build an intermediate static library, and
it's causing pain wrt. include directories and dependencies.
2021-04-18 15:02:44 +02:00
Simon Ser f8f188a73e ci: add /usr/local to search paths on FreeBSD
Because of an upstream Meson bug [1], the /usr/local prefix used
by ports is not included in default Meson search paths. Do it
explicitly for now.

[1]: https://github.com/mesonbuild/meson/issues/4468
2021-04-18 15:02:44 +02:00
columbarius 5e4edae701 wlr_screencast: remove wl_display_dispatch
wl_display_dispatch is unnecessary and can cause hangs, if no new requests are queued
2021-04-17 16:25:54 +02:00
Simon Ser 4af11c7a4f readme: don't show PR status in CI badge 2021-04-17 11:58:29 +02:00
columbarius ca46a98b86 wlr_screencast: add xdg_output_listener after output registration if possible 2021-04-17 11:33:48 +02:00
columbarius 3ca286b0b4 wlr_screencast: call wlr_remove_output only if global is an output 2021-04-17 11:33:48 +02:00
columbarius d83431335d wlr_screencast: create clean xdpw_wlr_output and free on remove 2021-04-17 11:33:48 +02:00
Aleksei Bavshin 9ba958c7d2 Fix gcc warnings on invalid `free` call
```
../src/core/config.c: In function ‘finish_config’:
../src/core/config.c:26:9: error: ‘free’ called on pointer ‘config_7(D)’ with nonzero offset 16 [-Werror=free-nonheap-object]
   26 |         free(&config->screencast_conf.exec_before);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/core/config.c:27:9: error: ‘free’ called on pointer ‘config_7(D)’ with nonzero offset 24 [-Werror=free-nonheap-object]
   27 |         free(&config->screencast_conf.exec_after);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/core/config.c:28:9: error: ‘free’ called on pointer ‘config_7(D)’ with nonzero offset 32 [-Werror=free-nonheap-object]
   28 |         free(&config->screencast_conf.chooser_cmd);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
```
2021-04-10 10:50:24 +02:00
columbarius 94f1f5d0a8 screencast: workaround corrupted output_list 2021-04-02 15:07:38 +02:00
columbarius d556426359 man: add entry for chooser_cmd and chooser_type 2021-04-02 15:07:38 +02:00
columbarius 9d78b21695 screencast: add outputchooser with config option
Supports "dmenu" chooser type, which is called with a dmenu type list
piped to stdin, "simple" type, which recieves nothing on stdin and
default, which tries the hardcoded choosers.
Choosers are required to return the name of the choosen output as given
by the xdg-output protocol.

Thanks to piater for closing overlooked pipes.
Thanks to ericonr for suggestions regarding fork and pipes.
2021-04-02 15:07:38 +02:00
David96 4c2d8fc808 Add exec_before and exec_after
Adds an option to execute some program before and after screencast (e.g.
for disabling notifications during a cast)
2021-03-16 23:44:08 +01:00
Dan Shick d3e1f7100c Update CI config to build man pages 2021-03-16 21:26:14 +01:00
Stefano Ragni 6c8f6ca78e pipewire: Fix building EnumFormat spa object
Make sure that in SPA_POD_CHOICE_ENUM_Id(n_vals, ...) we always pass
exactly n_vals arguments. For this we build the object with separate
spa_pod_builder_add calls, since n_vals is known at runtime.
Fix #102
2021-03-16 15:43:47 -04:00
Simon Ser f3bd5195e4 Add man page 2021-03-15 18:09:32 +01:00
Simon Ser a18c298ad4 Don't use ~/.config when XDG_CONFIG_HOME is set
According to the spec, ~/.config is a fallback used when
XDG_CONFIG_HOME is unset. When the user has explicitly set
XDG_CONFIG_HOME, we shouldn't try to use the fallback.
2021-03-15 18:08:57 +01:00
Simon Ser 491cbb1cc6 Constify config_path arguments
These are not modified.
2021-03-15 18:08:57 +01:00
Simon Ser b92ad3eb6b Drop /etc/xdg-desktop-portal-wlr/ from config file dirs
We were checking both /etc/xdg-desktop-portal-wlr/ and
/etc/xdg/xdg-desktop-portal-wlr/. These two directories serve the same
purpose, let's just settle on a single one.
2021-03-15 18:08:57 +01:00
Zsolt Donca ab8ff54f4c Control how many frames are captured per second
The goal is to control the rate of capture while in screencast, as it
can represent a performance issue and can cause input lag and the
feeling of having a laggy mouse.

This commit addresses the issue reported in #66.

The code measures the time elapsed to make a single screen capture, and
calculates how much to wait for the next capture to achieve the targeted
frame rate. To delay the capturing of the next frame, the code
introduces timers into the event loop based on the event loop in
https://github.com/emersion/mako

Added a command-line argument and an entry in the config file as well
for the max FPS. The default value is 0, meaning no rate control.

Added code to measure the average FPS every 5 seconds and print it with
DEBUG level.
2021-03-08 16:59:17 +01:00
danshick 323d89ead7 Fix link to trigger-screen-shot.py 2021-03-04 20:42:40 +01:00
Simon Ser 4489ea4bb6 Fix whitespace issues in meson.build 2021-03-04 20:17:35 +01:00
Simon Ser d3ac33a0aa Fix segfault in config_parse_file
configfile is a `char *`. %s needs a `char *`, so we shouldn't
dereference the pointer here.

Closes: https://github.com/emersion/xdg-desktop-portal-wlr/issues/91
2021-03-04 14:16:30 -05:00
columbarius 07154bb1e3
Add support for config file
Closes: https://github.com/emersion/xdg-desktop-portal-wlr/issues/60
2021-03-03 10:29:56 +01:00
Simon Ser e103e120e2 Bump to v0.2.0 2021-02-15 10:22:29 +01:00
danshick 92e6877fce
Update README to include repology badge 2021-02-15 10:20:30 +01:00
Simon Ser 5401e7f9f2 Add --replace flag
This allows replacing a running xdpw instance. xdg-desktop-portal
itself has this feature.

This is useful when developing, to stop the currently running
system instance.
2021-02-11 13:24:53 -05:00
Simon Ser c6d52b4412 Remove extraneous whitespace 2021-02-11 18:55:48 +01:00
Simon Ser 9f72a6d874 Fix freeze on skipped frame
When a frame is skipped, we weren't destroying the wlr frame. Since
this function kicks off the next frame capture, the stream was getting
stuck.

Closes: https://github.com/emersion/xdg-desktop-portal-wlr/issues/81
2021-02-11 18:55:48 +01:00
Tobi Fuhrimann 5b646c0482 Link official Arch Linux package in readme 2021-02-09 23:55:32 +01:00
Jan Beich cf3e02695e ci: add FreeBSD job
Test basu unlike Alpine (elogind) and Arch (systemd).
2021-01-09 12:21:13 +01:00
Jan Beich a3e203584a screencast: prefix macros to avoid conflict with system definitions
In file included from ../src/screencast/wlr_screencast.c:18:
../include/pipewire_screencast.h:7:9: error: 'ALIGN' macro redefined [-Werror,-Wmacro-redefined]
 #define ALIGN 16
         ^
/usr/include/machine/param.h:79:9: note: previous definition is here
 #define ALIGN(p)                _ALIGN(p)
         ^
2021-01-09 12:21:13 +01:00
Jan Beich 4dbeaf3a06 build: add basu as sd-bus provider
Based on https://github.com/emersion/mako/commit/805663cc76e0
2021-01-09 12:21:13 +01:00
Jan Beich 7b7d927cae build: introduce sd-bus-provider option
Based on https://github.com/emersion/mako/commit/67f2ed1862a9
2021-01-09 12:21:13 +01:00
Isaac Freund 727f13f34d Add river to portal UseIn list 2020-12-08 15:46:19 +01:00
columbarius f0e1de02f4 Fix cursor_mode checks in screencast.c 2020-11-06 13:44:58 +01:00
columbarius 24bc68f0f2 Remove SPA_PARAM_BUFFERS_dataType
Don't announce a SPA_PARAM_BUFFERS_dataType. This is reserved for consumer
2020-11-04 11:09:09 -05:00
Christopher Snowhill cb36e0df23 Add Wayfire to portal UseIn list, as it is also supported 2020-10-27 08:25:12 +01:00
columbarius dafb25fdb1
Update to wlr-screencopy-unstable-v1 version 3 2020-10-19 23:40:30 +02:00
columbarius 39b82ff471 Bump minimum pipewire version 2020-09-19 10:22:44 +02:00
columbarius c2883a4e43 Add pipewire buffers_dataType parameter in pipwire_screencast.c 2020-09-19 10:22:44 +02:00
Manuel Romei 25e7719d18
Revert "Remove unnecessary check from wlr_screencast.c" (#54)
* Revert "Remove unnecessary check from wlr_screencast.c"

This reverts commit cc59abb124.
Fixes emersion/xdg-desktop-portal-wlr#50

* Clarify why the check in wlr_screencast is needed
2020-09-11 10:38:04 -04:00
columbarius 61db8968f9 Fix linewidth in wlr_screencast.c 2020-08-23 20:06:47 +02:00
columbarius cc59abb124 Remove unnecessary check from wlr_screencast.c 2020-08-18 15:47:44 +02:00
columbarius 5ea10ef253 Remove TODO from wlr_sreencast.c 2020-08-18 15:47:44 +02:00
columbarius a8d12c6163 Rename wlr_frame_buffer_clear to wlr_frame_buffer_destroy in wlr_screencast.c 2020-08-18 15:47:44 +02:00
columbarius 24a793135c Add comments to wlr_frame_buffer_clear in wlr_screencast.c 2020-08-18 15:47:44 +02:00
columbarius 06aa0a0bda Change loglevel for existing buffer in wlr_screencast.c 2020-08-18 15:47:44 +02:00
columbarius 15e30ed35d Remove unecessary checks in wlr_screencast.c 2020-08-18 15:47:44 +02:00