mirror of
https://github.com/brl/mutter.git
synced 2025-02-20 06:54:10 +00:00
clutter/backend/native: Don't double manage stage implementation
The stage owns the "stage window", so don't double manage it in MetaClutterBackendNative, as that means it'd be double-destroyed if the stage would be destroyed. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1775>
This commit is contained in:
parent
c016437857
commit
5aa43ec6c4
@ -375,11 +375,11 @@ static void
|
|||||||
meta_backend_native_update_screen_size (MetaBackend *backend,
|
meta_backend_native_update_screen_size (MetaBackend *backend,
|
||||||
int width, int height)
|
int width, int height)
|
||||||
{
|
{
|
||||||
ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend);
|
|
||||||
MetaStageNative *stage_native;
|
|
||||||
ClutterActor *stage = meta_backend_get_stage (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);
|
||||||
|
|
||||||
stage_native = meta_clutter_backend_native_get_stage_native (clutter_backend);
|
|
||||||
meta_stage_native_rebuild_views (stage_native);
|
meta_stage_native_rebuild_views (stage_native);
|
||||||
|
|
||||||
clutter_actor_set_size (stage, width, height);
|
clutter_actor_set_size (stage, width, height);
|
||||||
|
@ -56,21 +56,11 @@ struct _MetaClutterBackendNative
|
|||||||
ClutterBackend parent;
|
ClutterBackend parent;
|
||||||
|
|
||||||
MetaSeatNative *main_seat;
|
MetaSeatNative *main_seat;
|
||||||
MetaStageNative *stage_native;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE (MetaClutterBackendNative, meta_clutter_backend_native,
|
G_DEFINE_TYPE (MetaClutterBackendNative, meta_clutter_backend_native,
|
||||||
CLUTTER_TYPE_BACKEND)
|
CLUTTER_TYPE_BACKEND)
|
||||||
|
|
||||||
MetaStageNative *
|
|
||||||
meta_clutter_backend_native_get_stage_native (ClutterBackend *clutter_backend)
|
|
||||||
{
|
|
||||||
MetaClutterBackendNative *clutter_backend_native =
|
|
||||||
META_CLUTTER_BACKEND_NATIVE (clutter_backend);
|
|
||||||
|
|
||||||
return clutter_backend_native->stage_native;
|
|
||||||
}
|
|
||||||
|
|
||||||
static CoglRenderer *
|
static CoglRenderer *
|
||||||
meta_clutter_backend_native_get_renderer (ClutterBackend *clutter_backend,
|
meta_clutter_backend_native_get_renderer (ClutterBackend *clutter_backend,
|
||||||
GError **error)
|
GError **error)
|
||||||
@ -86,16 +76,10 @@ meta_clutter_backend_native_create_stage (ClutterBackend *clutter_backend,
|
|||||||
ClutterStage *wrapper,
|
ClutterStage *wrapper,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
MetaClutterBackendNative *clutter_backend_native =
|
return g_object_new (META_TYPE_STAGE_NATIVE,
|
||||||
META_CLUTTER_BACKEND_NATIVE (clutter_backend);
|
|
||||||
|
|
||||||
g_assert (!clutter_backend_native->stage_native);
|
|
||||||
|
|
||||||
clutter_backend_native->stage_native = g_object_new (META_TYPE_STAGE_NATIVE,
|
|
||||||
"backend", clutter_backend,
|
"backend", clutter_backend,
|
||||||
"wrapper", wrapper,
|
"wrapper", wrapper,
|
||||||
NULL);
|
NULL);
|
||||||
return CLUTTER_STAGE_WINDOW (clutter_backend_native->stage_native);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -144,7 +128,6 @@ meta_clutter_backend_native_finalize (GObject *object)
|
|||||||
META_CLUTTER_BACKEND_NATIVE (object);
|
META_CLUTTER_BACKEND_NATIVE (object);
|
||||||
|
|
||||||
g_clear_object (&clutter_backend_native->main_seat);
|
g_clear_object (&clutter_backend_native->main_seat);
|
||||||
g_clear_object (&clutter_backend_native->stage_native);
|
|
||||||
|
|
||||||
G_OBJECT_CLASS (meta_clutter_backend_native_parent_class)->finalize (object);
|
G_OBJECT_CLASS (meta_clutter_backend_native_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,4 @@ G_DECLARE_FINAL_TYPE (MetaClutterBackendNative, meta_clutter_backend_native,
|
|||||||
META, CLUTTER_BACKEND_NATIVE,
|
META, CLUTTER_BACKEND_NATIVE,
|
||||||
ClutterBackend)
|
ClutterBackend)
|
||||||
|
|
||||||
MetaStageNative * meta_clutter_backend_native_get_stage_native (ClutterBackend *backend);
|
|
||||||
|
|
||||||
#endif /* META_CLUTTER_BACKEND_NATIVE_H */
|
#endif /* META_CLUTTER_BACKEND_NATIVE_H */
|
||||||
|
@ -1314,13 +1314,12 @@ add_onscreen_frame_info (MetaCrtc *crtc)
|
|||||||
{
|
{
|
||||||
MetaGpu *gpu = meta_crtc_get_gpu (crtc);
|
MetaGpu *gpu = meta_crtc_get_gpu (crtc);
|
||||||
MetaBackend *backend = meta_gpu_get_backend (gpu);
|
MetaBackend *backend = meta_gpu_get_backend (gpu);
|
||||||
ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend);
|
ClutterStage *stage = CLUTTER_STAGE (meta_backend_get_stage (backend));
|
||||||
MetaStageNative *stage_native =
|
ClutterStageWindow *stage_window = _clutter_stage_get_window (stage);
|
||||||
meta_clutter_backend_native_get_stage_native (clutter_backend);
|
|
||||||
MetaRenderer *renderer = meta_backend_get_renderer (backend);
|
MetaRenderer *renderer = meta_backend_get_renderer (backend);
|
||||||
MetaRendererView *view = meta_renderer_get_view_for_crtc (renderer, crtc);
|
MetaRendererView *view = meta_renderer_get_view_for_crtc (renderer, crtc);
|
||||||
|
|
||||||
clutter_stage_cogl_add_onscreen_frame_info (CLUTTER_STAGE_COGL (stage_native),
|
clutter_stage_cogl_add_onscreen_frame_info (CLUTTER_STAGE_COGL (stage_window),
|
||||||
CLUTTER_STAGE_VIEW (view));
|
CLUTTER_STAGE_VIEW (view));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user