501 Commits

Author SHA1 Message Date
Alex Smith
d25379e001 Increase a test timeout to avoid spurious failures 2019-10-22 12:31:53 +01:00
Alex Smith
514ab58be3 Merge pull request #173 from gicmo/pidfds
Introduce a new pidfd based set of D-Bus APIs
2019-10-22 12:31:00 +01:00
Christian Kellner
6f7df91b60 lib: support the new pidfd based APIs
Try to make API requests using the new pidfd based APIs. If getting
the pidfds fails or if the remote (daemon) does not support the new
pidfd based D-Bus API, transparently fall back to the old API.
2019-10-21 16:20:22 +02:00
Christian Kellner
b84d673aae meson: reorder lib and common subdir
So that lib can depend on the new library from common.
2019-10-18 13:19:30 +02:00
Christian Kellner
cd6c2ee612 common: create another lib tailored for the client
Use a small subset of the existing common files to create another
static library to be used from the client library.
2019-10-18 13:19:30 +02:00
Christian Kellner
a6552044cd daemon: add new pidfd based D-Bus API
Provide a new set of APIs with identical semantics as the existing
ByPID family of calls but instead of working with process ids, they
take pidfds, file descriptors representing processes, instead. The
fds can be translated back to pids (in the correct namespace) and
also be monitored via select/poll/epoll.
The current implementation translates them directly back to pids,
but in the future the monitoring code that watches processes (if
they are still alive) could be converted be event driven via pidfds.
2019-10-18 13:19:30 +02:00
Christian Kellner
5398dd1d19 common: add pidfd related methods
Add functions to open pidfds, i.e. file descriptors representing
processes, for process ids and vice versa. Both functions work
an array of fds/pids, stop on error and return the number of
successfully handled items.
2019-10-18 13:19:30 +02:00
Christian Kellner
4b59818fd4 common: add autofree helper
Much like the auto-closing helper for file descriptors, add a new
auto-free helper that is meant to be used with dynamically allocated
memory, a la:
  autofree char *data = NULL;
  ...
  data = malloc(size);
When data goes out of scope, cleanup_free will be called with &data,
i.e. cleanup_free(&data), which in turn will call free(3) data. In
order to work with all types, e.g. 'char *' (resulting in char **
being passed to cleanup_free) or 'int *' (resulting in int ** being
passed to cleanup_free), cleanup_free is defined to work with void *,
hence the odd-looking cast: void *target = *(void **) ptr.
2019-10-18 13:19:30 +02:00
Christian Kellner
35fb7f5baf meson: include dir in daemon_common dependency
Specify the include directory in the link_daemon_common dependency
and thus everything that includes that as a dependency will get
the proper include directory automatically.
2019-10-18 13:19:30 +02:00
Christian Kellner
b7dc1dc10c daemon: small fix for code comments
Comments were not reflecting the what they were describing.
2019-10-18 13:19:30 +02:00
Christian Kellner
b513bc65ae lib: extract dbus messaging code
Separate the D-Bus messaging code from gamemode_request().
2019-10-18 13:19:30 +02:00
Christian Kellner
f6220a2d6e lib: do flatpak check only once
Either we are in a flatpak or not, this doesn't change, so we can
just remember the result.
2019-10-18 13:19:30 +02:00
Kai Krakow
24f054659c gamemode-context: Avoid GameModeClient *cl being NULL
There's no need in defining it at the top of the function. During
rebase, I had one `if` accessing `cl->executable` too early but we were
only storing the path in `executable` at that point.

This change avoids accessing `cl` while it might be NULL.

Signed-off-by: Kai Krakow <kai@kaishome.de>
2019-10-18 09:42:06 +01:00
Alex Smith
0668e3b4da Change Lutris instructions to say that it will enable GameMode by default when available 2019-08-12 08:40:53 +01:00
Alex Smith
30ae8d71f0 Adjust install prompt
Now reads: "Install to $prefix? [y/N]" to indicate that the default
choice if pressing enter without any extra input will be no. Suggested
by #169.
2019-08-11 10:14:46 +01:00
Alex Smith
509ae3593a Merge pull request #165 from Aurnytoraink/patch-1
Add Lutris instructions
2019-08-11 10:00:30 +01:00
Alex Smith
5add7f41b3 Merge pull request #168 from highvoltage/master
Fix typo s/Coudn't/Couldn't/g
2019-08-11 09:57:29 +01:00
Jonathan Carter
8182edc048 Fix typo s/Coudn't/Couldn't/g 2019-08-05 09:50:32 +00:00
Mathieu H
86473bea0a Add Lutris instructions 2019-07-29 16:41:07 +02:00
Alex Smith
711e5e9995 Merge pull request #163 from akien-mga/mageia-package
Mention Mageia package in README
2019-07-22 14:45:45 +01:00
Rémi Verschelde
33f8be9557 Mention Mageia package in README
http://madb.mageia.org/package/show/application/0/name/gamemode
2019-07-21 13:19:21 +02:00
Alex Smith
24687f960b Update version to 1.5-dev post-release 2019-07-21 10:39:11 +01:00
Alex Smith
acb57735fc Update version to 1.4 1.4 2019-07-21 10:24:18 +01:00
Christian Kellner
5c1b2d0c74 daemon: export GameModeClient::Requester on D-Bus
Expose the requeter process identifier as 'Requester' property
of the com.feralinteractive.GameMode.Game interface.
2019-07-16 19:00:35 +01:00
Christian Kellner
cfe0fb4f17 daemon: add requester to GameModeClient
Record the requester process id in the GameModeClient struct and
add a getter for it.
2019-07-16 19:00:33 +01:00
Christian Kellner
288b3a005e daemon: export GameModeClient::Timestamp on D-Bus
Expose the timestamp that a client was created as 'Timestamp'
property of the com.feralinteractive.GameMode.Game interface.
2019-07-16 18:59:44 +01:00
Christian Kellner
52367772c8 daemon: add creation timestamp to GameModeClient
Record the time a client was created, i.e. registered, in the
GameModeClient struct and add a getter for it.

