Commit Graph

177 Commits

Author SHA1 Message Date
Alex Smith
e3840a7d9d Merge pull request #97 from mdiluz/add-more-integration
Have the full bootstrap script run in the CI
2019-01-29 16:39:32 +00:00
Marc Di Luzio
7ae8dee064 Remove SCHED_ISO from gamemode.c
As per request, no longer needed
2019-01-29 16:38:25 +00:00
Marc Di Luzio
e481717b6f Run gamemoded -v as well to ensure basic functionality works 2019-01-28 18:57:56 +00:00
Marc Di Luzio
19d902f22f Run bootstrap in the integration 2019-01-28 18:57:56 +00:00
Marc Di Luzio
3d9b945d64 Define SCHED_ISO if not defined 2019-01-28 18:57:56 +00:00
Marc Di Luzio
1398795aa3 Only request input if we're not travis 2019-01-28 18:57:56 +00:00
Marc Di Luzio
eb13713529 Install dependencies needed for build 2019-01-28 18:57:09 +00:00
Marc Di Luzio
94f47372d7 Upgrade the travis docker image to use xenial
Fix clang-format package name
2019-01-28 18:50:12 +00:00
Alex Smith
020ff9ad7c Merge pull request #96 from mdiluz/disable-screensaver
Add code to disable the screensaver during Game Mode
2019-01-28 18:13:08 +00:00
Alex Smith
60dd174acc Merge pull request #95 from mdiluz/add-tests
Add integration tests
2019-01-28 18:09:20 +00:00
Marc Di Luzio
868ed27b43 Fix up calling screensaver, now appears to work 2019-01-28 16:36:56 +00:00
Marc Di Luzio
c25fc285ee Add initial screensaver inhibiting code 2019-01-28 16:36:56 +00:00
Marc Di Luzio
a0d737f9db Correct error message when the initial query fails 2019-01-28 16:36:08 +00:00
Marc Di Luzio
b60ba6c00c Correct help message 2019-01-28 16:36:08 +00:00
Marc Di Luzio
12bc45398f Improve the test output 2019-01-28 16:36:08 +00:00
Marc Di Luzio
8de3600984 Properly handle quitting by request, and use that in the tests 2019-01-28 16:36:08 +00:00
Marc Di Luzio
f83d4d26d8 Small refactor
Single and dual client tests split into functions
2019-01-28 16:36:08 +00:00
Marc Di Luzio
c83fca408b Add a preliminary client test suite
This simply tests the current functionality of the gamemode_client tools by calling each function in turn and checking the values return correctly.

	Requires the gamemode service to currently be running and installed on the system.
2019-01-28 16:36:08 +00:00
Marc Di Luzio
825b077f6d Add game_mode_run_tests function to trigger tests 2019-01-28 16:36:08 +00:00
Marc Di Luzio
1206826cea Add -t option to run tests on self
Right now only prints
2019-01-28 16:36:08 +00:00
Alex Smith
56e083eb60 Merge pull request #91 from suvayu/master
Configurable prefix path
2018-12-14 15:07:00 +00:00
Alex Smith
b64e143753 Merge pull request #85 from terencode/master
Add with-pam-group meson option
2018-12-10 09:53:29 +00:00
Térence Clastres
06ec97f968 Add with-pam-group meson option
This adds 10-gamemode.conf as a limits.d configuration file and with-pam-group meson option to allow renicing as an unpriviledged user being part of the specified group.

