backends: Update stage views and stage dimension from MetaStage
This reduces the amount of code duplication between the native and nested backend. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4331>
This commit is contained in:
parent
8b5c757bea
commit
dcd89a62e1
@ -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
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
|
||||
#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));
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user