@@ -1011,23 +1011,15 @@ class wf::render_manager::impl
1011
1011
* draws the scenegraph */
1012
1012
render_output ();
1013
1013
1014
- /* Part 3: finalize the scene: overlay effects and sw cursors */
1014
+ /* Part 3: overlay effects */
1015
1015
effects->run_effects (OUTPUT_EFFECT_OVERLAY);
1016
1016
1017
1017
if (postprocessing->post_effects .size ())
1018
1018
{
1019
1019
swap_damage |= output_damage->get_wlr_damage_box ();
1020
1020
}
1021
1021
1022
- OpenGL::render_begin ();
1023
- wlr_renderer_begin (wf::get_core ().renderer ,
1024
- output->handle ->width , output->handle ->height );
1025
- wlr_output_render_software_cursors (output->handle ,
1026
- swap_damage.to_pixman ());
1027
- wlr_renderer_end (wf::get_core ().renderer );
1028
- OpenGL::render_end ();
1029
-
1030
- /* Part 4: postprocessing effects */
1022
+ /* Part 4: finalize the scene: postprocessing effects */
1031
1023
postprocessing->run_post_effects ();
1032
1024
if (output_inhibit_counter)
1033
1025
{
@@ -1037,7 +1029,18 @@ class wf::render_manager::impl
1037
1029
OpenGL::render_end ();
1038
1030
}
1039
1031
1040
- /* Part 5: finalize frame: swap buffers, send frame_done, etc */
1032
+ /* Part 5: render sw cursors
1033
+ * We render software cursors after everything else
1034
+ * for consistency with hardware cursor planes */
1035
+ OpenGL::render_begin ();
1036
+ wlr_renderer_begin (wf::get_core ().renderer ,
1037
+ output->handle ->width , output->handle ->height );
1038
+ wlr_output_render_software_cursors (output->handle ,
1039
+ swap_damage.to_pixman ());
1040
+ wlr_renderer_end (wf::get_core ().renderer );
1041
+ OpenGL::render_end ();
1042
+
1043
+ /* Part 6: finalize frame: swap buffers, send frame_done, etc */
1041
1044
OpenGL::unbind_output (output);
1042
1045
output_damage->swap_buffers (swap_damage);
1043
1046
swap_damage.clear ();
0 commit comments