mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-24 19:20:05 +01:00
quirks: use __attribute__(cleanup)
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1184>
This commit is contained in:
parent
0ecd08c134
commit
fbc8eb8cb7
3 changed files with 287 additions and 414 deletions
20
src/quirks.c
20
src/quirks.c
|
|
@ -1147,7 +1147,7 @@ quirks_init_subsystem(const char *data_path,
|
|||
struct libinput *libinput,
|
||||
enum quirks_log_type log_type)
|
||||
{
|
||||
struct quirks_context *ctx = zalloc(sizeof *ctx);
|
||||
_unref_(quirks_context) *ctx = zalloc(sizeof *ctx);
|
||||
|
||||
assert(data_path);
|
||||
|
||||
|
|
@ -1163,19 +1163,15 @@ quirks_init_subsystem(const char *data_path,
|
|||
ctx->dmi = init_dmi();
|
||||
ctx->dt = init_dt();
|
||||
if (!ctx->dmi && !ctx->dt)
|
||||
goto error;
|
||||
return NULL;
|
||||
|
||||
if (!parse_files(ctx, data_path))
|
||||
goto error;
|
||||
return NULL;
|
||||
|
||||
if (override_file && !parse_file(ctx, override_file))
|
||||
goto error;
|
||||
return NULL;
|
||||
|
||||
return ctx;
|
||||
|
||||
error:
|
||||
quirks_context_unref(ctx);
|
||||
return NULL;
|
||||
return steal(&ctx);
|
||||
}
|
||||
|
||||
struct quirks_context *
|
||||
|
|
@ -1613,7 +1609,6 @@ struct quirks *
|
|||
quirks_fetch_for_device(struct quirks_context *ctx,
|
||||
struct udev_device *udev_device)
|
||||
{
|
||||
struct quirks *q = NULL;
|
||||
struct section *s;
|
||||
struct match *m;
|
||||
|
||||
|
|
@ -1623,7 +1618,7 @@ quirks_fetch_for_device(struct quirks_context *ctx,
|
|||
qlog_debug(ctx, "%s: fetching quirks\n",
|
||||
udev_device_get_devnode(udev_device));
|
||||
|
||||
q = quirks_new();
|
||||
_unref_(quirks) *q = quirks_new();
|
||||
|
||||
m = match_new(udev_device, ctx->dmi, ctx->dt);
|
||||
|
||||
|
|
@ -1634,13 +1629,12 @@ quirks_fetch_for_device(struct quirks_context *ctx,
|
|||
match_free(m);
|
||||
|
||||
if (q->nproperties == 0) {
|
||||
quirks_unref(q);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
list_insert(&ctx->quirks, &q->link);
|
||||
|
||||
return q;
|
||||
return steal(&q);
|
||||
}
|
||||
|
||||
static inline struct property *
|
||||
|
|
|
|||
|
|
@ -204,6 +204,8 @@ quirks_fetch_for_device(struct quirks_context *ctx,
|
|||
struct quirks *
|
||||
quirks_unref(struct quirks *q);
|
||||
|
||||
DEFINE_UNREF_CLEANUP_FUNC(quirks);
|
||||
|
||||
/**
|
||||
* Returns true if the given quirk applies is in this quirk list.
|
||||
*/
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue