mirror of
https://github.com/brl/mutter.git
synced 2024-11-22 16:10:41 -05:00
monitor-store: Support configuring logical monitor scale
Add support to configure the logical monitor scale. With this, it becomes possible to override the automatically calculated scaling number per logical monitor. https://bugzilla.gnome.org/show_bug.cgi?id=777732
This commit is contained in:
parent
a393a614a1
commit
ee32ca3efe
@ -37,6 +37,7 @@
|
|||||||
* <logicalmonitor>
|
* <logicalmonitor>
|
||||||
* <x>0</x>
|
* <x>0</x>
|
||||||
* <y>0</y>
|
* <y>0</y>
|
||||||
|
* <scale>1</scale>
|
||||||
* <monitor>
|
* <monitor>
|
||||||
* <monitorspec>
|
* <monitorspec>
|
||||||
* <connector>LVDS1</connector>
|
* <connector>LVDS1</connector>
|
||||||
@ -94,6 +95,7 @@ typedef enum
|
|||||||
STATE_LOGICAL_MONITOR_Y,
|
STATE_LOGICAL_MONITOR_Y,
|
||||||
STATE_LOGICAL_MONITOR_PRIMARY,
|
STATE_LOGICAL_MONITOR_PRIMARY,
|
||||||
STATE_LOGICAL_MONITOR_PRESENTATION,
|
STATE_LOGICAL_MONITOR_PRESENTATION,
|
||||||
|
STATE_LOGICAL_MONITOR_SCALE,
|
||||||
STATE_MONITOR,
|
STATE_MONITOR,
|
||||||
STATE_MONITOR_SPEC,
|
STATE_MONITOR_SPEC,
|
||||||
STATE_MONITOR_SPEC_CONNECTOR,
|
STATE_MONITOR_SPEC_CONNECTOR,
|
||||||
@ -206,6 +208,10 @@ handle_start_element (GMarkupParseContext *context,
|
|||||||
{
|
{
|
||||||
parser->state = STATE_LOGICAL_MONITOR_Y;
|
parser->state = STATE_LOGICAL_MONITOR_Y;
|
||||||
}
|
}
|
||||||
|
else if (g_str_equal (element_name, "scale"))
|
||||||
|
{
|
||||||
|
parser->state = STATE_LOGICAL_MONITOR_SCALE;
|
||||||
|
}
|
||||||
else if (g_str_equal (element_name, "primary"))
|
else if (g_str_equal (element_name, "primary"))
|
||||||
{
|
{
|
||||||
parser->state = STATE_LOGICAL_MONITOR_PRIMARY;
|
parser->state = STATE_LOGICAL_MONITOR_PRIMARY;
|
||||||
@ -232,6 +238,7 @@ handle_start_element (GMarkupParseContext *context,
|
|||||||
|
|
||||||
case STATE_LOGICAL_MONITOR_X:
|
case STATE_LOGICAL_MONITOR_X:
|
||||||
case STATE_LOGICAL_MONITOR_Y:
|
case STATE_LOGICAL_MONITOR_Y:
|
||||||
|
case STATE_LOGICAL_MONITOR_SCALE:
|
||||||
case STATE_LOGICAL_MONITOR_PRIMARY:
|
case STATE_LOGICAL_MONITOR_PRIMARY:
|
||||||
case STATE_LOGICAL_MONITOR_PRESENTATION:
|
case STATE_LOGICAL_MONITOR_PRESENTATION:
|
||||||
{
|
{
|
||||||
@ -533,6 +540,7 @@ handle_end_element (GMarkupParseContext *context,
|
|||||||
{
|
{
|
||||||
case STATE_LOGICAL_MONITOR_X:
|
case STATE_LOGICAL_MONITOR_X:
|
||||||
case STATE_LOGICAL_MONITOR_Y:
|
case STATE_LOGICAL_MONITOR_Y:
|
||||||
|
case STATE_LOGICAL_MONITOR_SCALE:
|
||||||
case STATE_LOGICAL_MONITOR_PRIMARY:
|
case STATE_LOGICAL_MONITOR_PRIMARY:
|
||||||
case STATE_LOGICAL_MONITOR_PRESENTATION:
|
case STATE_LOGICAL_MONITOR_PRESENTATION:
|
||||||
{
|
{
|
||||||
@ -622,7 +630,8 @@ handle_end_element (GMarkupParseContext *context,
|
|||||||
|
|
||||||
g_assert (g_str_equal (element_name, "logicalmonitor"));
|
g_assert (g_str_equal (element_name, "logicalmonitor"));
|
||||||
|
|
||||||
logical_monitor_config->scale = 1;
|
if (logical_monitor_config->scale == 0)
|
||||||
|
logical_monitor_config->scale = 1;
|
||||||
|
|
||||||
if (!verify_logical_monitor_config (logical_monitor_config, error))
|
if (!verify_logical_monitor_config (logical_monitor_config, error))
|
||||||
return;
|
return;
|
||||||
@ -834,6 +843,23 @@ handle_text (GMarkupParseContext *context,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case STATE_LOGICAL_MONITOR_SCALE:
|
||||||
|
{
|
||||||
|
if (!read_int (text, text_len,
|
||||||
|
&parser->current_logical_monitor_config->scale, error))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (parser->current_logical_monitor_config->scale <= 0)
|
||||||
|
{
|
||||||
|
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||||
|
"Logical monitor scale '%d' invalid",
|
||||||
|
parser->current_logical_monitor_config->scale);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
case STATE_LOGICAL_MONITOR_PRIMARY:
|
case STATE_LOGICAL_MONITOR_PRIMARY:
|
||||||
{
|
{
|
||||||
read_bool (text, text_len,
|
read_bool (text, text_len,
|
||||||
|
Loading…
Reference in New Issue
Block a user