Commit Graph

82 Commits

Author SHA1 Message Date
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
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
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
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
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
70e601267b daemon: use readlink not realpath to find the exe
The realpath(3) will fail if the target does not exist (internally
realpath will stat all the components of the link target path).
This is a problem in the case of sandbox applications where
the exe points to the absolute path *inside* the sandbox, e.g. to
/app/bin/<name> in the case of flatpak. For these cases realpath(3)
will then fail. Therefore use readlink(3) instead.
2019-05-02 11:29:58 +02:00
05909d1cfa daemon: add a ClientCount dbus property
Introduce a new "ClientCount" dbus property that can be queried and
also watched to see if gamemode is currently active (or not).
2019-04-11 00:09:52 +02:00
6d921617f9 daemon: make context_num_clients a public method
So it can be used from outside daemon/gamemode.c, to e.g. implement
an ClientCount property.
2019-04-10 23:57:00 +02:00
d12ab6830f No old-style function definitions.
Specify void as argument type for functions that don't take args.
2019-03-28 11:40:40 +00:00
10a31f8dec Update copyright years to 2019 2019-03-14 16:59:30 +00:00
9ade4481c3 Change AMD overclocking to simply be setting the power_dpm_force_performance_level file for now
This covers the MVP for now, and simply allows pinning the power level to "high"

	Full overclocking set up is somewhat more complicated, and it'll be better to implement that at the same time as the same for Nvidia, where we're currently only really setting the top end power level
2019-03-10 10:32:08 +00:00
c215626ccd Add "script_timeout" config value to control if a user wants to extend the script timeout before kill value 2019-03-07 17:51:57 +00:00
53d1700a68 Add the timout to the call signature of run_external_process 2019-03-07 17:51:57 +00:00
4578af47ba Combine the two run_external_process functions so they both have the same timeout protection 2019-03-07 17:51:57 +00:00
1665447350 Use run_external_process for the script execution
This protects the main process against script exection and allows more detailed error handling
2019-03-07 17:51:57 +00:00
5facf2bba5 Refactor out script execution 2019-03-07 17:51:57 +00:00
024acddf90 Run the custom start scripts to after the other optimisations
This ensures the other featues are applied first, and the scripts can react if needed to those settings
2019-03-07 17:51:57 +00:00
7f6f32d284 Actually reject requests if require_supervisor is hit 2019-02-22 15:58:46 +00:00
b28efdb555 Correct the names and return 0 for success 2019-02-21 17:34:20 +00:00
602afdcbb7 Add check against require_supervisor variable 2019-02-21 17:34:20 +00:00
1d40c0cc1b Refactor to use single internal functions for register, unregister and query 2019-02-21 17:34:20 +00:00
d4fdd9e3b4 Correct internal name for query_status_for 2019-02-21 17:34:20 +00:00
de1049f070 Fix comments 2019-02-21 17:34:20 +00:00
c2f7e971c6 Implement game_mode_query_status_for as well 2019-02-21 17:34:20 +00:00
1430c0b831 Implement supervisor features using new config variables
This allows direct control over who can make requests on behalf of other processes

	require_supervisor can also be used to allow a supervisor to take direct control of gamemode on the system (perhaps a GUI, or game launcher)
2019-02-21 17:34:20 +00:00
c5f58c56d0 Hook up interfaces for functions to register another process 2019-02-21 17:34:20 +00:00
d5ffdcffdb Fix reaper_frequency naming 2019-02-19 17:40:50 +00:00
b7dff4265c Refactor config functions that can return their full value to do so
This pattern got a little out of hand, and was only meant for variable length values like strings
2019-02-19 17:40:50 +00:00
a395caeb48 Refactor the governor request into an external process helper function 2019-02-12 08:55:23 +00:00
b1bf33d386 Add config parameters for GPU clocking 2019-02-12 08:55:23 +00:00
aeaef7377d Preliminary (empty) implementation of GPU optimisations 2019-02-12 08:55:23 +00:00
ba49055519 Set up inhibit_screensaver config option to disable the feature 2019-02-03 15:45:11 +00:00
e342b6e394 Remove SCHED_ISO from gamemode.c
As per request, no longer needed
2019-01-29 16:38:25 +00:00
42dd7e6ea8 Add initial screensaver inhibiting code 2019-01-28 16:36:56 +00:00
5396370e5d refactor: Simplify the log hinter
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-09 00:33:46 +02:00
f4cd01f989 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
403ce122f6 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
edf9257de4 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
b9c9a5f120 refactor: Avoid exposing various internal types
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-09 00:33:46 +02:00
92967b135b 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
748808be7e 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
c4ff3d7250 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
9bbcc03c50 Merge pull request #84 from kakra/improve-scheduler-logging
gamemode-scheduler: Improve logging
2018-10-08 17:30:06 +01:00
29f8f0883c 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
fd4166279b 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
d023495a5d 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
4fd93ee30a 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
ba80a6cc3d 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
373fe5a8af gamemode: Add a helper to compare string tails
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-05 19:54:40 +02:00
c2344f4387 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