(Alex Smith: Fixed up function documentation comments)
2019-07-16 18:59:01 +01:00
Christian Kellner
6f39ecbc9b meson: display util building status
We show the status for examples & daemon, also show it for 'util'.
2019-07-16 18:58:11 +01:00
Alex Smith
ffea085396 Follow up improvements to documentation for GAMEMODERUNEXEC 2019-07-16 08:17:35 +01:00
Stephan Lachnit
47db83e509 Add hybrid GPU support
Signed-off-by: Stephan Lachnit <stephanlachnit@protonmail.com>
2019-07-14 16:45:33 +02:00
Alex Smith
c7c464bea6 Merge pull request #158 from gicmo/objs_fix
daemon: properly report error in error case
2019-07-13 09:57:25 +01:00
Alex Smith
c6d1b45bfb Use the appropriate library path for whether the app is 32- or 64-bit in gamemoderun (#156) 2019-07-13 09:50:25 +01:00
Christian Kellner
9075829526 daemon: fix typo in Game.Executable dbus property
Fix spelling for the 'Executable' property in the interface
com.feralinteractive.GameMode.Game.
2019-07-12 17:01:01 +02:00
Christian Kellner
02ad53584d daemon: properly report error in error case
Currently, in method_list_games (`ListGames` on the bus), when
sd_bus_message_append fails, we break the loop but then we were
not reporting the error (contained in r) back to call.
2019-07-12 11:35:55 +02:00
Alex Smith
3881b8b2c8 Fix clang-format error 2019-07-07 11:42:31 +01:00
Alex Smith
60c68feea6 Use the GAME_PATH_PREFIX definition everywhere 2019-07-06 18:12:48 +01:00
Christian Kellner
f9827edfb6 daemon: emit client count change automatically
Every time a game is (un)-registered and we emit the corresponding
signal, also emit the properties change signal for ClientCount.
2019-07-04 16:04:35 +02:00
Christian Kellner
d2bab2962d daemon: export game objects on the bus
For each registered game, export an object on the bus under the
path "/com/feralinteractive/GameMode/Games/<pid>" with an dbus
interface of ""com.feralinteractive.GameMode.Game". The interface
currently provides to properties, ProcessId and Executable.
Additionally add the ListGames method and the GameRegistered,
GameUnregistered signals to the com.feralinteractive.GameMode
interface.
2019-07-04 16:04:35 +02:00
Christian Kellner
5949a988ea daemon: add game_mode_context_lookup_client method
Like game_mode_context_has_client, but will add a reference to
the client, if a match was found.
2019-07-02 17:47:05 +02:00
Christian Kellner
208f37b7d1 daemon: method to list all registered clients
Return an array of pid_t elements containing the process ids of
all registered clients. Memory ownership is transferred to the
client and must be freed.
2019-07-02 17:47:05 +02:00
Christian Kellner
455ea0c72e daemon: getters for properties of GameModeClient
Add getters for all two properties of GameModeCLient: the process
id and the executable path.
2019-07-02 17:46:52 +02:00
Christian Kellner
d99af40795 daemon: add game_mode_client_ref
Now that GameModeClient is reference counted, the counterpart to
game_mode_client_unref is also needed.
2019-07-02 17:46:31 +02:00
Christian Kellner
7e10cc3a0b daemon: make game_mode_client_unref public
So it can be used outside ouf gamemode-context.c.
2019-07-02 17:46:24 +02:00
Christian Kellner
1a863f32a1 daemon: add ref-counting to GameModeClient
This is so it can out-live its membership in the client list, e.g.
when it is passed outside of gamemode-context.c and the reaper
comes along and reaps a client in the background but we still are
using the struct outside.
2019-07-02 17:46:17 +02:00
Christian Kellner
2027e981e6 daemon: expose GameModeClient as opaque struct
First step to making GameModeClient useful outside of gamemode-
context.c.
2019-07-02 17:45:55 +02:00
Alex Smith
b3cec8d901 Merge pull request #152 from ysblokje/disable_utils
added option to disable building the utils
2019-06-03 08:13:20 +01:00
Alex Smith
ebbb9a3511 Fix libdbus-1-dev package name typo 2019-06-03 08:10:30 +01:00
Minze Zwerver
15ff22c745 added option to disable building the utils
When you need both 32 and 64 bit version of the library only
one version of the utils is required.
2019-06-02 12:35:33 +02:00
Alex Smith
e5286e1495 Add Three Kingdoms to list of games with integration 2019-06-01 13:50:24 +01:00
Alex Smith
b0c36c0eaa Remove unused LOG_ERROR, always log errors 2019-06-01 13:49:37 +01:00