From 45c9786434ef80f99d27e70b4e8f38abaff75aa0 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 8 Nov 2016 18:28:28 +0100 Subject: [PATCH] backends/native: Implement keep-aspect Using ClutterInputDeviceEvdev::output-aspect-ratio. This only applies to devices which are not calibratable, so again we need to implement this at the toolkit level. https://bugzilla.gnome.org/show_bug.cgi?id=774115 --- .../native/meta-input-settings-native.c | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/backends/native/meta-input-settings-native.c b/src/backends/native/meta-input-settings-native.c index c2d362b02..d26d01d6a 100644 --- a/src/backends/native/meta-input-settings-native.c +++ b/src/backends/native/meta-input-settings-native.c @@ -27,6 +27,7 @@ #include #include +#include "meta-backend-native.h" #include "meta-input-settings-native.h" G_DEFINE_TYPE (MetaInputSettingsNative, meta_input_settings_native, META_TYPE_INPUT_SETTINGS) @@ -379,7 +380,33 @@ meta_input_settings_native_set_tablet_keep_aspect (MetaInputSettings *settings, MetaOutput *output, gboolean keep_aspect) { - /* FIXME: Implement */ + gdouble output_aspect = 0; + + if (keep_aspect) + { + gint output_width, output_height; + + if (output && output->crtc) + { + output_width = output->crtc->rect.width; + output_height = output->crtc->rect.height; + } + else + { + MetaMonitorManager *monitor_manager; + MetaBackend *backend; + + backend = meta_get_backend (); + monitor_manager = meta_backend_get_monitor_manager (backend); + meta_monitor_manager_get_screen_limits (monitor_manager, + &output_width, + &output_height); + } + + output_aspect = (gdouble) output_width / output_height; + } + + g_object_set (device, "output-aspect-ratio", output_aspect, NULL); } static void