2731f0cda4
As elsewhere, make sure objects that need to have a ownership up to the context, and use this ownership chain to find relevant components, such as the backend or the Wayland compositor object instance. wayland/data-device: Hook up data devices to seats They are tied to a seat - make that connection in struct fields too, so that related objects can get to the context via it. wayland: Don't get Wayland compositor via singleton getter This means via the ownership chain or equivalent. xwayland: Hook up manager to Wayland compositor Same applies to the drag-n-drop struct. xwayland: Make X11 event handling compositor instance aware This avoids finding it via singletons in the callee. xwayland: Don't get Wayland compositor from singleton xwayland: Pass manager when handling dnd event window/xwayland: Don't get Wayland compositor from singleton xwayland/grab-keyboard: Don't get backend from singleton xwayland: Don't get backend from singleton wayland: Always get the backend from the context This means traveling up the ownership chain or equivalent when necessary. wayland: Hook up data devices, offers and sources to the compositor This allows tying them to a context without going through any singletons. wayland: Don't get display from singleton xwayland: Don't get display from singleton tablet: Don't get display from singleton Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2718>
69 lines
2.5 KiB
C
69 lines
2.5 KiB
C
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
|
|
/*
|
|
* Copyright 2019 Sergio Costas (rastersoft@gmail.com)
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#ifndef META_WAYLAND_CLIENT_H
|
|
#define META_WAYLAND_CLIENT_H
|
|
|
|
#include <glib-object.h>
|
|
#include <gio/gio.h>
|
|
|
|
#include "meta/display.h"
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
#define META_TYPE_WAYLAND_CLIENT (meta_wayland_client_get_type ())
|
|
META_EXPORT
|
|
G_DECLARE_FINAL_TYPE (MetaWaylandClient, meta_wayland_client, META, WAYLAND_CLIENT, GObject)
|
|
|
|
META_EXPORT
|
|
MetaWaylandClient *meta_wayland_client_new (MetaContext *context,
|
|
GSubprocessLauncher *launcher,
|
|
GError **error);
|
|
|
|
META_EXPORT
|
|
GSubprocess *meta_wayland_client_spawn (MetaWaylandClient *client,
|
|
MetaDisplay *display,
|
|
GError **error,
|
|
const char *argv0,
|
|
...) G_GNUC_NULL_TERMINATED;
|
|
|
|
META_EXPORT
|
|
GSubprocess *meta_wayland_client_spawnv (MetaWaylandClient *client,
|
|
MetaDisplay *display,
|
|
const char * const *argv,
|
|
GError **error);
|
|
|
|
META_EXPORT
|
|
gboolean meta_wayland_client_owns_window (MetaWaylandClient *client,
|
|
MetaWindow *window);
|
|
|
|
META_EXPORT
|
|
void meta_wayland_client_hide_from_window_list (MetaWaylandClient *client,
|
|
MetaWindow *window);
|
|
|
|
META_EXPORT
|
|
void meta_wayland_client_show_in_window_list (MetaWaylandClient *client,
|
|
MetaWindow *window);
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* META_WAYLAND_CLIENT_H */
|