renderer-view: Keep track of what CRTC it is associated with
For the nested and native backend, it'll point to the CRTC it was created for. On the X11 CM backend, it'll be NULL, as there is only a single global stage view. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1285
This commit is contained in:
parent
33450700dc
commit
9ed463b488
4 changed files with 29 additions and 0 deletions
src/backends
|
@ -32,6 +32,7 @@
|
|||
|
||||
#include "backends/meta-renderer-view.h"
|
||||
|
||||
#include "backends/meta-crtc.h"
|
||||
#include "backends/meta-renderer.h"
|
||||
#include "clutter/clutter-mutter.h"
|
||||
#include "compositor/region-utils.h"
|
||||
|
@ -41,6 +42,7 @@ enum
|
|||
PROP_0,
|
||||
|
||||
PROP_TRANSFORM,
|
||||
PROP_CRTC,
|
||||
|
||||
PROP_LAST
|
||||
};
|
||||
|
@ -52,6 +54,8 @@ struct _MetaRendererView
|
|||
ClutterStageViewCogl parent;
|
||||
|
||||
MetaMonitorTransform transform;
|
||||
|
||||
MetaCrtc *crtc;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (MetaRendererView, meta_renderer_view,
|
||||
|
@ -63,6 +67,12 @@ meta_renderer_view_get_transform (MetaRendererView *view)
|
|||
return view->transform;
|
||||
}
|
||||
|
||||
MetaCrtc *
|
||||
meta_renderer_view_get_crtc (MetaRendererView *view)
|
||||
{
|
||||
return view->crtc;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_renderer_view_get_offscreen_transformation_matrix (ClutterStageView *view,
|
||||
CoglMatrix *matrix)
|
||||
|
@ -161,6 +171,9 @@ meta_renderer_view_get_property (GObject *object,
|
|||
case PROP_TRANSFORM:
|
||||
g_value_set_uint (value, view->transform);
|
||||
break;
|
||||
case PROP_CRTC:
|
||||
g_value_set_object (value, view->crtc);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
@ -180,6 +193,9 @@ meta_renderer_view_set_property (GObject *object,
|
|||
case PROP_TRANSFORM:
|
||||
meta_renderer_view_set_transform (view, g_value_get_uint (value));
|
||||
break;
|
||||
case PROP_CRTC:
|
||||
view->crtc = g_value_get_object (value);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
|
@ -218,5 +234,14 @@ meta_renderer_view_class_init (MetaRendererViewClass *klass)
|
|||
G_PARAM_CONSTRUCT_ONLY |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
obj_props[PROP_CRTC] =
|
||||
g_param_spec_object ("crtc",
|
||||
"MetaCrtc",
|
||||
"MetaCrtc",
|
||||
META_TYPE_CRTC,
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_CONSTRUCT_ONLY |
|
||||
G_PARAM_STATIC_STRINGS);
|
||||
|
||||
g_object_class_install_properties (object_class, PROP_LAST, obj_props);
|
||||
}
|
||||
|
|
|
@ -28,4 +28,6 @@ G_DECLARE_FINAL_TYPE (MetaRendererView, meta_renderer_view,
|
|||
|
||||
MetaMonitorTransform meta_renderer_view_get_transform (MetaRendererView *view);
|
||||
|
||||
MetaCrtc *meta_renderer_view_get_crtc (MetaRendererView *view);
|
||||
|
||||
#endif /* META_RENDERER_VIEW_H */
|
||||
|
|
|
@ -3249,6 +3249,7 @@ meta_renderer_native_create_view (MetaRenderer *renderer,
|
|||
"name", meta_output_get_name (output),
|
||||
"stage", meta_backend_get_stage (backend),
|
||||
"layout", &view_layout,
|
||||
"crtc", crtc,
|
||||
"scale", scale,
|
||||
"framebuffer", onscreen,
|
||||
"offscreen", offscreen,
|
||||
|
|
|
@ -219,6 +219,7 @@ meta_renderer_x11_nested_create_view (MetaRenderer *renderer,
|
|||
"name", meta_output_get_name (output),
|
||||
"stage", meta_backend_get_stage (backend),
|
||||
"layout", &view_layout,
|
||||
"crtc", crtc,
|
||||
"framebuffer", COGL_FRAMEBUFFER (fake_onscreen),
|
||||
"offscreen", COGL_FRAMEBUFFER (offscreen),
|
||||
"transform", view_transform,
|
||||
|
|
Loading…
Add table
Reference in a new issue