This keeps a copy of the previous color_setting_t in the loop so
that we can avoid printing the color temperature and brightness if
they did not change.
Changes all set_temperature function in gamma adjustment methods
to take a color_setting_t pointer with the color settings.
Colorramp functions are similarly changed to take a color settings
struct.
Move color settings (temperature, gamma and brightness) into a
struct for each period (day, night). Change the interpolation
function to interpolate all values between these structs.
This simply runs a GLib main loop when the location is requested
and tries to get the location from GeoClue2. We need to run a
main loop since the location is not immediately available, instead
it becomes available through a signal.
Implemented through config options transition-high and transition-low (there
is no command line switch at this point). Determines at what solar elevation
Redshift will change from night to transition period to day.
Signed-off-by: Mattias Andrée <maandree@operamail.com>
This was basically a hack that happened to work because the Gnome Clock
applet could store the current location of the user, and Redshift was able
to fetch this location through GConf. Since Redshift for some time now has
supported a config file where the location can be set, there is not really
any reason to use an external, fragile solution to do the same.
This should fix a bug where command line options for the "manual" location
provider cannot override the config file. To keep compatability with previous
versions the command line parser will still special case parsing "-l LAT:LON"
and set the correct options in "manual".
This method does not do anything but print the temperature to the terminal.
An external program implementing a color temperature adjustment scheme that
is not supported by redshift can use this method to determine the desired
color temperature. It is also useful for testing other parts of redshift on
systems where neither RandR nor VidMode works.
This table is calculated by the actual Planckian locus below 5000K, and by CIE daylight standard above 5000K.
Also, the new table applies proper gamma correction according to sRGB.
More information can be found in README-colorramp.
The transition variable 'adjustment_alpha' is a float. Redshift will wobble between 6499 and 6500K as the float runs out of precision. Using a double seems to solve the issue.
(Thanks to Sean Hildebrand)
Previously stdout would be block buffered and stderr unbuffered when writing to a non-terminal.
This code works on Debian with libc 2.11.2. The man page of setvbuf mentions that NULL can be used to avoid affecting the used buffer, but doesn't mention whether the size argument is then ignored; testing on Debian has revealed that this code works as intended, but I don't know whether that's standard.
(Christian Jaeger)