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