mirror of
https://gitlab.freedesktop.org/libinput/libei.git
synced 2026-02-19 06:30:46 +01:00
test: set up libreis support in eierpecken
The basic set of functions and macros to have access to a libreis context for our to-be-client. Since we connect the ei context to a backend during peck_new(), we need a new function for the case where we do want to have libreis in the mix.
This commit is contained in:
parent
223d65858d
commit
b4efd0fa5f
3 changed files with 56 additions and 5 deletions
|
|
@ -280,7 +280,7 @@ if get_option('tests')
|
|||
'test/eierpecken.h',
|
||||
'test/eierpecken.c',
|
||||
include_directories: 'src',
|
||||
dependencies: [munit, dep_libutil, dep_libei, dep_libeis],
|
||||
dependencies: [munit, dep_libutil, dep_libei, dep_libeis, dep_libreis],
|
||||
)
|
||||
|
||||
test('eierpecken',
|
||||
|
|
|
|||
|
|
@ -48,9 +48,11 @@ struct peck {
|
|||
struct object object;
|
||||
struct ei *ei;
|
||||
struct eis *eis;
|
||||
struct reis *reis;
|
||||
uint32_t eis_behavior;
|
||||
uint32_t ei_behavior;
|
||||
struct logger *logger;
|
||||
int ei_socket_fd;
|
||||
|
||||
/* The default seat/devices */
|
||||
struct eis_seat *eis_seat;
|
||||
|
|
@ -118,6 +120,7 @@ peck_destroy(struct peck *peck)
|
|||
|
||||
ei_unref(peck->ei);
|
||||
eis_unref(peck->eis);
|
||||
reis_unref(peck->reis);
|
||||
logger_unref(peck->logger);
|
||||
}
|
||||
|
||||
|
|
@ -126,6 +129,7 @@ OBJECT_IMPLEMENT_CREATE(peck);
|
|||
OBJECT_IMPLEMENT_UNREF(peck);
|
||||
OBJECT_IMPLEMENT_GETTER(peck, ei, struct ei*);
|
||||
OBJECT_IMPLEMENT_GETTER(peck, eis, struct eis*);
|
||||
OBJECT_IMPLEMENT_GETTER(peck, reis, struct reis*);
|
||||
|
||||
void
|
||||
peck_drop_ei(struct peck *peck)
|
||||
|
|
@ -344,8 +348,8 @@ peck_log_handler(struct logger *logger,
|
|||
fprintf(stderr, "%s", ansi_colorcode[RESET]);
|
||||
}
|
||||
|
||||
struct peck *
|
||||
peck_new_context(enum peck_ei_mode ei_mode)
|
||||
static struct peck *
|
||||
new_context(enum peck_ei_mode ei_mode, bool with_reis)
|
||||
{
|
||||
struct peck *peck = peck_create(NULL);
|
||||
|
||||
|
|
@ -369,14 +373,27 @@ peck_new_context(enum peck_ei_mode ei_mode)
|
|||
ei_log_set_handler(ei, peck_ei_log_handler);
|
||||
ei_log_set_priority(ei, EI_LOG_PRIORITY_DEBUG);
|
||||
ei_configure_name(ei, "eierpecken test context");
|
||||
rc = ei_setup_backend_fd(ei, fd);
|
||||
munit_assert_int(rc, ==, 0);
|
||||
/* Setting up a backend sends out the CONNECT event - if
|
||||
we want libreis do so something beforehand we need to
|
||||
keep the fd and set up the backend later */
|
||||
if (!with_reis) {
|
||||
rc = ei_setup_backend_fd(ei, fd);
|
||||
munit_assert_int(rc, ==, 0);
|
||||
peck->ei_socket_fd = -1;
|
||||
} else {
|
||||
peck->ei_socket_fd = fd;
|
||||
}
|
||||
peck->ei = ei;
|
||||
peck_enable_ei_behavior(peck, PECK_EI_BEHAVIOR_HANDLE_CONNECT);
|
||||
peck_enable_ei_behavior(peck, PECK_EI_BEHAVIOR_AUTOSEAT);
|
||||
peck_enable_ei_behavior(peck, PECK_EI_BEHAVIOR_AUTOSTART);
|
||||
peck_enable_ei_behavior(peck, PECK_EI_BEHAVIOR_HANDLE_FRAME);
|
||||
|
||||
if (with_reis) {
|
||||
struct reis *reis = reis_new(fd);
|
||||
peck->reis = reis;
|
||||
}
|
||||
|
||||
peck->logger = logger_new("peck", peck);
|
||||
logger_set_handler(peck->logger, peck_log_handler);
|
||||
logger_set_priority(peck->logger, LOGGER_DEBUG);
|
||||
|
|
@ -384,12 +401,35 @@ peck_new_context(enum peck_ei_mode ei_mode)
|
|||
return peck;
|
||||
}
|
||||
|
||||
struct peck *
|
||||
peck_new_context(enum peck_ei_mode ei_mode)
|
||||
{
|
||||
return new_context(ei_mode, false);
|
||||
}
|
||||
|
||||
struct peck *
|
||||
peck_new(void)
|
||||
{
|
||||
return peck_new_context(PECK_EI_SENDER);
|
||||
}
|
||||
|
||||
struct peck *
|
||||
peck_new_context_with_reis(enum peck_ei_mode ei_mode)
|
||||
{
|
||||
return new_context(ei_mode, true);
|
||||
}
|
||||
|
||||
void
|
||||
peck_ei_connect(struct peck *peck)
|
||||
{
|
||||
assert(peck->ei_socket_fd != -1);
|
||||
|
||||
struct ei *ei = peck->ei;
|
||||
int rc = ei_setup_backend_fd(ei, peck->ei_socket_fd);
|
||||
munit_assert_int(rc, ==, 0);
|
||||
peck->ei_socket_fd = -1;
|
||||
}
|
||||
|
||||
void
|
||||
peck_enable_eis_behavior(struct peck *peck, enum peck_eis_behavior behavior)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
#include "libei.h"
|
||||
#include "libeis.h"
|
||||
#include "libreis.h"
|
||||
|
||||
#include "util-mem.h"
|
||||
|
||||
|
|
@ -143,6 +144,12 @@ peck_new(void);
|
|||
struct peck *
|
||||
peck_new_context(enum peck_ei_mode ei_mode);
|
||||
|
||||
struct peck *
|
||||
peck_new_context_with_reis(enum peck_ei_mode ei_mode);
|
||||
|
||||
void
|
||||
peck_ei_connect(struct peck *peck);
|
||||
|
||||
void _peck_mark(struct peck *peck, const char *func, int line);
|
||||
/** Add debug marker to the log output */
|
||||
#define peck_mark(peck_) _peck_mark(peck_, __func__, __LINE__)
|
||||
|
|
@ -156,6 +163,9 @@ peck_enable_ei_behavior(struct peck *peck, enum peck_ei_behavior behavior);
|
|||
struct ei *
|
||||
peck_get_ei(struct peck *peck);
|
||||
|
||||
struct reis *
|
||||
peck_get_reis(struct peck *peck);
|
||||
|
||||
void
|
||||
peck_drop_ei(struct peck *peck);
|
||||
|
||||
|
|
@ -331,6 +341,7 @@ DEFINE_UNREF_CLEANUP_FUNC(eis_region);
|
|||
of a test handles server vs client */
|
||||
#define with_server(peck_) for (struct eis *eis = peck_get_eis(peck_); eis; eis = NULL)
|
||||
#define with_client(peck_) for (struct ei *ei = peck_get_ei(peck_); ei; ei = NULL)
|
||||
#define with_reis(peck_) for (struct reis *reis = peck_get_reis(peck_); reis; reis = NULL)
|
||||
#define with_emulation(d_) for (bool _loop = ({ ei_device_start_emulating(d_); true;});\
|
||||
_loop; \
|
||||
({ ei_device_stop_emulating(d_); _loop = false; }))
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue