mirror of
https://github.com/brl/mutter.git
synced 2024-12-02 04:40:43 -05:00
4736f873f2
This uses MetaCompositorViewNative to find a candidate surface for scanout and to keep track of it separately for each view, effectively allowing each CRTC to use a different buffer for direct scanout. There are three parts for potentially assigning a buffer for direct scanout at the compositor level: 1. Finding a candidate surface actor on the view (if any) 2. Attempting to assign the candidate's buffer for direct scanout 3. Updating references relating to the scanout candidate as needed The three parts were moved in their entirety from being handled by the MetaCompositorNative to being handled by the MetaCompositorViewNative. As part of this transition, the logic was also slightly refactored so that each of the three parts is handled by its own helper function. This allowed to avoid the use of "goto" statements and hopefully make the logic easier to read and follow. The first part mentioned above was changed in this commit to make use of the new meta_compositor_view_get_top_window_actor () API to get the top window actor in the view instead of the top window actor on all views. The second part and third parts mentioned above weren't changed other than being done in the context of a view instead of globally. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2526>
44 lines
1.6 KiB
C
44 lines
1.6 KiB
C
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
|
|
/*
|
|
* Copyright (C) 2022 Dor Askayo
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
* 02111-1307, USA.
|
|
*
|
|
* Written by:
|
|
* Dor Askayo <dor.askayo@gmail.com>
|
|
*/
|
|
|
|
#ifndef META_COMPOSITOR_VIEW_NATIVE_H
|
|
#define META_COMPOSITOR_VIEW_NATIVE_H
|
|
|
|
#include "clutter/clutter-mutter.h"
|
|
#include "compositor/meta-compositor-view.h"
|
|
#include "meta/compositor.h"
|
|
|
|
#define META_TYPE_COMPOSITOR_VIEW_NATIVE (meta_compositor_view_native_get_type ())
|
|
G_DECLARE_FINAL_TYPE (MetaCompositorViewNative, meta_compositor_view_native,
|
|
META, COMPOSITOR_VIEW_NATIVE, MetaCompositorView)
|
|
|
|
MetaCompositorViewNative *meta_compositor_view_native_new (ClutterStageView *stage_view);
|
|
|
|
#ifdef HAVE_WAYLAND
|
|
void meta_compositor_view_native_maybe_assign_scanout (MetaCompositorViewNative *view_native,
|
|
MetaCompositor *compositor);
|
|
#endif /* HAVE_WAYLAND */
|
|
|
|
#endif /* META_COMPOSITOR_VIEW_NATIVE_H */
|