diff options
-rw-r--r-- | include/xkbcommon/xkbcommon.h | 8 | ||||
-rw-r--r-- | src/alloc.c | 3 | ||||
-rw-r--r-- | src/context.c | 3 | ||||
-rw-r--r-- | src/state.c | 10 | ||||
-rw-r--r-- | src/xkbcomp/xkbcomp.c | 3 |
5 files changed, 17 insertions, 10 deletions
diff --git a/include/xkbcommon/xkbcommon.h b/include/xkbcommon/xkbcommon.h index 45e98e4..1391437 100644 --- a/include/xkbcommon/xkbcommon.h +++ b/include/xkbcommon/xkbcommon.h @@ -247,7 +247,7 @@ xkb_context_include_path_get(struct xkb_context *context, unsigned int index); /** * Takes a new reference on an XKB context. */ -_X_EXPORT void +_X_EXPORT struct xkb_context * xkb_context_ref(struct xkb_context *context); /** @@ -315,7 +315,7 @@ xkb_map_new_from_string(struct xkb_context *context, /** * Takes a new reference on a keymap. */ -_X_EXPORT extern void +_X_EXPORT extern struct xkb_keymap * xkb_map_ref(struct xkb_keymap *xkb); /** @@ -412,9 +412,9 @@ _X_EXPORT struct xkb_state * xkb_state_new(struct xkb_keymap *xkb); /** - * Adds a reference to a state object, so it will not be freed until unref. + * Takes a new reference on a state object. */ -_X_EXPORT void +_X_EXPORT struct xkb_state * xkb_state_ref(struct xkb_state *state); /** diff --git a/src/alloc.c b/src/alloc.c index 52d7af2..a2a1330 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -266,8 +266,7 @@ XkbcAllocKeyboard(struct xkb_context *context) return NULL; xkb->refcnt = 1; - xkb_context_ref(context); - xkb->context = context; + xkb->context = xkb_context_ref(context); return xkb; } diff --git a/src/context.c b/src/context.c index cbad424..a2c8f56 100644 --- a/src/context.c +++ b/src/context.c @@ -158,10 +158,11 @@ xkb_context_include_path_get(struct xkb_context *context, unsigned int idx) /** * Take a new reference on the context. */ -void +struct xkb_context * xkb_context_ref(struct xkb_context *context) { context->refcnt++; + return context; } /** diff --git a/src/state.c b/src/state.c index 6a9505d..a9f748e 100644 --- a/src/state.c +++ b/src/state.c @@ -472,12 +472,18 @@ xkb_state_new(struct xkb_keymap *xkb) return NULL; ret->refcnt = 1; - ret->xkb = xkb; - xkb_map_ref(xkb); + ret->xkb = xkb_map_ref(xkb); return ret; } +struct xkb_state * +xkb_state_ref(struct xkb_state *state) +{ + state->refcnt++; + return state; +} + void xkb_state_unref(struct xkb_state *state) { diff --git a/src/xkbcomp/xkbcomp.c b/src/xkbcomp/xkbcomp.c index 9534232..7ff22e1 100644 --- a/src/xkbcomp/xkbcomp.c +++ b/src/xkbcomp/xkbcomp.c @@ -312,10 +312,11 @@ xkb_map_new_from_fd(struct xkb_context *context, return compile_keymap(context, file); } -void +struct xkb_keymap * xkb_map_ref(struct xkb_keymap *xkb) { xkb->refcnt++; + return xkb; } void |