x11/nested: Only paint monitor stage views when enabled

Only paint the per monitor stage views when enabled, otherwise bad
things happen.

https://bugzilla.gnome.org/show_bug.cgi?id=768976
This commit is contained in:
Jonas Ådahl 2016-07-25 15:28:06 +08:00
parent 53061c7005
commit cc4a65fe94
2 changed files with 12 additions and 2 deletions

View File

@ -817,6 +817,7 @@ meta_backend_x11_update_screen_size (MetaBackend *backend,
ClutterActor *stage = meta_backend_get_stage (backend); ClutterActor *stage = meta_backend_get_stage (backend);
MetaRenderer *renderer = meta_backend_get_renderer (backend); MetaRenderer *renderer = meta_backend_get_renderer (backend);
if (meta_is_stage_views_enabled ())
meta_renderer_rebuild_views (renderer); meta_renderer_rebuild_views (renderer);
clutter_actor_set_size (stage, width, height); clutter_actor_set_size (stage, width, height);
} }

View File

@ -66,7 +66,10 @@ meta_stage_x11_nested_get_views (ClutterStageWindow *stage_window)
MetaBackend *backend = meta_get_backend (); MetaBackend *backend = meta_get_backend ();
MetaRenderer *renderer = meta_backend_get_renderer (backend); MetaRenderer *renderer = meta_backend_get_renderer (backend);
if (meta_is_stage_views_enabled ())
return meta_renderer_get_views (renderer); return meta_renderer_get_views (renderer);
else
return clutter_stage_window_parent_iface->get_views (stage_window);
} }
static void static void
@ -80,6 +83,12 @@ meta_stage_x11_nested_finish_frame (ClutterStageWindow *stage_window)
CoglFramebuffer *onscreen = COGL_FRAMEBUFFER (stage_x11->onscreen); CoglFramebuffer *onscreen = COGL_FRAMEBUFFER (stage_x11->onscreen);
GList *l; GList *l;
/*
* If we are in legacy mode, the stage is already on the onscreen.
*/
if (!meta_is_stage_views_enabled ())
return;
if (!stage_nested->pipeline) if (!stage_nested->pipeline)
stage_nested->pipeline = cogl_pipeline_new (clutter_backend->cogl_context); stage_nested->pipeline = cogl_pipeline_new (clutter_backend->cogl_context);