-
Simon McVittie authored
Signed-off-by:
Simon McVittie <smcv@collabora.com>
Simon McVittie authoredSigned-off-by:
Simon McVittie <smcv@collabora.com>
mock-input-device.h 3.87 KiB
/*
* Mock input device monitor, loosely based on SDL code.
*
* Copyright © 1997-2020 Sam Lantinga <slouken@libsdl.org>
* Copyright © 2020 Collabora Ltd.
*
* SPDX-License-Identifier: Zlib
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
#pragma once
#include <linux/input.h>
#include <glib-unix.h>
#include <libglnx.h>
#include "steam-runtime-tools/glib-backports-internal.h"
#include "steam-runtime-tools/input-device.h"
#include "steam-runtime-tools/input-device-internal.h"
#include "steam-runtime-tools/simple-input-device-internal.h"
typedef struct _MockInputDevice MockInputDevice;
typedef struct _MockInputDeviceClass MockInputDeviceClass;
GType mock_input_device_get_type (void);
#define MOCK_TYPE_INPUT_DEVICE (mock_input_device_get_type ())
#define MOCK_INPUT_DEVICE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MOCK_TYPE_INPUT_DEVICE, MockInputDevice))
#define MOCK_IS_INPUT_DEVICE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MOCK_TYPE_INPUT_DEVICE))
#define MOCK_INPUT_DEVICE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), MOCK_TYPE_INPUT_DEVICE, MockInputDeviceClass))
#define MOCK_INPUT_DEVICE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), MOCK_TYPE_INPUT_DEVICE, MockInputDeviceClass))
#define MOCK_IS_INPUT_DEVICE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), MOCK_TYPE_INPUT_DEVICE))
struct _MockInputDevice
{
SrtSimpleInputDevice parent;
};
struct _MockInputDeviceClass
{
SrtSimpleInputDeviceClass parent;
};
MockInputDevice *mock_input_device_new (void);
typedef struct _MockInputDeviceMonitor MockInputDeviceMonitor;
typedef struct _MockInputDeviceMonitorClass MockInputDeviceMonitorClass;
GType mock_input_device_monitor_get_type (void);
#define MOCK_TYPE_INPUT_DEVICE_MONITOR (mock_input_device_monitor_get_type ())
#define MOCK_INPUT_DEVICE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), MOCK_TYPE_INPUT_DEVICE_MONITOR, MockInputDeviceMonitor))
#define MOCK_IS_INPUT_DEVICE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MOCK_TYPE_INPUT_DEVICE_MONITOR))
#define MOCK_INPUT_DEVICE_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), MOCK_TYPE_INPUT_DEVICE_MONITOR, MockInputDeviceMonitorClass))
#define MOCK_INPUT_DEVICE_MONITOR_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), MOCK_TYPE_INPUT_DEVICE_MONITOR, MockInputDeviceMonitorClass))
#define MOCK_IS_INPUT_DEVICE_MONITOR_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), MOCK_TYPE_INPUT_DEVICE_MONITOR))
struct _MockInputDeviceMonitor
{
GObject parent;
GMainContext *monitor_context;
GHashTable *devices;
GList *sources;
SrtInputDeviceMonitorFlags flags;
enum
{
NOT_STARTED = 0,
STARTED,
STOPPED
} state;
};
struct _MockInputDeviceMonitorClass
{
GObjectClass parent;
};
MockInputDeviceMonitor *mock_input_device_monitor_new (SrtInputDeviceMonitorFlags flags);
void mock_input_device_monitor_add (MockInputDeviceMonitor *self,
MockInputDevice *device);
void mock_input_device_monitor_remove (MockInputDeviceMonitor *self,
MockInputDevice *device);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MockInputDevice, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MockInputDeviceMonitor, g_object_unref)