mutter/src/compositor/meta-compositor-server.c
Jonas Ådahl 65a6c4c361 compositor: Add support for direct scanout of Wayland surfaces
Try to bypass compositing if there is a fullscreen toplevel window with
a buffer compatible with the primary plane of the monitor it is
fullscreen on. Only non-mirrored is currently supported; as well as
fullscreened on a single monitor. It should be possible to extend with
more cases, but this starts small.

It does this by introducing a new MetaCompositor sub type
MetaCompositorNative specific to the native backend, which derives from
MetaCompositorServer, containing functionality only relevant for when
running on top of the native backend.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/798
2020-04-16 15:05:52 +02:00

60 lines
1.7 KiB
C

/*
* Copyright (C) 2019 Red Hat Inc.
*
* 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.
*
*/
#include "config.h"
#include "compositor/meta-compositor-server.h"
G_DEFINE_TYPE (MetaCompositorServer, meta_compositor_server, META_TYPE_COMPOSITOR)
static gboolean
meta_compositor_server_manage (MetaCompositor *compositor,
GError **error)
{
return TRUE;
}
static void
meta_compositor_server_unmanage (MetaCompositor *compositor)
{
}
MetaCompositorServer *
meta_compositor_server_new (MetaDisplay *display)
{
return g_object_new (META_TYPE_COMPOSITOR_SERVER,
"display", display,
NULL);
}
static void
meta_compositor_server_init (MetaCompositorServer *compositor_server)
{
}
static void
meta_compositor_server_class_init (MetaCompositorServerClass *klass)
{
MetaCompositorClass *compositor_class = META_COMPOSITOR_CLASS (klass);
compositor_class->manage = meta_compositor_server_manage;
compositor_class->unmanage = meta_compositor_server_unmanage;
}