It's a known issue. The short answer is we believe there is no official way to semi-permanently set brightness of any display.
Brightness Control uses a method that involves manipulating the gamma table of each display, in effect reducing the intensity of each pixel but not the amount of light at the base of the light engine in the display. This method was not designed for what Brightness Control does, but it works - until another application does the same thing. That's the problem - any application can use the same basic process to fade the display or produce interesting visual effects. There is no provision for automatically restoring the settings we manipulate to anything but the user-specified ColorSync profile values (what Brightness Control considers 100% brightness). Essentially, the effect can be preempted at any time by any other process on your Mac, they do not know that Brightness Control has modified the gamma tables before them, and they restore the gamma tables to the ColorSync defaults when they're done or when they quit. Interruptions are most likely to occur when a process like a screensaver or game fades in or the Mac wakes from sleep.
It might seem to make sense to simply monitor the gamma tables at frequent intervals and attempt to compensate when they are adjusted by other applications. This can be done, but the end result is less than ideal. The same applications that interrupt Brightness Control now would see their effects distorted - fades would "stair-step", flashing brighter then dimmer, as the necessary gamma settings would be normalized on their way down to 0% or on their way up to 100%.
A better solution would be a dedicated, system-wide Apple-issued API for affecting the gamma tables via a scalar that fits between ColorSync and the method we currently use to produce the same effect as Brightness Control. A single control, such as Brightness Control, could provide the user interface to this scalar, while any other application could perform fades at will using the process-level gamma table API without interrupting the system-wide brightness setting. Understand that a large number of Brightness Control users prefer the pricing model of non-Apple LCD displays, which in many cases do not have adequate brightness controls. Accommodating those users with a system-wide API could lead to a decline in Apple's display sales. That's just one possible reason why Apple does not and would not provide the API - and it's only remotely realistic if you squint very hard and think we might aggressively (and successfully) market Brightness Control as the answer to those users' prayers.
The best we can do now is make it easier to reset the brightness to your preferred setting in Brightness Control. One of our prototypes here, in which the brightness slider was moved to the menubar, performed that reset each time the user clicked the Brightness Control icon in the menubar. That would mean that each time Brightness Control's settings are interrupted you could tap the menubar a couple of times to get the setting reset. A new idea, that came up while I wrote this message, was to scale back the idea to monitor and coerce the brightness. What if we monitored for a fade out, noted that it occurred, then waited for a fade in + a user-specified amount of time to re-apply the user's brightness preference. That could work, with the understanding there will be a short period of unwanted brightness while Brightness Control determines that the fade in has ended.
If you have any other ideas on how to elegantly minimize the issue, please discuss them with us and we'll see what we can do.
_________________ Keith GugliottoPrimordial Sea CaptainSplasm Software https://www.splasm.com
|