289 Commits

Author SHA1 Message Date
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
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
Marc Di Luzio
e9ab20be60 Add comments to the two parts where clang-format is off 2019-06-01 11:18:08 +01:00
Marc Di Luzio
702407595a Rename duplicate CONFIG_VALUE_MAX
Leave a static assert to ensure they're in sync when relevant in gamemode-gpu
2019-06-01 11:12:10 +01:00
Marc Di Luzio
c5c966ad54 Add back needed include 2019-06-01 10:57:27 +01:00
Marc Di Luzio
e537caf170 Ensure we're more specific about clang format options and include order 2019-06-01 10:57:27 +01:00
Marc Di Luzio
2e67906402 Remove unneeded includes 2019-06-01 10:57:27 +01:00
Marc Di Luzio
28243afde9 Clean up the main readme file and split some parts out
This groups development, daemon and lib parts together much better
2019-06-01 10:56:27 +01:00
Marc Di Luzio
98e656f9ec Clean up self explanatory comments 2019-06-01 10:54:22 +01:00
Marc Di Luzio
1b78d0dcf7 Restructure files and libraries
Rename a bunch of files to make the consistent
	Create two new subdirectories for common code, and utilities
2019-06-01 10:54:22 +01:00
Marc Di Luzio
41988b7f1c Move code only used for Wine detection into wine file 2019-06-01 10:54:22 +01:00
Marc Di Luzio
2bca1fb04e Remove commented includes 2019-06-01 10:54:22 +01:00
Marc Di Luzio
81e38d02e6 Move daemonise code to main file, simplifying files 2019-06-01 10:54:22 +01:00
Marc Di Luzio
9d484061ad Remove extra comments in config that didn't explain anything 2019-06-01 10:54:22 +01:00
Marc Di Luzio
717d6cc003 Correct the inotify failure message 2019-06-01 10:54:22 +01:00
Marc Di Luzio
1df1852c76 Move most Wine could out to Wine file 2019-06-01 10:54:22 +01:00
Marc Di Luzio
75dc083616 Remove artificial max client limit
This is just additional code that isn't required, and could mask or cause problems.
2019-06-01 10:54:22 +01:00
Marc Di Luzio
71d4fab15e Fix inotify for https://github.com/FeralInteractive/gamemode/issues/149
1. Don't look for ATTRIB changes - these spawn extra unneeded events when other watches will catch actual edits
	2. Move name check code out of IN_ISDIR, I mistook IN_ISDIR to mean the event was from a dir watch, but this was incorrect
2019-05-28 16:37:34 +01:00
Alex Smith
3a2ebd1cdf Merge pull request #144 from mdiluz/add-config-hotreloading
Add config hot-reloading
2019-05-24 08:58:43 +01:00
Marc Di Luzio
a0b850474d Fix comments 2019-05-24 08:48:38 +01:00
Marc Di Luzio
a9e3f866a0 Extend the context rwlock around where we apply optimisations
This prevents a potential race condition for when the reaper thread reloads the config
2019-05-24 08:45:14 +01:00
Marc Di Luzio
83c4d38858 Use PATH_MAX-1 as strncopy doesn't always set the final null byte 2019-05-21 09:06:27 +01:00
Marc Di Luzio
44ab695246 Fix memory leak ambiguity with executable names 2019-05-19 12:47:32 +01:00
Marc Di Luzio
9db7442a31 Fix potential memory leak in game_mode_initialise_gpu 2019-05-19 12:47:32 +01:00
Marc Di Luzio
89904602e9 Fix formatting for travis 2019-05-19 11:24:51 +01:00
Marc Di Luzio
5d0a413035 Only perform the leave/enter loop when gamemode is already active/has clients 2019-05-19 11:15:47 +01:00
Marc Di Luzio
ec55bda3b2 Implement inotify check on the reaper thread for config changes 2019-05-19 11:15:47 +01:00
Marc Di Luzio
ceb1808c95 Initial implementation of a RefreshConfig dbus interface 2019-05-19 11:15:47 +01:00
Alex Smith
16e7d06083 Fix up error logging in game_mode_resolve_wine_preloader()
proc_path was never set to non-null but used for error logging, this
triggered -Wformat-overflow warnings on GCC 9. Use the pid instead
and remove that variable.
2019-05-19 11:12:17 +01:00
Alex Smith
09e475e092 Typo fixes 2019-05-19 11:05:41 +01:00
Marc Di Luzio
a27e741beb Reformat long_options now that travis matches 2019-05-15 18:43:42 +01:00
Marc Di Luzio
f401b49b1a Close the openned task dirs to prevent a leak 2019-05-15 18:20:36 +01:00
Marc Di Luzio
41d35fa12a Add a zeroed final option for getopt_long for correctness 2019-05-15 18:17:50 +01:00
Marc Di Luzio
0d018d91a8 Implement some error logging/checking and clean up some TODO comments 2019-05-13 19:44:22 +01:00
Marc Di Luzio
ef29b35258 Make sure we don't leave a hanging gamemode request from the child process
Otherwise other tests might have to wait for the reaper thread to clean it up
2019-05-13 19:44:22 +01:00