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
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
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
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
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
Christian Kellner
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
Christian Kellner
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
Christian Kellner
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
Christian Kellner
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
Alex Smith
10a31f8dec
Update copyright years to 2019
2019-03-14 16:59:30 +00:00
Marc Di Luzio
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
Marc Di Luzio
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
Marc Di Luzio
53d1700a68
Add the timout to the call signature of run_external_process
2019-03-07 17:51:57 +00:00
Marc Di Luzio
4578af47ba
Combine the two run_external_process functions so they both have the same timeout protection
2019-03-07 17:51:57 +00:00
Marc Di Luzio
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
Marc Di Luzio
5facf2bba5
Refactor out script execution
2019-03-07 17:51:57 +00:00
Marc Di Luzio
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
Marc Di Luzio
7f6f32d284
Actually reject requests if require_supervisor is hit
2019-02-22 15:58:46 +00:00
Marc Di Luzio
b28efdb555
Correct the names and return 0 for success
2019-02-21 17:34:20 +00:00
Marc Di Luzio
602afdcbb7
Add check against require_supervisor variable
2019-02-21 17:34:20 +00:00
Marc Di Luzio
1d40c0cc1b
Refactor to use single internal functions for register, unregister and query
2019-02-21 17:34:20 +00:00
Marc Di Luzio
d4fdd9e3b4
Correct internal name for query_status_for
2019-02-21 17:34:20 +00:00
Marc Di Luzio
de1049f070
Fix comments
2019-02-21 17:34:20 +00:00
Marc Di Luzio
c2f7e971c6
Implement game_mode_query_status_for as well
2019-02-21 17:34:20 +00:00
Marc Di Luzio
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
Marc Di Luzio
c5f58c56d0
Hook up interfaces for functions to register another process
2019-02-21 17:34:20 +00:00
Marc Di Luzio
d5ffdcffdb
Fix reaper_frequency naming
2019-02-19 17:40:50 +00:00
Marc Di Luzio
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
Marc Di Luzio
a395caeb48
Refactor the governor request into an external process helper function
2019-02-12 08:55:23 +00:00
Marc Di Luzio
b1bf33d386
Add config parameters for GPU clocking
2019-02-12 08:55:23 +00:00
Marc Di Luzio
aeaef7377d
Preliminary (empty) implementation of GPU optimisations
2019-02-12 08:55:23 +00:00
Marc Di Luzio
ba49055519
Set up inhibit_screensaver config option to disable the feature
2019-02-03 15:45:11 +00:00
Marc Di Luzio
e342b6e394
Remove SCHED_ISO from gamemode.c
...
As per request, no longer needed
2019-01-29 16:38:25 +00:00
Marc Di Luzio
42dd7e6ea8
Add initial screensaver inhibiting code
2019-01-28 16:36:56 +00:00
Kai Krakow
5396370e5d
refactor: Simplify the log hinter
...
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-09 00:33:46 +02:00
Kai Krakow
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
Kai Krakow
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
Kai Krakow
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
Kai Krakow
b9c9a5f120
refactor: Avoid exposing various internal types
...
Signed-off-by: Kai Krakow <kai@kaishome.de>
2018-10-09 00:33:46 +02:00
Kai Krakow
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