output: avoid use of wlr_scene_output.WLR_PRIVATE.index

We were only using it to allow quick bitset comparisons of sets of
outputs (such as view->outputs). We can maintain our own bit IDs for
this purpose and avoid using the private wlroots field.

Note: from my reading of wlr_scene_output_create(), it appears to
always take the lowest unused index, resulting in aggressive re-use of
index values when outputs are disconnected and reconnected. I've tried
to make re-use as infrequent as possible. This could theoretically
reduce the chance of a mix-up in view_update_outputs(), although I'm
not aware of any practical scenario where it matters.

v2: prevent adding more than 64 outputs
This commit is contained in:
John Lindgren 2025-11-25 17:36:02 -05:00 committed by Consolatis
parent 6521067171
commit e96f4a032b
5 changed files with 59 additions and 4 deletions

View file

@ -158,7 +158,7 @@ struct view {
* This is used to notify the foreign toplevel
* implementation and to update the SSD invisible
* resize area.
* It is a bitset of output->scene_output->index.
* It is a bitset of output->id_bit.
*/
uint64_t outputs;