[mutter/wip/garnacho/wayland-emulated-output-transform: 30/34] backends/native: Set transform on MetaRendererViews



commit 05b762da9a4f3743d067de251f827c9b54f79a94
Author: Carlos Garnacho <carlosg gnome org>
Date:   Mon Aug 1 03:38:03 2016 +0200

    backends/native: Set transform on MetaRendererViews
    
    Only do this if mutter uses the multiple stage views feature. This
    is uneffective at the moment because no back texture is set yet.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=745079

 src/backends/native/meta-renderer-native.c |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)
---
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
index bdcfc79..401d041 100644
--- a/src/backends/native/meta-renderer-native.c
+++ b/src/backends/native/meta-renderer-native.c
@@ -837,6 +837,24 @@ meta_renderer_native_queue_modes_reset (MetaRendererNative *renderer_native)
     }
 }
 
+static MetaMonitorTransform
+meta_renderer_native_get_monitor_info_transform (MetaRenderer    *renderer,
+                                                 MetaMonitorInfo *monitor_info)
+{
+  MetaBackend *backend = meta_get_backend ();
+  MetaMonitorManager *monitor_manager =
+    meta_backend_get_monitor_manager (backend);
+  MetaMonitorManagerKms *monitor_manager_kms =
+    META_MONITOR_MANAGER_KMS (monitor_manager);
+
+  /* The monitor info has no outputs, what to do? */
+  if (monitor_info->n_outputs == 0)
+    return META_MONITOR_TRANSFORM_NORMAL;
+
+  return meta_monitor_manager_kms_get_view_transform (monitor_manager_kms,
+                                                      monitor_info->outputs[0]->crtc);
+}
+
 gboolean
 meta_renderer_native_set_legacy_view_size (MetaRendererNative *renderer_native,
                                            MetaRendererView   *view,
@@ -1039,11 +1057,14 @@ meta_renderer_native_create_view (MetaRenderer    *renderer,
   MetaBackend *backend = meta_get_backend ();
   ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend);
   CoglContext *cogl_context = clutter_backend_get_cogl_context (clutter_backend);
+  MetaMonitorTransform transform;
   CoglOnscreen *onscreen;
   CoglFramebuffer *framebuffer;
   MetaRendererView *view;
   GError *error = NULL;
 
+  transform = meta_renderer_native_get_monitor_info_transform (renderer,
+                                                               monitor_info);
   onscreen = cogl_onscreen_new (cogl_context,
                                 monitor_info->rect.width,
                                 monitor_info->rect.height);
@@ -1059,6 +1080,7 @@ meta_renderer_native_create_view (MetaRenderer    *renderer,
                        "layout", &monitor_info->rect,
                        "framebuffer", framebuffer,
                        "monitor-info", monitor_info,
+                       "transform", transform,
                        NULL);
   cogl_object_unref (framebuffer);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]