479 Commits

Author SHA1 Message Date
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
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
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
Alex Smith
001a69f565 Merge pull request #133 from gicmo/lib_bus_leak
lib: release acquired bus reference
2019-05-02 09:46:34 +01:00
Christian Kellner
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
Alex Smith
6291c13cf4 Merge pull request #130 from rombert/patch-1
Add reference to openSUSE packages
2019-04-12 08:34:52 +01:00
Alex Smith
dbf9974fed Merge pull request #129 from gicmo/client_count_property
Introduce a ClientCount dbus Property
2019-04-12 08:33:47 +01:00
Robert Munteanu
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
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
Alex Smith
e86580c18c Update instructions to use 1.3.1 as the current stable release 2019-04-09 08:34:44 +01:00
Alex Smith
dbc5c453d5 Merge pull request #128 from mgerstner/gpuclockctl_fixes
Gpuclockctl fixes
2019-04-08 09:31:22 +01:00
Alex Smith
a91156ef93 Merge pull request #125 from tgurr/prefix
Use path_bindir for installing gamemoderun
2019-04-05 14:05:22 +01:00
Matthias Gerstner
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
Matthias Gerstner
b411cfff6b gpuclockctl: refactor buffer size specification and avoid redundancies 2019-04-04 11:44:34 +02:00
Matthias Gerstner
d7394cbeb2 daemon: fix file descriptor leaks 2019-04-03 16:27:12 +02:00
Matthias Gerstner
618997f0b3 gpuclockctl: fix return value of get_gpu_state_amd() 2019-04-03 16:18:36 +02:00
Timo Gurr
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
Alex Smith
959c48978b Update version to 1.4-dev post-release 2019-03-29 15:39:08 +00:00
Alex Smith
e5ccb4b68d Update version to 1.3.1 1.3.1 2019-03-29 15:30:11 +00:00
Alex Smith
1a51a2ec00 Update changelog for 1.3.1 2019-03-29 15:30:00 +00:00
Alex Smith
9465c5f6bd Generate sha256sums in mkrelease.sh 2019-03-29 15:25:25 +00:00
Alex Smith
efb8fbc3af Merge pull request #123 from gicmo/strtrunc_falsepositive
Rewrite strncpy to silence compiler warning
2019-03-29 15:21:34 +00:00
Christian Kellner
41b85c245d Rewrite strncpy to silence compiler warning
Instead of initializing the char array to 0 and writing N-1 bytes,
write N-1 bytes and set the last byte manually to 0. This seems
to make gcc happy.
2019-03-28 17:14:00 +01:00
Christian Kellner
34d86d30b1 Use additional compiler warnings, if supported
Check a list of well-known compiler warnings and use the one that
are supported by the current compiler.
2019-03-28 11:40:40 +00:00
Christian Kellner
4a577b8c7c Rename local variable to un-shadow the global bus
The local variable 'bus' was shadowing the global 'bus' variable;
to not confuse the two, rename the local one. Also unref the local
bus, i.e. fix a small memory leak.
2019-03-28 11:40:40 +00:00
Christian Kellner
c34186be07 Mark game_mode_context_loop as 'noreturn'
The function contains the main-loop of the daemon and will indeed
never return.
2019-03-28 11:40:40 +00: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
Christian Kellner
45ba5bc4c4 Use matching signedness in format strings
Either cast the variable or change the format string to match the
signedness.
2019-03-28 11:40:40 +00:00
Christian Kellner
0eb59fc848 Use minimal number of characters for strncmp
MAX_GOVERNOR_LENGTH is defined as PATH_MAX + 1, so when comparing
two variable, each of once size, use the smaller one, i.e. PATH_MAX.
Assert statically that MAX_GOVERNOR_LENGTH is larger then PATH_MAX
so copying a string to a MAX_GOVERNOR_LENGTH sized variable from a
PATH_MAX size variable will not truncate the string.
2019-03-28 11:40:40 +00:00
Christian Kellner
bbde1d0357 Ensure strncpy'ed strings are all null terminated
If there is no null byte among the first n bytes of the source the
resulting string will not be properly null terminated.
Ensure that all strings that are copied via strncpy are properly
terminated copy "sizeof (dest) - 1" bytes and manually terminate
the string in the cases the array was not initialized.

Example compiler warning:
  ../daemon/gamemode-tests.c: In function ‘run_cpu_governor_tests’:
  ../daemon/gamemode-tests.c:326:4: warning: ‘strncpy’ specified bound
      256 equals destination size [-Wstringop-truncation]
    strncpy(defaultgov, currentgov, CONFIG_VALUE_MAX);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2019-03-28 11:40:40 +00:00
Alex Smith
db4dd87e22 Add Debian to the list of distros which have packages available 2019-03-25 16:49:25 +00:00
Alex Smith
c0032efc4f Make gamemoderun.in executable (#115)
The install_mode option was only added in Meson 0.47. In versions prior
to that, it will base the mode on the permissions of the source file,
so set this executable to be compatible with older versions.

See #115.
2019-03-25 16:40:54 +00:00
Alex Smith
5516b547ca Merge pull request #121 from lilianmoraru/master
Build with optimizations
2019-03-25 16:16:25 +00:00
Lilian A. Moraru
c0ffecae43 Build with optimizations 2019-03-19 10:38:49 +02:00
Alex Smith
95c365076f Update to version 1.4-dev post-release 2019-03-15 16:11:57 +00:00
Alex Smith
ea7d1c13a3 Update to version 1.3 1.3 2019-03-15 13:39:00 +00:00
Alex Smith
10a31f8dec Update copyright years to 2019 2019-03-14 16:59:30 +00:00
Alex Smith
6b7f6c12c2 Various README fixes/adjustments 2019-03-14 16:51:29 +00:00
Alex Smith
0f680f2a83 clang-format fix 2019-03-14 16:30:52 +00:00
Alex Smith
5ee2f3c06a Adjust reaper_freq to match the default value set in code 2019-03-14 15:58:28 +00:00
Alex Smith
23bf1e6624 Minor adjustments 2019-03-14 15:47:02 +00:00
Alex Smith
f163d4847b Update changelog, convert to Markdown 2019-03-14 15:43:20 +00:00
Alex Smith
4306660918 Adjust renice documentation 2019-03-14 15:11:10 +00:00
Alex Smith
2ab46df4c3 Disable softrealtime (SCHED_ISO) and renice by default
SCHED_ISO is not supported by upstream kernels, so don't try to use this by
default since for most users it will result in an error log that trying to
set the scheduling policy fails.

Without extra system configuration, we will also not have permission to renice
processes by default, so out of the box doing this will fail as well.

Users that wish to use these features can enable them from the config once
they have configured their system appropriately.
2019-03-14 15:00:49 +00:00