Signed-off-by: Térence Clastres <t.clastres@gmail.com>
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-12-07 21:50:58 +01:00
Suvayu Ali
5c87d798e1 bootstrap.sh: configurable prefix path 2018-12-02 09:22:06 +05:30
Alex Smith
ef8c4c7341 Merge pull request #86 from kakra/modular-refactor
Tidy up the code and refactor into modules
2018-10-10 08:55:58 +01:00
Kai Krakow
89b970b8d2 formatcheck: Use a shorter timeout
If the internet connection is down, the default timeout of wget is
unreasonably long. If formatcheck is used as a pre-commit hook, this
blocks usage of git for a long time although we probably have
git-clang-format available.

Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-09 00:49:58 +02:00
Kai Krakow
fb3e3d0caf refactor: Simplify the log hinter
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-09 00:33:46 +02:00
Kai Krakow
ab9b45ac15 refactor: Break wine API functions out of the main daemon source
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-09 00:33:46 +02:00
Kai Krakow
ce50992236 refactor: Break ioprio API functions out of the main daemon source
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-09 00:33:46 +02:00
Kai Krakow
f9ad4ca1ef refactor: Break sched API functions out of the main daemon source
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-09 00:33:46 +02:00
Kai Krakow
c51f9f5003 refactor: Avoid exposing various internal types
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-09 00:33:46 +02:00
Kai Krakow
a8780b7e03 refactor: Break env API functions out of the main daemon source
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-09 00:33:46 +02:00
Kai Krakow
6e272db1aa refactor: Break proc API functions out of the main daemon source
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-09 00:33:46 +02:00
Kai Krakow
4943126321 refactor: Break helpers out of the main daemon source
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-08 20:53:04 +02:00
Alex Smith
39a145773a Merge pull request #84 from kakra/improve-scheduler-logging
gamemode-scheduler: Improve logging
2018-10-08 17:30:06 +01:00
Alex Smith
61fc64c8dc Merge pull request #79 from kakra/identify-wine-exe
Identify original wine exe by PID
2018-10-08 17:28:01 +01:00
Kai Krakow
1c57f28a84 gamemode: Explain the concerning logs a little better
Testing showed that wine processes may provoke some concerning logs
multiple times. Let's explain this a little more so no questions from
worried users show up.

Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-05 20:03:17 +02:00
Kai Krakow
f23b57af12 gamemode: Convert game_mode_context_has_client() to return the client
Returning a bool is not useful if we want to create some log information
from this. It now returns NULL or a client pointer which is compatible
with all of the current users.

When dereferencing the returned pointer, a read lock must be acquired
around using the returned result as the client may be deallocated from
heap otherwise.

Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-05 20:03:17 +02:00
Kai Krakow
5a6ea9598c gamemode: Add a tiny buffered snprintf helper
Be careful using this as it may introduce some non-obvious pitfalls.
This saves us from a heap allocation in some code locations.

Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-05 20:03:17 +02:00
Kai Krakow
3c309d1334 gamemode: Map wine preloaders to original exe
This commit hooks game_mode_resolve_wine_preloader() into the function
to lookup the exe from a PID.

Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-05 19:54:40 +02:00
Kai Krakow
e89503719c gamemode: Add function to resolve the wine preloader executable
This commit adds a function to resolve a wine preloader binary into its
original windows binary.

Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-05 19:54:40 +02:00
Kai Krakow
f917b4a29c gamemode: Add a helper to compare string tails
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-05 19:54:40 +02:00
Kai Krakow
7b98c9ada2 gamemode: Add function to search environment of a PID
This function can look up arbitrary environment variables from a running
PID (given we have access permissions which should be usually true).

Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-05 19:54:40 +02:00
Kai Krakow
e7c2ad2f30 gamemode: Add function to lookup user home directory
We first try to use `$HOME`, and only then fall back to passwd lookup.

Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-05 19:54:40 +02:00
Kai Krakow
a2bad640a3 gamemode: Make game_mode_context_find_exe() thread-safe
Let's use our new safe_snprintf() helper. It's designed to make
thread-safe usage easy and will also be used by the next commits.

Reported-by: Alex Smith <alex@alex-smith.me.uk>
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-05 19:54:40 +02:00
Kai Krakow
046cb8a50f gamemode: Add a tiny safe snprintf helper
Give it a buffer, it returns an allocated string respecting the buffer
size.

Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-05 19:54:23 +02:00
Kai Krakow
055cc0e729 gamemode: Add executable to initializer
This allows to initialize the GameModeClient later and cleans up the
error path.

Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-05 19:45:31 +02:00
Kai Krakow
7101e8cd8f gamemode: Optimize detection of dupe registers
GameMode can do a pretty expensive lookup function now for the exe.
Let's spare some CPU cycles by detecting a duplicate PID early. Nothing
makes use of the exe path at this stage.

Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-05 19:45:31 +02:00
Kai Krakow
56803d6b66 gamemode: Never add NULL to the client list
When running wine games, there's good chance the executable is already
gone when GameMode decided to add it to the list. Let's silently bail
out here. It probably grabs a non-matching PID anyway in this moment.

Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-05 19:45:31 +02:00
Kai Krakow
1d2048dd93 dbus-messaging: Add missing trailing \n
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-05 19:45:30 +02:00