Commit Graph

404 Commits

Author SHA1 Message Date
a27e741beb Reformat long_options now that travis matches 2019-05-15 18:43:42 +01:00
f401b49b1a Close the openned task dirs to prevent a leak 2019-05-15 18:20:36 +01:00
41d35fa12a Add a zeroed final option for getopt_long for correctness 2019-05-15 18:17:50 +01:00
0d018d91a8 Implement some error logging/checking and clean up some TODO comments 2019-05-13 19:44:22 +01:00
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
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
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
f00a89bc56 Actually apply setpriority to the thread not the client 2019-05-13 19:44:22 +01:00
2d19b61a38 Always log when getpriority fails - we will likely want to know 2019-05-13 19:44:22 +01:00
16c932f5d0 Adjust logs for generic process test function 2019-05-13 19:44:22 +01:00
f152ea9338 Initial implementation of applying renice to all process threads 2019-05-13 19:44:22 +01:00
3ac49385dc Add a test for renicing multithreaded processes 2019-05-13 19:44:22 +01:00
87cfd9c5a6 Remove error log about known issue now that it is fixed 2019-05-13 19:44:22 +01:00
38e48a2d8e Update logging to reflect thread, client relationship 2019-05-13 19:44:22 +01:00
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
6639b17500 Make the multithreaded ioprio tests not cause a full failure 2019-05-13 19:44:22 +01:00
6869470f9b Fix feature status codes - failures here should be considered a failure 2019-05-13 19:44:22 +01:00
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
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
7f196cdd1a Fix formatting for travis 2019-05-11 13:06:43 +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
7e5216c4a0 Some comments and cleanup 2019-05-11 12:08:29 +01:00
a482b72d37 Fix comments in gamemode_client.h 2019-05-11 12:08:29 +01:00
717777e6c2 Implement PID support for --request and --status 2019-05-11 12:08:29 +01:00
baff9c0363 Allow for long options using getopt_long 2019-05-11 12:08:29 +01:00
99c7d04e69 Add a link to the GNOME Shell extension 2019-05-07 09:30:33 +01:00
4a49a1c2a5 Add a list of games which integrate GameMode support (#135) 2019-05-07 09:25:33 +01:00
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
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
0c778200ae helpers: add helpers to automatically close fds
Add a inline helper function and a helper macro to be able to
automatically close file descriptors. Does nothing if the argument
is NULL or the pointed to integer is < 0.
2019-05-02 11:29:03 +02:00
001a69f565 Merge pull request #133 from gicmo/lib_bus_leak
lib: release acquired bus reference
2019-05-02 09:46:34 +01:00
393a5e8f41 lib: release acquired bus reference
On each gamemode_request call a new connection to d-bus is opened
but the reference was never release thus leaking the connection
and associated memory.
2019-04-30 11:46:50 +02:00
6291c13cf4 Merge pull request #130 from rombert/patch-1
Add reference to openSUSE packages
2019-04-12 08:34:52 +01:00
dbf9974fed Merge pull request #129 from gicmo/client_count_property
Introduce a ClientCount dbus Property
2019-04-12 08:33:47 +01:00
0aced6f14e Add reference to openSUSE packages
OpenSUSE packages are available at https://software.opensuse.org/package/gamemode, so let's reflect this in the README.
2019-04-11 01:08:46 +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
e86580c18c Update instructions to use 1.3.1 as the current stable release 2019-04-09 08:34:44 +01:00
dbc5c453d5 Merge pull request #128 from mgerstner/gpuclockctl_fixes
Gpuclockctl fixes
2019-04-08 09:31:22 +01:00
a91156ef93 Merge pull request #125 from tgurr/prefix
Use path_bindir for installing gamemoderun
2019-04-05 14:05:22 +01:00
78c2ced7d7 external-helper: improve run_external_process() robustness
run_external_process() contained pipe file descriptors leaks (e.g. one
pipe end was never closed). Also the stdout might have been captured
incomplete, since only a single read() was performed on the pipe.
Furthermore should a child process try to write a larger amount of data
onto the pipe then it will become stuck, because the parent process
isn't consuming the data. Thus the timeout would trigger in these cases
although the child process does nothing wrong.

This commit changes the implementation to follow a select() based
approach that continually reads from the pipe, but discards data that
doesn't fit in the provided buffer.
2019-04-04 13:19:22 +02:00
b411cfff6b gpuclockctl: refactor buffer size specification and avoid redundancies 2019-04-04 11:44:34 +02:00
d7394cbeb2 daemon: fix file descriptor leaks 2019-04-03 16:27:12 +02:00
618997f0b3 gpuclockctl: fix return value of get_gpu_state_amd() 2019-04-03 16:18:36 +02:00
85d75c303c Use path_bindir for installing gamemoderun
Honor prefix for installing gamemoderun to properly work in cross
environment so it can be installed in e.g. /usr/x86_64-pc-linux-gnu/bin
instead of /usr/bin like it's already done for gamemoded.
2019-03-29 18:18:23 +01:00
959c48978b Update version to 1.4-dev post-release 2019-03-29 15:39:08 +00:00
e5ccb4b68d Update version to 1.3.1 1.3.1 2019-03-29 15:30:11 +00:00