mirror of
https://github.com/brl/mutter.git
synced 2024-12-02 12:50:53 -05:00
13330f34f3
We update some details like the last used device and pointer visibility from events, but this is done inconsistently on X11 since the ClutterEvents are created and pushed from an additional place. Make these updates happen on a private call, that will be called from these places in X11. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/285>
209 lines
7.8 KiB
C
209 lines
7.8 KiB
C
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
|
|
/*
|
|
* Copyright (C) 2014 Red Hat
|
|
*
|
|
* 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:
|
|
* Jasper St. Pierre <jstpierre@mecheye.net>
|
|
*/
|
|
|
|
|
|
#ifndef META_BACKEND_PRIVATE_H
|
|
#define META_BACKEND_PRIVATE_H
|
|
|
|
#include <glib-object.h>
|
|
#include <xkbcommon/xkbcommon.h>
|
|
|
|
#include "meta/meta-backend.h"
|
|
#include "meta/meta-idle-monitor.h"
|
|
#include "backends/meta-backend-types.h"
|
|
#include "backends/meta-cursor-renderer.h"
|
|
#include "backends/meta-egl.h"
|
|
#include "backends/meta-input-mapper-private.h"
|
|
#include "backends/meta-input-settings-private.h"
|
|
#include "backends/meta-monitor-manager-private.h"
|
|
#include "backends/meta-orientation-manager.h"
|
|
#include "backends/meta-pointer-constraint.h"
|
|
#include "backends/meta-renderer.h"
|
|
#include "backends/meta-settings-private.h"
|
|
#include "core/meta-context-private.h"
|
|
#include "core/util-private.h"
|
|
|
|
#define DEFAULT_XKB_RULES_FILE "evdev"
|
|
#define DEFAULT_XKB_MODEL "pc105+inet"
|
|
|
|
typedef enum
|
|
{
|
|
META_SEQUENCE_NONE,
|
|
META_SEQUENCE_ACCEPTED,
|
|
META_SEQUENCE_REJECTED,
|
|
META_SEQUENCE_PENDING_END
|
|
} MetaSequenceState;
|
|
|
|
struct _MetaBackendClass
|
|
{
|
|
GObjectClass parent_class;
|
|
|
|
ClutterBackend * (* create_clutter_backend) (MetaBackend *backend);
|
|
|
|
void (* post_init) (MetaBackend *backend);
|
|
|
|
MetaMonitorManager * (* create_monitor_manager) (MetaBackend *backend,
|
|
GError **error);
|
|
MetaCursorRenderer * (* get_cursor_renderer) (MetaBackend *backend,
|
|
ClutterInputDevice *device);
|
|
MetaCursorTracker * (* create_cursor_tracker) (MetaBackend *backend);
|
|
MetaRenderer * (* create_renderer) (MetaBackend *backend,
|
|
GError **error);
|
|
MetaInputSettings * (* get_input_settings) (MetaBackend *backend);
|
|
|
|
ClutterSeat * (* create_default_seat) (MetaBackend *backend,
|
|
GError **error);
|
|
|
|
gboolean (* grab_device) (MetaBackend *backend,
|
|
int device_id,
|
|
uint32_t timestamp);
|
|
gboolean (* ungrab_device) (MetaBackend *backend,
|
|
int device_id,
|
|
uint32_t timestamp);
|
|
|
|
void (* finish_touch_sequence) (MetaBackend *backend,
|
|
ClutterEventSequence *sequence,
|
|
MetaSequenceState state);
|
|
MetaLogicalMonitor * (* get_current_logical_monitor) (MetaBackend *backend);
|
|
|
|
void (* set_keymap) (MetaBackend *backend,
|
|
const char *layouts,
|
|
const char *variants,
|
|
const char *options);
|
|
|
|
gboolean (* is_lid_closed) (MetaBackend *backend);
|
|
|
|
struct xkb_keymap * (* get_keymap) (MetaBackend *backend);
|
|
|
|
xkb_layout_index_t (* get_keymap_layout_group) (MetaBackend *backend);
|
|
|
|
void (* lock_layout_group) (MetaBackend *backend,
|
|
guint idx);
|
|
|
|
void (* update_screen_size) (MetaBackend *backend, int width, int height);
|
|
void (* select_stage_events) (MetaBackend *backend);
|
|
|
|
void (* set_pointer_constraint) (MetaBackend *backend,
|
|
MetaPointerConstraint *constraint);
|
|
|
|
gboolean (* is_headless) (MetaBackend *backend);
|
|
};
|
|
|
|
void meta_backend_destroy (MetaBackend *backend);
|
|
|
|
void meta_backend_prepare_shutdown (MetaBackend *backend);
|
|
|
|
META_EXPORT_TEST
|
|
ClutterBackend * meta_backend_get_clutter_backend (MetaBackend *backend);
|
|
|
|
META_EXPORT_TEST
|
|
ClutterSeat * meta_backend_get_default_seat (MetaBackend *bakcend);
|
|
|
|
MetaIdleMonitor * meta_backend_get_idle_monitor (MetaBackend *backend,
|
|
ClutterInputDevice *device);
|
|
|
|
MetaIdleManager * meta_backend_get_idle_manager (MetaBackend *backend);
|
|
|
|
META_EXPORT_TEST
|
|
MetaOrientationManager * meta_backend_get_orientation_manager (MetaBackend *backend);
|
|
META_EXPORT_TEST
|
|
MetaCursorTracker * meta_backend_get_cursor_tracker (MetaBackend *backend);
|
|
MetaCursorRenderer * meta_backend_get_cursor_renderer_for_device (MetaBackend *backend,
|
|
ClutterInputDevice *device);
|
|
MetaCursorRenderer * meta_backend_get_cursor_renderer (MetaBackend *backend);
|
|
META_EXPORT_TEST
|
|
MetaRenderer * meta_backend_get_renderer (MetaBackend *backend);
|
|
MetaEgl * meta_backend_get_egl (MetaBackend *backend);
|
|
|
|
#ifdef HAVE_REMOTE_DESKTOP
|
|
MetaRemoteDesktop * meta_backend_get_remote_desktop (MetaBackend *backend);
|
|
|
|
MetaScreenCast * meta_backend_get_screen_cast (MetaBackend *backend);
|
|
#endif
|
|
|
|
gboolean meta_backend_grab_device (MetaBackend *backend,
|
|
int device_id,
|
|
uint32_t timestamp);
|
|
gboolean meta_backend_ungrab_device (MetaBackend *backend,
|
|
int device_id,
|
|
uint32_t timestamp);
|
|
|
|
void meta_backend_finish_touch_sequence (MetaBackend *backend,
|
|
ClutterEventSequence *sequence,
|
|
MetaSequenceState state);
|
|
|
|
META_EXPORT_TEST
|
|
MetaLogicalMonitor * meta_backend_get_current_logical_monitor (MetaBackend *backend);
|
|
|
|
struct xkb_keymap * meta_backend_get_keymap (MetaBackend *backend);
|
|
|
|
xkb_layout_index_t meta_backend_get_keymap_layout_group (MetaBackend *backend);
|
|
|
|
gboolean meta_backend_is_lid_closed (MetaBackend *backend);
|
|
|
|
MetaPointerConstraint * meta_backend_get_client_pointer_constraint (MetaBackend *backend);
|
|
void meta_backend_set_client_pointer_constraint (MetaBackend *backend,
|
|
MetaPointerConstraint *constraint);
|
|
|
|
void meta_backend_monitors_changed (MetaBackend *backend);
|
|
|
|
META_EXPORT_TEST
|
|
gboolean meta_is_stage_views_enabled (void);
|
|
|
|
gboolean meta_is_stage_views_scaled (void);
|
|
|
|
MetaInputMapper *meta_backend_get_input_mapper (MetaBackend *backend);
|
|
MetaInputSettings *meta_backend_get_input_settings (MetaBackend *backend);
|
|
|
|
void meta_backend_notify_keymap_changed (MetaBackend *backend);
|
|
|
|
void meta_backend_notify_keymap_layout_group_changed (MetaBackend *backend,
|
|
unsigned int locked_group);
|
|
|
|
void meta_backend_notify_ui_scaling_factor_changed (MetaBackend *backend);
|
|
|
|
META_EXPORT_TEST
|
|
void meta_backend_add_gpu (MetaBackend *backend,
|
|
MetaGpu *gpu);
|
|
|
|
META_EXPORT_TEST
|
|
GList * meta_backend_get_gpus (MetaBackend *backend);
|
|
|
|
#ifdef HAVE_LIBWACOM
|
|
WacomDeviceDatabase * meta_backend_get_wacom_database (MetaBackend *backend);
|
|
#endif
|
|
|
|
void meta_backend_add_hw_cursor_inhibitor (MetaBackend *backend,
|
|
MetaHwCursorInhibitor *inhibitor);
|
|
|
|
void meta_backend_remove_hw_cursor_inhibitor (MetaBackend *backend,
|
|
MetaHwCursorInhibitor *inhibitor);
|
|
|
|
gboolean meta_backend_is_hw_cursors_inhibited (MetaBackend *backend);
|
|
|
|
void meta_backend_update_from_event (MetaBackend *backend,
|
|
ClutterEvent *event);
|
|
|
|
#endif /* META_BACKEND_PRIVATE_H */
|