718 Commits

Author SHA1 Message Date
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
Alex Smith
2a124ce8c7 Merge pull request #151 from mdiluz/patch-1
Turn off debug logging in client impl
2019-06-01 13:46:06 +01:00
Alex Smith
fc46ffc463 Merge pull request #148 from mdiluz/the-big-cleanup
Spring cleaning
2019-06-01 13:44:38 +01: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
a5e00bc94e Turn off debug logging in client impl
Accidentally left in #147
2019-06-01 11:00:33 +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
Alex Smith
a837b8630c We depend on DBus development packages now 2019-05-29 16:02:49 +01:00
Alex Smith
37108d7c6b Merge branch 'libdbus' 2019-05-29 15:53:27 +01:00
Alex Smith
7ebe633026 Merge pull request #150 from mdiluz/fix-inotify
inotify fix
2019-05-29 15:36:19 +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
Christian Kellner
e87a8f19f3 lib: use libdbus for client's dbus messaging
Switch the dbus implementation for the client from systemd to
libdbus. The main reason is that, in flatpaks systemd is not easily
available. No phenomenological change for users of the library,
hopefully.
2019-05-27 13:44:44 +02: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
Alex Smith
128d9b1364 Merge pull request #145 from mdiluz/fix-clang-static-analyser-issues
Add a clang static analyser check and fix issues
2019-05-24 08:19:43 +01:00
Alex Smith
c502e00b7c Merge pull request #146 from gicmo/flatpak_portal
Add support for flatpak portal
2019-05-24 08:15:45 +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
Christian Kellner
0c36f3a6b0 Talk to the portal when running inside a flatpak
When we detect that we are running inside a flatpak, talk to the
flatpak portal D-Bus service instead of the session daemon. This
is necessary because flatpak uses pid namespace isolation (see
man pid_namespaces(7)) and thus the pid needs to be translated
from the flatpak pid namespace to the host namespace. This
translation is happening inside the GameMode xdg-desktop-portal.
2019-05-21 00:34:45 +02:00
Christian Kellner
536d687c9a Use defines for dbus name, path, interface
That gives some meaning to the strings and makes it easier to see
what the arguments of sd_bus_call_method mean without checking the
function docs.
2019-05-20 14:39:09 +02: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