clutter: Introduce ClutterFrame
ClutterFrame aims to carry information valid during dispatching a frame. A frame may or may not include redrawing, but will always end with a result. A asynchronous page flip, for example, will result in a CLUTTER_FRAME_RESULT_PENDING_PRESENTED, while a frame that only dispatched events etc will result in CLUTTER_FRAME_RESULT_IDLE. Instead of this being implicit, make the ClutterStageWindow implementation handle this itself. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1488>
This commit is contained in:
@ -107,12 +107,16 @@ meta_stage_native_get_views (ClutterStageWindow *stage_window)
|
||||
|
||||
static void
|
||||
meta_stage_native_finish_frame (ClutterStageWindow *stage_window,
|
||||
ClutterStageView *stage_view)
|
||||
ClutterStageView *stage_view,
|
||||
ClutterFrame *frame)
|
||||
{
|
||||
MetaBackend *backend = meta_get_backend ();
|
||||
MetaRenderer *renderer = meta_backend_get_renderer (backend);
|
||||
|
||||
meta_renderer_native_finish_frame (META_RENDERER_NATIVE (renderer));
|
||||
|
||||
if (!clutter_frame_has_result (frame))
|
||||
clutter_frame_set_result (frame, CLUTTER_FRAME_RESULT_IDLE);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -159,7 +159,8 @@ draw_view (MetaStageX11Nested *stage_nested,
|
||||
|
||||
static void
|
||||
meta_stage_x11_nested_finish_frame (ClutterStageWindow *stage_window,
|
||||
ClutterStageView *stage_view)
|
||||
ClutterStageView *stage_view,
|
||||
ClutterFrame *frame)
|
||||
{
|
||||
MetaStageX11Nested *stage_nested = META_STAGE_X11_NESTED (stage_window);
|
||||
MetaStageX11 *stage_x11 = META_STAGE_X11 (stage_window);
|
||||
@ -196,6 +197,9 @@ meta_stage_x11_nested_finish_frame (ClutterStageWindow *stage_window,
|
||||
|
||||
frame_info = cogl_frame_info_new (0);
|
||||
cogl_onscreen_swap_buffers (stage_x11->onscreen, frame_info);
|
||||
|
||||
if (!clutter_frame_has_result (frame))
|
||||
clutter_frame_set_result (frame, CLUTTER_FRAME_RESULT_IDLE);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Reference in New Issue
Block a user