623 Commits

Author SHA1 Message Date
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
Marc Di Luzio
23dd471f6b Add clang analyzer check using scan-build 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
c276f760c7 Add comment about the reaper thread dealing with config file changes 2019-05-19 11:15:47 +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
b04e39df43 Merge pull request #143 from mdiluz/client-example-check
Small client header improvements
2019-05-19 11:06:48 +01:00
Alex Smith
09e475e092 Typo fixes 2019-05-19 11:05:41 +01:00
Alex Smith
139b644d6d Merge pull request #142 from mdiluz/fixes-and-longoptions
ioprio and niceness fixes, and long cmdline options
2019-05-19 11:01:03 +01:00
Marc Di Luzio
f41ecda047 Fix a missing e 2019-05-15 18:58:12 +01:00
Marc Di Luzio
7ede50af39 Make sure we actually build the examples in the travis tests
Otherwise failing changes to gamemode_client.h risk passing
2019-05-15 18:56:14 +01:00
Marc Di Luzio
ddecc89f10 Add a note about GAMEMODE_AUTO and blocking calls 2019-05-15 18:56:14 +01:00
Marc Di Luzio
ddc802573a Remove unneeded includes in gamemode_client.h 2019-05-15 18:56:14 +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
Marc Di Luzio
139b90e0b7 Refactor the process test function
Make it simply take a functor to the per tid get method
2019-05-13 19:44:22 +01:00
Marc Di Luzio
4091a0c532 Now that renice works - set it to a hard fail again
Also move some comments around
2019-05-13 19:44:22 +01:00
Marc Di Luzio
f00a89bc56 Actually apply setpriority to the thread not the client 2019-05-13 19:44:22 +01:00
Marc Di Luzio
2d19b61a38 Always log when getpriority fails - we will likely want to know 2019-05-13 19:44:22 +01:00
Marc Di Luzio
16c932f5d0 Adjust logs for generic process test function 2019-05-13 19:44:22 +01:00
Marc Di Luzio
f152ea9338 Initial implementation of applying renice to all process threads 2019-05-13 19:44:22 +01:00
Marc Di Luzio
3ac49385dc Add a test for renicing multithreaded processes 2019-05-13 19:44:22 +01:00
Marc Di Luzio
87cfd9c5a6 Remove error log about known issue now that it is fixed 2019-05-13 19:44:22 +01:00
Marc Di Luzio
38e48a2d8e Update logging to reflect thread, client relationship 2019-05-13 19:44:22 +01:00
Marc Di Luzio
bf2b057915 First pass at fix for ioprio not applying to process tree properly
See https://github.com/FeralInteractive/gamemode/issues/140
2019-05-13 19:44:22 +01:00
Marc Di Luzio
6639b17500 Make the multithreaded ioprio tests not cause a full failure 2019-05-13 19:44:22 +01:00
Marc Di Luzio
6869470f9b Fix feature status codes - failures here should be considered a failure 2019-05-13 19:44:22 +01:00
Marc Di Luzio
934b497603 Implement multithreaded test framework (and use for ioprio)
ioprio tests will now fail due to https://github.com/FeralInteractive/gamemode/issues/140
2019-05-13 19:44:22 +01:00
Marc Di Luzio
5ffe832faf Don't store the initial values
1. We don't use them anyway (though that could be a feature request)
	2. They weren't stored per-client, so would be incorrect anyway
2019-05-11 13:24:13 +01:00
Marc Di Luzio
7f196cdd1a Fix formatting for travis 2019-05-11 13:06:43 +01:00
Marc Di Luzio
598969a538 Implement restoring the old ioprio value when unregistered
Another part of the fix for https://github.com/FeralInteractive/gamemode/issues/141
2019-05-11 12:08:29 +01:00
Marc Di Luzio
2249a71355 Get ready for re-setting ioprio value on un-register
Implements tests for feature

	Fixes CLAMP macro
2019-05-11 12:08:29 +01:00
Marc Di Luzio
6d14149658 Reset renice value on unregister
Part of fixing up https://github.com/FeralInteractive/gamemode/issues/141
2019-05-11 12:08:29 +01:00
Marc Di Luzio
09d63ae4f5 Set up for resetting niceness value
Add tests to check this feature
	Apply config validation in config for simplicity

	Note: if anything messes with the niceness (ie. it starts non-zero, or it's not the expected value during setup, we'll bail out)
2019-05-11 12:08:29 +01:00
Marc Di Luzio
7e5216c4a0 Some comments and cleanup 2019-05-11 12:08:29 +01:00
Marc Di Luzio
a482b72d37 Fix comments in gamemode_client.h 2019-05-11 12:08:29 +01:00
Marc Di Luzio
717777e6c2 Implement PID support for --request and --status 2019-05-11 12:08:29 +01:00
Marc Di Luzio
baff9c0363 Allow for long options using getopt_long 2019-05-11 12:08:29 +01:00
Alex Smith
99c7d04e69 Add a link to the GNOME Shell extension 2019-05-07 09:30:33 +01:00
Alex Smith
4a49a1c2a5 Add a list of games which integrate GameMode support (#135) 2019-05-07 09:25:33 +01:00
Alex Smith
67c7aa04d6 Merge pull request #136 from gicmo/sandbox_root
Use readlink instead of realpath so find_exe works for flatpaks
2019-05-07 09:15:56 +01:00