From dcd89a62e16ed746d71eacf2b785c6f733d561af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 12 Mar 2025 11:35:17 +0800 Subject: [PATCH] backends: Update stage views and stage dimension from MetaStage This reduces the amount of code duplication between the native and nested backend. Part-of: --- src/backends/meta-stage-impl-private.h | 2 ++ src/backends/meta-stage-impl.c | 12 ++++++++++++ src/backends/meta-stage-private.h | 2 ++ src/backends/meta-stage.c | 16 ++++++++++++++++ src/backends/native/meta-backend-native.c | 5 +---- src/backends/native/meta-stage-native.c | 12 ------------ src/backends/native/meta-stage-native.h | 2 -- .../x11/nested/meta-backend-x11-nested.c | 11 ++--------- 8 files changed, 35 insertions(+), 27 deletions(-) diff --git a/src/backends/meta-stage-impl-private.h b/src/backends/meta-stage-impl-private.h index d89ac465a..fa90468e1 100644 --- a/src/backends/meta-stage-impl-private.h +++ b/src/backends/meta-stage-impl-private.h @@ -65,4 +65,6 @@ MetaBackend * meta_stage_impl_get_backend (MetaStageImpl *stage_impl); void meta_stage_impl_add_onscreen_frame_info (MetaStageImpl *stage_impl, ClutterStageView *view); +void meta_stage_impl_rebuild_views (MetaStageImpl *stage_impl); + G_END_DECLS diff --git a/src/backends/meta-stage-impl.c b/src/backends/meta-stage-impl.c index a6f384d3c..1c15c851a 100644 --- a/src/backends/meta-stage-impl.c +++ b/src/backends/meta-stage-impl.c @@ -34,6 +34,7 @@ #include #include +#include "backends/meta-renderer.h" #include "backends/meta-stage-view-private.h" #include "clutter/clutter-mutter.h" #include "cogl/cogl.h" @@ -900,3 +901,14 @@ meta_stage_impl_get_backend (MetaStageImpl *stage_impl) return priv->backend; } + +void +meta_stage_impl_rebuild_views (MetaStageImpl *stage_impl) +{ + MetaBackend *backend = meta_stage_impl_get_backend (stage_impl); + MetaRenderer *renderer = meta_backend_get_renderer (backend); + ClutterActor *stage = meta_backend_get_stage (backend); + + meta_renderer_rebuild_views (renderer); + clutter_stage_clear_stage_views (CLUTTER_STAGE (stage)); +} diff --git a/src/backends/meta-stage-private.h b/src/backends/meta-stage-private.h index 7f4a94e7d..37337c54a 100644 --- a/src/backends/meta-stage-private.h +++ b/src/backends/meta-stage-private.h @@ -70,4 +70,6 @@ META_EXPORT_TEST void meta_stage_remove_watch (MetaStage *stage, MetaStageWatch *watch); +void meta_stage_rebuild_views (MetaStage *stage); + G_END_DECLS diff --git a/src/backends/meta-stage.c b/src/backends/meta-stage.c index d6f24fddb..36b2cd4c0 100644 --- a/src/backends/meta-stage.c +++ b/src/backends/meta-stage.c @@ -498,3 +498,19 @@ meta_stage_remove_watch (MetaStage *stage, g_assert (removed); } + +void +meta_stage_rebuild_views (MetaStage *stage) +{ + ClutterStageWindow *stage_window = + _clutter_stage_get_window (CLUTTER_STAGE (stage)); + MetaStageImpl *stage_impl = META_STAGE_IMPL (stage_window); + MetaMonitorManager *monitor_manager = + meta_backend_get_monitor_manager (stage->backend); + int width, height; + + meta_stage_impl_rebuild_views (stage_impl); + + meta_monitor_manager_get_screen_size (monitor_manager, &width, &height); + clutter_actor_set_size (CLUTTER_ACTOR (stage), width, height); +} diff --git a/src/backends/native/meta-backend-native.c b/src/backends/native/meta-backend-native.c index cc87801e8..3e3172c0d 100644 --- a/src/backends/native/meta-backend-native.c +++ b/src/backends/native/meta-backend-native.c @@ -400,14 +400,11 @@ static void meta_backend_native_update_stage (MetaBackend *backend) { ClutterActor *stage = meta_backend_get_stage (backend); - ClutterStageWindow *stage_window = - _clutter_stage_get_window (CLUTTER_STAGE (stage)); - MetaStageNative *stage_native = META_STAGE_NATIVE (stage_window); MetaMonitorManager *monitor_manager = meta_backend_get_monitor_manager (backend); int width, height; - meta_stage_native_rebuild_views (stage_native); + meta_stage_rebuild_views (META_STAGE (stage)); meta_monitor_manager_get_screen_size (monitor_manager, &width, &height); clutter_actor_set_size (stage, width, height); diff --git a/src/backends/native/meta-stage-native.c b/src/backends/native/meta-stage-native.c index 90403824e..a84ef5cd5 100644 --- a/src/backends/native/meta-stage-native.c +++ b/src/backends/native/meta-stage-native.c @@ -46,18 +46,6 @@ struct _MetaStageNative G_DEFINE_FINAL_TYPE (MetaStageNative, meta_stage_native, META_TYPE_STAGE_IMPL) -void -meta_stage_native_rebuild_views (MetaStageNative *stage_native) -{ - MetaStageImpl *stage_impl = META_STAGE_IMPL (stage_native); - MetaBackend *backend = meta_stage_impl_get_backend (stage_impl); - MetaRenderer *renderer = meta_backend_get_renderer (backend); - ClutterActor *stage = meta_backend_get_stage (backend); - - meta_renderer_rebuild_views (renderer); - clutter_stage_clear_stage_views (CLUTTER_STAGE (stage)); -} - static gboolean meta_stage_native_can_clip_redraws (ClutterStageWindow *stage_window) { diff --git a/src/backends/native/meta-stage-native.h b/src/backends/native/meta-stage-native.h index 18ce3b14b..cf081a32e 100644 --- a/src/backends/native/meta-stage-native.h +++ b/src/backends/native/meta-stage-native.h @@ -28,5 +28,3 @@ #define META_TYPE_STAGE_NATIVE (meta_stage_native_get_type ()) G_DECLARE_FINAL_TYPE (MetaStageNative, meta_stage_native, META, STAGE_NATIVE, MetaStageImpl) - -void meta_stage_native_rebuild_views (MetaStageNative *stage_native); diff --git a/src/backends/x11/nested/meta-backend-x11-nested.c b/src/backends/x11/nested/meta-backend-x11-nested.c index da2a2771e..b730612e3 100644 --- a/src/backends/x11/nested/meta-backend-x11-nested.c +++ b/src/backends/x11/nested/meta-backend-x11-nested.c @@ -21,6 +21,7 @@ #include "backends/meta-input-settings-dummy.h" #include "backends/meta-monitor-manager-dummy.h" +#include "backends/meta-stage-private.h" #include "backends/x11/nested/meta-backend-x11-nested.h" #include "backends/x11/nested/meta-cursor-renderer-x11-nested.h" #include "backends/x11/nested/meta-renderer-x11-nested.h" @@ -98,16 +99,8 @@ static void meta_backend_x11_nested_update_stage (MetaBackend *backend) { ClutterActor *stage = meta_backend_get_stage (backend); - MetaRenderer *renderer = meta_backend_get_renderer (backend); - MetaMonitorManager *monitor_manager = - meta_backend_get_monitor_manager (backend); - int width, height; - meta_renderer_rebuild_views (renderer); - clutter_stage_clear_stage_views (CLUTTER_STAGE (stage)); - - meta_monitor_manager_get_screen_size (monitor_manager, &width, &height); - clutter_actor_set_size (stage, width, height); + meta_stage_rebuild_views (META_STAGE (stage)); } static void