settings: Add API to manipulate output luminance
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4271>
This commit is contained in:
parent
b7a6689941
commit
db2376cb84
@ -81,6 +81,10 @@ gboolean meta_settings_is_privacy_screen_enabled (MetaSettings *settings);
|
|||||||
void meta_settings_set_privacy_screen_enabled (MetaSettings *settings,
|
void meta_settings_set_privacy_screen_enabled (MetaSettings *settings,
|
||||||
gboolean enabled);
|
gboolean enabled);
|
||||||
|
|
||||||
|
gboolean meta_settings_has_output_luminance (MetaSettings *settings,
|
||||||
|
const MetaMonitorSpec *monitor_spec,
|
||||||
|
MetaColorMode color_mode);
|
||||||
|
|
||||||
double meta_settings_get_output_luminance (MetaSettings *settings,
|
double meta_settings_get_output_luminance (MetaSettings *settings,
|
||||||
const MetaMonitorSpec *monitor_spec,
|
const MetaMonitorSpec *monitor_spec,
|
||||||
MetaColorMode color_mode);
|
MetaColorMode color_mode);
|
||||||
@ -88,3 +92,12 @@ double meta_settings_get_output_luminance (MetaSettings *settings,
|
|||||||
double meta_settings_get_default_output_luminance (MetaSettings *settings,
|
double meta_settings_get_default_output_luminance (MetaSettings *settings,
|
||||||
const MetaMonitorSpec *monitor_spec,
|
const MetaMonitorSpec *monitor_spec,
|
||||||
MetaColorMode color_mode);
|
MetaColorMode color_mode);
|
||||||
|
|
||||||
|
void meta_settings_set_output_luminance (MetaSettings *settings,
|
||||||
|
const MetaMonitorSpec *monitor_spec,
|
||||||
|
MetaColorMode color_mode,
|
||||||
|
double luminance);
|
||||||
|
|
||||||
|
void meta_settings_reset_output_luminance (MetaSettings *settings,
|
||||||
|
const MetaMonitorSpec *monitor_spec,
|
||||||
|
MetaColorMode color_mode);
|
||||||
|
@ -401,6 +401,14 @@ find_luminance_entry (MetaSettings *settings,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_settings_has_output_luminance (MetaSettings *settings,
|
||||||
|
const MetaMonitorSpec *monitor_spec,
|
||||||
|
MetaColorMode color_mode)
|
||||||
|
{
|
||||||
|
return !!find_luminance_entry (settings, monitor_spec, color_mode);
|
||||||
|
}
|
||||||
|
|
||||||
double
|
double
|
||||||
meta_settings_get_output_luminance (MetaSettings *settings,
|
meta_settings_get_output_luminance (MetaSettings *settings,
|
||||||
const MetaMonitorSpec *monitor_spec,
|
const MetaMonitorSpec *monitor_spec,
|
||||||
@ -425,6 +433,76 @@ meta_settings_get_default_output_luminance (MetaSettings *settings,
|
|||||||
return 100.0;
|
return 100.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
sync_luminance_settings (MetaSettings *settings)
|
||||||
|
{
|
||||||
|
GVariantBuilder builder;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ssssud)"));
|
||||||
|
|
||||||
|
for (i = 0; i < settings->output_luminance->len; i++)
|
||||||
|
{
|
||||||
|
LuminanceEntry *entry =
|
||||||
|
g_ptr_array_index (settings->output_luminance, i);
|
||||||
|
|
||||||
|
g_variant_builder_add (&builder, "(ssssud)",
|
||||||
|
entry->monitor_spec->connector,
|
||||||
|
entry->monitor_spec->vendor,
|
||||||
|
entry->monitor_spec->product,
|
||||||
|
entry->monitor_spec->serial,
|
||||||
|
entry->color_mode,
|
||||||
|
entry->luminance);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_settings_set_value (settings->mutter_settings,
|
||||||
|
"output-luminance",
|
||||||
|
g_variant_builder_end (&builder));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_settings_set_output_luminance (MetaSettings *settings,
|
||||||
|
const MetaMonitorSpec *monitor_spec,
|
||||||
|
MetaColorMode color_mode,
|
||||||
|
double luminance)
|
||||||
|
{
|
||||||
|
LuminanceEntry *entry;
|
||||||
|
|
||||||
|
entry = find_luminance_entry (settings, monitor_spec, color_mode);
|
||||||
|
if (entry)
|
||||||
|
{
|
||||||
|
entry->luminance = luminance;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
entry = luminance_entry_new (monitor_spec, color_mode, luminance);
|
||||||
|
g_ptr_array_add (settings->output_luminance, entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
sync_luminance_settings (settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_settings_reset_output_luminance (MetaSettings *settings,
|
||||||
|
const MetaMonitorSpec *monitor_spec,
|
||||||
|
MetaColorMode color_mode)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < settings->output_luminance->len; i++)
|
||||||
|
{
|
||||||
|
LuminanceEntry *entry = g_ptr_array_index (settings->output_luminance, i);
|
||||||
|
|
||||||
|
if (luminance_entry_matches (entry, monitor_spec, color_mode))
|
||||||
|
{
|
||||||
|
g_ptr_array_remove_index (settings->output_luminance, i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sync_luminance_settings (settings);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
update_output_luminance_settings (MetaSettings *settings)
|
update_output_luminance_settings (MetaSettings *settings)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user